{"version":3,"sources":["../hukde-tr-commons/src/lib/data/abstract-kfz-data.service.ts","../hukde-tr-commons/src/lib/directives/check-not-selected-both-validation.directive.ts","../hukde-tr-commons/src/lib/directives/forbid-huk-select-option-validation.directive.ts","../hukde-tr-commons/src/lib/directives/kilometers-first-registration-validation.directive.ts","../hukde-tr-commons/src/lib/directives/require-one-validation.directive.ts","../hukde-tr-commons/src/lib/directives/vehicle-result-validation.directive.ts","../hukde-tr-commons/src/lib/personal-data/personal-data.ts","../hukde-tr-commons/src/lib/personal-data/zm-personal-data.component.html","../hukde-tr-commons/src/lib/personal-data/zm-personal-data.component.ts","../hukde-tr-commons/src/lib/personal-data/personal-data.component.html","../hukde-tr-commons/src/lib/personal-data/personal-data.component.ts","../hukde-tr-commons/src/lib/prior-insurance/prior-insurance.ts","../hukde-tr-commons/src/lib/prior-insurance/prior-insurance-hukde-options.service.ts","../hukde-tr-commons/src/lib/public-job/public-job.ts","../hukde-tr-commons/src/lib/public-job/public-job.component.html","../hukde-tr-commons/src/lib/public-job/public-job.component.ts","../hukde-tr-commons/src/lib/seasonal-time/seasonal-time.component.ts","../hukde-tr-commons/src/lib/seasonal-time/seasonal-time.component.html","../hukde-tr-commons/src/lib/summary/abstract-summary.directive.ts","../hukde-tr-commons/src/lib/summary/abstract-summary.service.ts","../hukde-tr-commons/src/lib/tariff/tariff.ts","../hukde-tr-commons/src/lib/tracking/abstract-tracking-mapping.service.ts","../hukde-tr-commons/src/lib/vehicle/abstract-vehicle.service.ts","../hukde-tr-commons/src/lib/vehicle/vehicle.ts","../hukde-tr-commons/src/lib/vehicle/vehicle-search.service.ts","../hukde-tr-commons/src/lib/vehicle/vehicle-search-certificate.component.ts","../hukde-tr-commons/src/lib/vehicle/vehicle-search-certificate.component.html","../hukde-tr-commons/src/lib/commons-kfz.module.ts","./src/environments/environment.ts","./src/app/model/vehicle.ts","./src/app/service/vehicle-genius-search.service.ts","./src/app/1-vehicle/vehicle-genius-search.component.html","./src/app/1-vehicle/vehicle-genius-search.component.ts","./src/app/service/vehicle-type.service.ts","./src/app/model/offer.ts","./src/app/service/data.service.ts","./src/version.ts","./src/app/service/tariff-data.service.ts","./src/app/service/cross-field.service.ts","./src/app/service/tracking-mapping.service.ts","./src/app/1-vehicle/vehicle.component.html","./src/app/1-vehicle/vehicle.component.ts","./src/app/2-details/youngest-driver.component.html","./src/app/2-details/youngest-driver.component.ts","./src/app/2-details/min-age.component.html","./src/app/2-details/min-age.component.ts","./src/app/2-details/sf-selection.component.html","./src/app/2-details/sf-selection.component.ts","./src/app/2-details/details.component.html","./src/app/2-details/details.component.ts","./src/app/service/tariff-mapping.service.ts","../hukde-tr-commons/src/lib/utils/utils.ts","./src/app/3-offer/tariff.service.ts","./src/app/3-offer/offer-details.component.html","./src/app/3-offer/offer-details.component.ts","./src/app/service/mandatory-pdf.service.ts","./src/app/3-offer/offer.component.html","./src/app/3-offer/offer.component.ts","./src/app/5-further-details/further-details-next-button.component.ts","./src/app/5-further-details/further-details-next-button.component.html","./src/app/5-further-details/further-details.component.html","./src/app/5-further-details/further-details.component.ts","./src/app/6-summary/summary.component.html","./src/app/6-summary/summary.component.ts","./src/app/6-summary/summary.service.ts","./src/app/7-receipt/receipt.component.html","./src/app/7-receipt/receipt.component.ts","./src/app/routes.ts","./src/app/app.module.ts","./src/app/main.ts","./$_lazy_route_resource lazy namespace object"],"names":["setPersonalDataOfCustomer","personalData","vnAnrede","this","isInsuranceHolderNaturalPerson","_setInsuranceHolderNaturalPerson","Company","checkValue","undefined","validate","c","value","bothSelected","CheckNotBothSelectedValidationDirective","provide","useExisting","multi","active","all","label","_huk","_huk24","substring","forbiddenAll","forbiddenHuk24","forbidden","ForbidHukSelectOptionValidationDirective","firstRegisDate","_currentDate","Date","_currentDateMinus2Years","setFullYear","getFullYear","_currentDateMinus2Months","setMonth","getMonth","kilometers","tooManyForNew","tooLess","tooManyForMonth","KilometersFirstRegistrationValidationDirective","useValue","controls","keys","Object","length","filled","required","RequireOneValidationDirective","vehicleServiceErrors","VehicleResultDirective","DEFAULT_PERSONAL_DATA_OBJECT","hasTitle","title","salutation","firstName","name","streetNumber","deliverNote","location","zip","city","mail","mail1","birthDate","phoneNumber","NATURAL_PERSON_OPTIONS","DEFAULT_LABELS","lastName","mail2","address","phone","birthDateStart","birthDateEnd","yesNoOptions","salutationOptions","Woman","Man","showMail","showPhone","showBirthDate","showSalutation","showTitle","isNaturalPerson","isCompanyAvailable","companyDisallowedValue","companyDisallowedError","isDisabled","inputLabels","zipCity","valueChange","zipCityUpdate","_tempZipCity","_zipCheck","_initialized","v","ngOnInit","push","ngOnChanges","changes","currentValue","emit","ngAfterViewChecked","zipCityModel","control","merge","statusChanges","of","pipe","filter","data","subscribe","_checkZipDifference","_isSalutationCompanySelected","setSalutation","setHasTitle","setTitle","setFirstName","setLastName","setBirthDate","setStreetNumber","setDeliverNote","setMail","setMail1","setPhoneNumber","setLocation","found","closeModal","useCustomerValue","modal","close","isOpen","open","ZmPersonalDataComponent","PriorInsuranceCompany","isAlreadyCustomerVisible","isParentVisible","labels","setParentPersonalData","parentPersonalData","PersonalDataComponent","Huk","Huk24","Other","PartnerContractKind","PRIOR_INSURANCE_COMPANY_OPTIONS","INSURANCE_HOLDER_SELF_OPTIONS","SELF_CANCELLED_OPTIONS","PARTNER_CONTRACT_OPTIONS","None","_http","config","_options","_url","serviceOrigin","initData","Promise","resolve","reject","_loadOptionsFromServer","err","getOptions","cb","get","map","options","_rawOptions","id","nr","index","entry","e","getVuNrByName","find","option","PriorInsuranceHukdeOptionsService","PROVIDE_PRIOR_INSURANCE_HUKDE_OPTIONS_SERVICE","useFactory","service","deps","DEFAULT_PUBLIC_JOB_OBJECT","oedNoed","official","engineer","disabled","oedNoedOptions","officialOptions","engineerOptions","setOedNoed","setOfficial","setEngineer","PublicJobComponent","VehicleLicensePlateType","VEHICLE_LICENSE_PLATE_TYPE_OPTIONS","Normal","Seasonal","startDate","seasonalOptions","seasonalOptionsEnd","_onValidatorChange","seasonalStart","seasonalEnd","start","end","insuranceStart","invalid","validateSeasonalTime","registerOnValidatorChange","fn","writeValue","_updateEndOptions","updateSeasonalStart","updateSeasonalEnd","concat","SeasonalTimeComponent","injector","amount","avbColor","avbClicked","avbLoading","agreed","summaryDisabled","documentsText","hasSepa","hasSolvencyInformation","_summaryService","_router","_disableStepService","_cd","summaryDataService","disable","showSummaryPdf","showOrderSummaryFile","showSepaPdf","showSepaFile","downloadAvb","showAvbFile","markForCheck","beforeNextStep","order","onNextStep","navigate","updateAgreed","AbstractSummaryDirective","_continueOnCreditError","_handleCreditError","mapErziehungsberechtigter","person","isCompany","salutationId","titel","mapDefaultPerson","mapAddress","mapVerbleib","typ","buyer","buyDate","verbleib","kaeufer","verkaufDatum","street","deliveryNote","postalCode","mapDataGeschaeft","_startDate","geschaeft","_ermittleGeschaeft","nextyear","result","AbstractTrackingMappingService","DEFAULT_CERTIFICATE","mkn","tkn","DEFAULT_VEHICLE_RESULT","brand","certificate","wert","_baseUrl","product","_mapData","producerNumber","typeNumber","_handleError","error","status","throwError","_escapeUrl","strings","values","i","encodeURIComponent","AbstractVehicleService","VehicleOwner","OWNER_OPTIONS","Me","Spouse","LifePartner","Child","VehiclePowerUnit","POWER_UNIT_OPTIONS","Kw","Ps","OldVehicle","OldVehicleSale","OLD_VEHICLE_OPTIONS","WillBeSold","Sold","ShutDown","Keep","OLD_VEHICLE_SALE_OPTIONS","Private","Commercial","Location","PARKING_OPTIONS","Garage","CarPark","Carport","Property","PROPERTY_OPTIONS","House","Apartment","http","errors","search","res","catchError","VehicleSearchService","vehicleService","certificateChange","resultChange","image","previewImage","notFoundError","equalError","expensiveCarError","group","loading","_initCall","searchVehicle","setMkn","_resetSearch","setTkn","valid","_updateResult","VehicleSearchCertificateComponent","forRoot","ngModule","CommonsKfzModule","environment","category","pageTitle","avatar","DEFAULT_VEHICLE_SPECIFICATION_OBJECT","manufacturer","model","capacity","power","_maxResults","_searchData","clearSearchData","what","hasOwnProperty","_mapAndCacheData","response","searchGenius","spec","params","realWhat","baseUrl","append","searchVehicles","toString","vehicles","foundMore","numberOfFoundResults","VehicleGeniusSearchService","_vehicleService","specification","specificationChange","_searchResultData","vehicle","vehicleLabel","_loading","_search","_searchVehicles","done","updateManufacturer","_resetVehicles","_resetPowerCapacity","updateCapacity","updateModel","updatePower","updateVehicle","selection","VehicleGeniusSearchComponent","hersteller","type","ccm","wkz","kw","leistungs","KW","ps","PS","VehicleTypeClassService","LiabilityInsurance","CoverInsurance","DEFAULT_OFFER","paymentInterval","liability","cover","fullCoverSb","semiCoverSb","foreignProtection","typeClass","customPower","customPowerValue","customPowerValueUnit","financing","alreadyInsured","licensePlate","ownerLocation","owner","details","naturalPerson","birthdate","publicJob","parking","homeOwnership","property","propertyInsurance","additionalDrivers","drivers","spouse","lifePartner","children","others","accompaniedDriving","sdp","sdpParticipation","sdpScore","priorInsurance","entitledPerson","sf","newZwn","hukZwnKrad","driversLicenseDate","minAge","all25","youngestDriver","age","vmAgreement","offer","furtherDetails","firstRegistrationDate","worth","identificationNumber","akz","priorInsuranceCompany","oldVehicle","oldVehicleSale","oldVehicleSaleDate","priorInsuranceVnr","otherCompany","otherCompanyName","otherCompanyVnr","selfCancelled","personalDataKfz","payment","getPersonalData","_setPersonalData","getInsuranceStartDate","_setInsuranceStartDate","getInsuranceHolderBirthDate","_setInsuranceHolderBirthDate","getVersion","DataService","creditFailed","TariffDataService","_dataService","_tariffDataService","isOldTariff","isFirstRegistrationAvailable","isFirstRegistrationDateAvailable","isSeasonalRangeAvailable","isBirthdateAvailable","isOwnerSelfOrPartner","isPropertyAvailable","isPropertyInsuranceAvailable","isDriversAvailable","_hasReached2411","isMinAgedDriversAvailable","isYoungestDriverAvailable","naturalTooYoung","isYoungestDriverAgeAvailable","_areAllYoungestDrivers2211","ageAvailable","_isYoungestDriver2211","getDate","isPriorInsuranceAvailable","isSfAvailable","isNewZwnAvailable","isBikeQuadTrike","newZwnEpAvailable","isCreditWorthy","isForeignProtectionAvailable","isPaymentAvailable","isOldVehicle","isOldVehicleAvailable","isOldVehicleSaleAvailable","isPriorInsuranceCompanyAvailable","isPriorInsuranceVnrAvailable","isPartnerInsuranceVnrAvailable","isOtherCompanyAvailable","isPriorInsuranceCompanyOtherSelected","isSelfCancelledAvailable","isLicensePlatePriorVehicleAvailable","isContractCancellationAvailable","isParentPersonalDataAvailable","vnGebdat","isKaskoSelected","isSepa","zahlArt","isInsuredAtHuk24","isInsuredAtHuk","isNotInsuredPriorInsuranceAtHuk","prior","isNotInsuredPriorInsuranceAtHuk24","isNotInsuredPriorInsuranceAtOther","isNeuzulassung","getUTCMonth","getUTCFullYear","isUmschreibung","CrossFieldService","AG11","AG12","AG39","AG49","AG1249","_crossFieldService","mapDataVorgang","ag","_ermittleAg","vorgang","_ermittleAntragsArt","zulassung","_ermittleZulassung","agResult","TrackingMappingService","_trackingService","_trackingMappingService","_vehicleTypeService","powerUnitOptions","licensePlateTypeOptions","ownerOptions","insuranceDateErrorMessages","invalidDate","rangeStart","rangeEnd","minCustomerPowerValue","minCustomerPowerValueError","maxCustomerPowerValue","maxCustomerPowerValueError","isSeasonalLicensePlate","isCustomPowerUnitKw","insuranceDateRangeStart","insuranceDateRangeEnd","_isSeasonalLicensePlate","_updateMaxCustomerPowerValue","setSearchType","setSearchResult","_searchTypeClass","_setTypeClass","setCertificate","updateSpecification","updateCustomPower","updateCustomPowerValue","updateCustomPowerValueUnit","updateAlreadyInsured","updateOwner","updateInsuranceStartDate","trackGeschaeft","updateOwnerLocation","updateLicensePlateType","seasonal","updateLicensePlate","prepareTrackingOrderWithoutSendOutside","VehicleComponent","second","showAge","vnBirthdate","visible","headline","prefix","maxDate","minDate","ageMismatchMsgid","minDateMsgid","maxAge","maxAgeMsgid","d","setAge","setBirthdate","getAge","YoungestDriverComponent","showYoungestOnly","setAll25","setYoungestDriver","MinAgeComponent","$event","LIABILITY_OPTIONS_FOR_BIKE_TRIKE_QUAD","LIABILITY_OPTIONS_FOR_OTHER","crossFieldService","transfer","dateString","limit","coverTitle","liabilityTitle","liabilityOptions","coverOptions","slice","set","prop","SfSelectionComponent","_disableService","vehicleBrand","minBirthdate","isPropertyInsuranceVisible","naturalPersonOptions","parkingOptions","propertyOptions","newZwnOptions","hukZwnKradOptions","maxBirthdate","_isPropertyInsuranceVisible","setNaturalPerson","setPublicJob","setKilometers","setParking","setHomeOwnership","setProperty","setPropertyInsurance","setAdditionalDrivers","isVn2411","setDrivers","setPriorInsurance","setSf","setNewZwn","setHukZwnKrad","setMinAge","setVmAgreement","DetailsComponent","_customerService","_consentService","_priorInsuranceService","_mapPreinsurance","contractNumber","preInsurance","preVnrHuk","preVnrHuk24","preVnrVu","preInsuranceCompanyNumber","preInsuranceName","replace","terminationMember","preKennzeichen","mapDataForClaim","base","mapData","customer","persData","consent","hasHukContract","hukContract","mapCustomer","hasPreinsurance","fahrzeug","kennzeichen","kmStand","erstZulassung","fin","sfKlasse","rabatt","vnr","vorversicherung","iban","bankIban","bic","bankBic","erziehungsberechtigter","boniChecked","begin","dateOfBirth","geschlecht","zahlweise","produktlinie","haftpflicht","kasko","_mapKasko","_mapSfKlasse","eigentum","_mapEigentum","_mapFahrzeug","optionen","auslandsschutz","berufGruppe","klasseHaftpflicht","klasseKasko","vorversichert","neueZwn","art","versichert","vollkaskoAuswahl","Full","teilkaskoAuswahl","Semi","teilkaskoSelbstbeteiligung","vollkaskoSelbstbeteiligung","abwLeistung","hsn","tsn","halter","halterAddress","jaehrlFahrleistung","stellplatz","saisonKz","beginn","ende","fahrertypes","_mapFahrer","fahrers","_mapYoungestDrivers","alter","TariffMappingService","_tariffMapping","TariffService","HEADLINE_VOLLKASKO","HEADLINE_TEILKASKO","HEADLINE_AUSLAND_SCHADENSCHUTZ","_helpcenterService","tariffService","_controlContainer","_logger","tariff","selectedProducts","_tariffSubscription","Subscription","EMPTY","_tariffResultSubscription","_tariffErrorSubscription","fullCoverSbOptions","semiCoverSbOptions","setCover","valueChanges","_updateSelectedProducts","onError","_addAvatarMessage","ngOnDestroy","unsubscribe","setLiability","setFullCoverSb","setSemiCoverSb","setForeignProtection","removeProduct","products","WithProtection","price","beitragHaftpflichtMitSchutzbrief","NoProtection","beitragHaftpflichtOhneSchutzbrief","beitragVollkasko","removable","beitragTeilkasko","beitragAuslandsschutz","addMessage","OfferDetailsComponent","_pathService","extractPath","MandatoryPdfService","_tariffService","mandatoryPdfService","paymentOptions","tocLink","bedingungen","infoLink","produktInformationsBlatt","updateOffer","setPaymentInterval","showPdf","OfferComponent","BEFORE_NEXT_STEP","ON_NEXT_STEP","_mainComponent","form","_el","_scrollService","_stepChangeService","_beforeNextStep","_onNextStep","text","autoScroll","size","color","zustimmung","hasStepRecentlyChanged","debounceTime","scrollToButton","scrollToElement","nativeElement","next","navigateByUrl","changeConsent","_beforeNext","then","_onNext","advanceToNextStep","FurtherDetailsNextButtonComponent","insuranceOptionsService","priorInsuranceCompanyHeadline","firstRegisDateStart","insuranceVnrTitle","insuranceVnrRangeErrorMessage","insuranceVnrRange","insuranceVnrExample","isVehicleSold","priorInsuranceCompanyOptions","oldVehicleOptions","oldVehicleSaleOptions","insuranceHolderSelfOptions","selfCancelledOptions","isAlreadyInsured","firstRegisDateEnd","otherInsuranceCompanyOptions","_isVehicleSold","oldVehicleSaleDateMax","setDate","isHolderMyself","isHolderMyselfOrPartner","driversLicenseDateMin","driversLicenseDateMax","_generateHeadline","_updateInsuranceVnrTitle","_updateInsuranceVnrRanges","addKilometersMessage","setWorth","setFirstRegistrationDate","setPriorInsuranceCompany","setPriorInsuranceVnr","setAkz","setIdentificationNumber","setOtherCompany","selectedOtherCompany","setOtherCompanyName","setOtherCompanyVnr","setSelfCancelled","setPersonalData","setPersonalDataKfz","setOldVehicle","setOldVehicleSale","setOldVehicleSaleDate","setPayment","onZipCityUpdate","isHuk","_generatePriorInsuranceSnippet","companyLabel","selectedOption","FurtherDetailsComponent","_vmService","vmgs","_vmDataSubscription","downloadConditionPdf","downloadProductPdf","downloadPrivacyPdf","infoDaten","downloadSustainabilityPdf","nachhaltigkeitsinformation","downloadEGPdf","elektronischerGeschaeftsverkehr","isVmContext","trackVorgang","getData","prepareTrackingOrder","SummaryComponent","_isJumpToOfferRequired","SummaryService","customerService","dataService","unlocked","isUnlocked","isCreditOk","hasEbox","showOrderPdf","ReceiptComponent","ROUTES","path","redirectTo","pathMatch","component","milestone","AngebotStart","insuranceHolder","AntragStart","isPersonalData","AppModule","useClass","preloadingStrategy","onSameUrlNavigation","bootstrapModule","webpackEmptyAsyncContext","req","Error","code","module","exports"],"mappings":"8QAEA,2B,+CAYA,OAZqD,iBAK5C,YAAAA,0BAAP,SAAiCC,GAC/B,YAAMD,0BAAyB,UAACC,GAEH,MAAzBA,EAAaC,UAA6D,MAAzCC,KAAKC,kCACxCD,KAAKE,iCAAiCJ,EAAaC,WAAa,KAAWI,UAGjF,EAZA,CAAqD,KCErD,yE,OAW2C,EAAAC,gBAAkCC,E,SADhB,iBAGpD,YAAAC,SAAP,SAAgBC,GACd,OAAmB,IAAZA,EAAEC,OAAkBR,KAAKI,aAAeG,EAAEC,MAAQ,CAAEC,cAAc,GAAS,M,oCAJzEC,I,uBAAAA,EAAuC,uIARvC,CACT,CACEC,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAF,KAC9BG,OAAO,KAEV,Q,EARH,CAU6D,K,OAAhD,GCTb,yE,OAWgC,EAAAC,QAAS,EACN,EAAAC,KAAM,EACb,EAAAC,MAAQ,GAEjB,EAAAC,KAAO,QACP,EAAAC,OAAS,Q,SANkC,iBAQrD,YAAAZ,SAAP,SACEC,GAMA,IAAKP,KAAKc,SAAWP,EAAEC,MACrB,OAAO,KAET,GAAKR,KAAKe,IAQR,OAAQf,KAAKgB,MAAMG,UAAU,EAAG,IAC9B,KAAKnB,KAAKkB,OACV,KAAKlB,KAAKiB,KACR,MAAO,CAAEG,cAAc,QAV3B,OAAQpB,KAAKgB,MAAMG,UAAU,EAAG,IAC9B,KAAKnB,KAAKkB,OACR,MAAO,CAAEG,gBAAgB,GAC3B,KAAKrB,KAAKiB,KACR,MAAO,CAAEK,WAAW,GAS1B,OAAO,M,oCAhCEC,I,uBAAAA,EAAwC,kKARxC,CACT,CACEZ,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAW,KAC9BV,OAAO,KAEV,Q,EARH,CAU8D,K,OAAjD,GCNb,cA0BE,mBACE,cAAO,K,OAPF,EAAAW,oBAAmCnB,EAElC,EAAAoB,aAAe,aAAU,aAAa,IAAIC,OAMhD,EAAKC,wBAA0B,IAAID,KAAK,EAAKD,cAC7C,EAAKE,wBAAwBC,YAAY,EAAKD,wBAAwBE,cAAgB,GACtF,EAAKC,yBAA2B,IAAIJ,KAAK,EAAKD,cAC9C,EAAKK,yBAAyBC,SAAS,EAAKD,yBAAyBE,WAAa,G,SAblB,iBAgB3D,YAAA1B,SAAP,SAAgBC,GACd,GAAIP,KAAKwB,gBAA6B,MAAXjB,EAAEC,MAAe,CAC1C,IAAMyB,GAAc1B,EAAEC,MAEtB,GAAIR,KAAKwB,eAAiBxB,KAAKyB,cAAgBQ,EAAa,EAC1D,MAAO,CAAEC,eAAe,GAE1B,GAAIlC,KAAKwB,eAAiBxB,KAAK2B,yBAA2BM,EAAa,EACrE,MAAO,CAAEE,SAAS,GAEpB,GAAInC,KAAKwB,eAAiBxB,KAAK8B,0BAA4BG,EAAa,GACtE,MAAO,CAAEG,iBAAiB,GAI9B,OAAO,M,sCA/BEC,I,uBAAAA,EAA8C,kHAhB9C,CACT,CACE1B,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAyB,KAC9BxB,OAAO,GAET,CACEF,QAAS,IACT2B,SAAU,CACRJ,cAAe,SACfC,QAAS,SACTC,gBAAiB,aAGtB,Q,EAhBH,CAkBoE,KClBpE,2B,OAWS,YAAA9B,SAAP,SAAgBC,G,QACRgC,EAAYhC,EAAgBgC,SAC5BC,EAAOC,OAAOD,KAAKD,GACzB,GAAoB,IAAhBC,EAAKE,OACP,OAAO,KAET,IAAIC,GAAS,E,IACb,IAAkB,kBAAAH,GAAI,8BACpB,GAAID,EADQ,SACM/B,MAAO,CACvBmC,GAAS,EACT,O,iGAGJ,OAAOA,EAAS,KAAO,CAAEC,UAAU,I,sCAd1BC,I,uBAAAA,EAA6B,qEAR7B,CACT,CACElC,QAAS,IACTC,YAAaiC,EACbhC,OAAO,Q,EANb,GCLA,yE,OAW2C,EAAAT,WAAuB,G,SADtB,iBAGnC,YAAAE,SAAP,WACE,OAAON,KAAKI,WAAWsC,OAAS,CAAEI,sBAAsB,GAAS,M,oCAJxDC,I,uBAAAA,EAAsB,0HARtB,CACT,CACEpC,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAmC,KAC9BlC,OAAO,KAEV,Q,EARH,CAU4C,K,OAA/B,GCOAmC,EAAuD,CAClEC,cAAU5C,EACV6C,WAAO7C,EACP8C,gBAAY9C,EACZ+C,eAAW/C,EACXgD,KAAM,GACNC,aAAc,GACdC,iBAAalD,EACbmD,SAAU,CACRC,IAAK,GACLC,KAAM,IAERC,UAAMtD,EACNuD,WAAOvD,EACPwD,eAAWxD,EACXyD,iBAAazD,GAGF0D,EAAyC,CACpD,CAAEvD,OAAO,EAAMQ,MAAO,wBACtB,CAAER,OAAO,EAAOQ,MAAO,U,2HChCnB,oCAGE,4EAMF,O,qBAPE,mCAA4B,8BAA5B,CAA4B,qDAA5B,CAA4B,8C,sGA4B1B,uBACE,uBAGE,wEAKD,OACH,O,sBAVW,qCAGP,sCAAuB,8B,qCAZ/B,oCAGE,0EAKA,4BAaF,O,qBAnBE,iCAA0B,yBAA1B,CAA0B,4C,sGA+B5B,uBAGE,2EAMF,O,qBAPE,kCAA2B,8B,qCAiB7B,uBAEE,0EAMD,O,qBAPC,6BAAsB,8B,oFAmBxB,4BAKE,2EAIF,O,qBARE,kCAA6C,8BAA7C,CAA6C,0BAA7C,CAA6C,8B,sGAmB/C,uBAGE,8EAOF,OACA,mCAGE,gGAMF,OACA,uBAGE,6EAED,O,qBAxBC,qCAA8B,6BAW9B,yCAUA,6C,iHA2BF,uBAEE,sEAMF,O,qBAPE,6BAAsB,8B,iFAmBxB,uBACE,gCAAU,IAAV,CAAiB,kEAQnB,O,qBAPE,8BAAuB,6BAAvB,CAAuB,8B,qCAazB,6BAGE,2EACD,O,qBAFC,mCCxKD,IAAMgD,EAAoD,CAC/Db,WAAY,0BACZF,SAAU,0BACVC,MAAO,4BACPE,UAAW,0BACXa,SAAU,2BACVJ,UAAW,yBACXF,KAAM,kCACNO,MAAO,0DACPC,QAAS,6BACTC,MAAO,4DAGT,0BAMS,KAAAC,eAAiB,IAAI3C,KAAK,KAAM,EAAG,GACnC,KAAA4C,aAAe,IAAI5C,KAAK,KAAM,GAAI,IAEzB,KAAA6C,aAAe,KACxB,KAAAC,kBAAoC,CACzC,CAAEhE,MAAO,KAAWiE,MAAOzD,MAAO,QAClC,CAAER,MAAO,KAAWkE,IAAK1D,MAAO,SAG3B,KAAA2D,UAAW,EACX,KAAAC,WAAY,EACZ,KAAAC,eAAgB,EAChB,KAAAC,gBAAiB,EACjB,KAAAC,WAAY,EACZ,KAAAC,iBAAkB,EAClB,KAAAC,oBAAqB,EACrB,KAAAC,4BAAiD7E,EACjD,KAAA8E,uBAAyB,GAEN,KAAAC,YAAa,EAEvB,KAAAC,YAAcrB,EACd,KAAAsB,aAA+BjF,EAE9B,KAAAkF,YAAc,IAAI,IAClB,KAAAC,cAAgB,IAAI,IAO7B,KAAAC,kBAAoCpF,EACpC,KAAAqF,eAAgCrF,EAChC,KAAAsF,cAAe,E,OAEvB,sBACW,uBAAQ,C,IADnB,SACoBC,GAClB5F,KAAK2E,UAAY,aAAeiB,I,gCAGlC,sBACW,wBAAS,C,IADpB,SACqBA,GACnB5F,KAAK4E,WAAa,aAAegB,I,gCAGnC,sBACW,4BAAa,C,IADxB,SACyBA,GACvB5F,KAAK6E,eAAiB,aAAee,I,gCAGvC,sBACW,6BAAc,C,IADzB,SAC0BA,GACxB5F,KAAK8E,gBAAkB,aAAec,I,gCAGxC,sBACW,wBAAS,C,IADpB,SACqBA,GACnB5F,KAAK+E,WAAa,aAAea,I,gCAGnC,sBACW,yBAAU,C,IADrB,SACsBA,GACpB5F,KAAKgF,iBAAmB,aAAeY,I,gCAGzC,sBACW,+BAAgB,C,IAD3B,SAC4BA,GAC1B5F,KAAKiF,mBAAqB,aAAeW,I,gCAG3C,sBACW,8BAAe,C,IAD1B,SAC2BA,GACrBA,GACF5F,KAAKkF,uBAAyB,KAAW/E,QACzCH,KAAKmF,uBAAyBS,IAE9B5F,KAAKkF,4BAAyB7E,EAC9BL,KAAKmF,uBAAyB,K,gCAI3B,YAAAU,SAAP,YAC+B,IAAzB7F,KAAKgF,kBACPhF,KAAKqF,YAAc,YAAH,eACXrF,KAAKqF,aAAW,CACnBpB,SAAU,8BAGkB,IAA5BjE,KAAKiF,oBACPjF,KAAKwE,kBAAkBsB,KAAK,CAC1BtF,MAAO,KAAWL,QAClBa,MAAO,WAKN,YAAA+E,YAAP,SAAmBC,GAEbA,EAAQV,SAA2C,MAAhCU,EAAQV,QAAQW,eACrCjG,KAAK0F,eAAYrF,IAGdL,KAAKQ,MAAMgD,SAASC,KAAOuC,EAAQV,SACtCtF,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbgD,SAAU,YAAF,GAAOxD,KAAKsF,aAKnB,YAAAa,mBAAP,sBAEOnG,KAAK2F,cAA6C,MAA7B3F,KAAKoG,aAAaC,UAC1CrG,KAAK2F,cAAe,EACpB,OAAAW,EAAA,GACEtG,KAAKoG,aAAaC,QAAQE,cAE1B,OAAAC,EAAA,GAAGxG,KAAKQ,OAASR,KAAKQ,MAAMgD,UAAYxD,KAAKQ,MAAMgD,SAASC,IAAM,QAAU,YAE3EgD,KAEC,OAAAC,EAAA,IACE,SAACC,GACC,OAAC,EAAKvB,YAA8B,MAAhB,EAAKE,SAA4B,UAATqB,IAAqB,EAAKjB,cAG3EkB,WAAU,WAAM,SAAKC,2BAI5B,sBAAY,2CAA4B,C,IAAxC,WACE,OAAO7G,KAAKQ,MAAM2C,aAAe,KAAWhD,S,gCAG9C,sBAAW,6BAAc,C,IAAzB,WACE,OACEH,KAAK+E,YACH/E,KAAKgF,kBAAoBhF,KAAKiF,qBAAwBjF,KAAK8G,+B,gCAIjE,sBAAW,iCAAkB,C,IAA7B,WACE,OAAO9G,KAAKgF,kBAAoBhF,KAAK8G,8B,gCAGhC,YAAAC,cAAP,SAAqB5D,GACnBnD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACb2C,WAAU,IAEZnD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAAwG,YAAP,SAAmB/D,GACjBjD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACbyC,SAAQ,IAEVjD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAAyG,SAAP,SAAgB/D,GACdlD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACb0C,MAAK,IAEPlD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAA0G,aAAP,SAAoB9D,GAClBpD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACb4C,UAAS,IAEXpD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAA2G,YAAP,SAAmB9D,GACjBrD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACb6C,KAAI,IAENrD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAA4G,aAAP,SAAoBvD,GAClB7D,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACbqD,UAAS,IAEX7D,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAA6G,gBAAP,SAAuB/D,GACrBtD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACb8C,aAAY,IAEdtD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAA8G,eAAP,SAAsB/D,GACpBvD,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACb+C,YAAW,IAEbvD,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAA+G,QAAP,SAAe5D,GACb3D,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACbmD,KAAI,IAEN3D,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAAgH,SAAP,SAAgB5D,GACd5D,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACboD,MAAK,IAEP5D,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAAiH,eAAP,SAAsB3D,GACpB9D,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAK,CACbsD,YAAW,IAEb9D,KAAKuF,YAAYW,KAAKlG,KAAKQ,QAGtB,YAAAkH,YAAP,SAAmBpC,EAAmCqC,GAChD3H,KAAKsF,SAAWtF,KAAK0F,YAAcJ,EAAQ7B,KAAOkE,IACpD3H,KAAK0F,eAAYrF,GAEnBL,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbgD,SAAU8B,MAIP,YAAAsC,WAAP,SAAkBC,GAChB7H,KAAK8H,MAAMC,OAAM,GACjB,IAAMvH,EAAQ,YAAH,eACNR,KAAKQ,OAAK,CACbgD,SAAUqE,EAAmB7H,KAAKyF,aAAgB,CAAEhC,IAAK,GAAIC,KAAM,MAIjEmE,GAAoB7H,KAAKsF,QAAS7B,MAAQjD,EAAMgD,SAASC,KAC3DzD,KAAKwF,cAAcU,KAAK,CACtBzC,IAAKjD,EAAMgD,SAASC,IACpBC,KAAMlD,EAAMgD,SAASE,OAGzB1D,KAAKuF,YAAYW,KAAK1F,GAElBqH,IACF7H,KAAK0F,UAAY1F,KAAKQ,MAAMgD,SAASC,KAEvCzD,KAAKyF,kBAAepF,GAGd,YAAAwG,oBAAR,WAGI7G,KAAKQ,MAAMgD,UACXxD,KAAKQ,MAAMgD,SAASC,KACpBzD,KAAKsF,QAAS7B,MAAQzD,KAAKQ,MAAMgD,SAASC,MAE1CzD,KAAKyF,aAAe,YAAH,GAAQzF,KAAKQ,MAAMgD,UAC/BxD,KAAK8H,MAAME,QACdhI,KAAK8H,MAAMG,S,sCApRNC,I,uBAAAA,EAAuB,6D,GAAA,M,KA4BvB,MAAgB,G,smFDvF7B,UACE,wBAOE,4BAYF,OAEA,wBAOE,4BAwBF,OAEA,wBAOE,4BAYF,OACA,yBAME,6BAWF,OAEA,0BAOE,6BAYF,OAEA,2BAME,6BA6BF,OAEA,2BACE,aACE,SAC6D,cAAM,yDAErE,OACA,mCACE,gCAA6B,iCAAU,EAAAN,YAAW,MAAqB,OACvE,gCAA+B,iCAAU,EAAAA,YAAW,MAAsB,OAC5E,OACF,OAEA,2BAOE,6BAWF,OAEA,2BAOE,6BAYF,OAEA,wBACE,6BAOF,OACF,Q,8FApNI,kDAAmC,wBAAnC,CAAmC,+CAqBnC,gDAAiC,yBAAjC,CAAiC,4BAiCjC,iDAAkC,yBAAlC,CAAkC,gCAoBlC,+FAA+E,0BAmB/E,iDAAkC,yBAAlC,CAAkC,8CAqBlC,+CAAgC,0BAsC9B,gMAWF,4CAA6B,yBAA7B,CAA6B,sBAoB7B,6CAA8B,yBAA9B,CAA8B,sBAoBrB,6CAA8B,yBAA9B,CAA8B,yB,gLCvJ3C,G,qCC7CM,iCAQE,kFAGF,O,qBALE,6BAAsB,qCCN9B,ICNiBO,EDMjB,0BAMS,KAAAC,0BAA2B,EAC3B,KAAAC,iBAAkB,EAGlB,KAAAjD,YAAa,EAEJ,KAAAb,aAA+B,KAC/B,KAAA+D,OAAS,YAAH,eACjBtE,GAAc,CACjBZ,UAAW,wDACXa,SAAU,yDACVE,QAAS,qDAIM,KAAAoB,YAAc,IAAI,I,OAEnC,sBACW,8BAAe,C,IAD1B,SAC2BK,GACzB5F,KAAKoI,yBAA2B,aAAexC,I,gCAGjD,sBACW,4BAAa,C,IADxB,SACyBA,GACvB5F,KAAKqI,gBAAkB,aAAezC,I,gCAGjC,YAAA2C,sBAAP,SAA6BC,GAC3BxI,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbgI,mBAAkB,M,sCA/BXC,I,uBAAAA,EAAqB,6kBDdlC,UACE,wBAOE,4BAcF,OACF,Q,MAlBI,sCAAuB,+B,8ECI3B,ICNA,SAAiBN,GAIF,EAAAO,IAAW,MACX,EAAAC,MAAe,QACf,EAAAC,MAAe,KAN9B,CAAiBT,MAAqB,KActC,IAAYU,EAAZ,SAAYA,G,OACV,iBACA,qBACA,mBAHUA,EAAZ,CAIC,IAEYC,EAAkD,CAC7D,CAAEtI,MAAO2H,EAAsBO,IAAK1H,MAAO,cAC3C,CAAER,MAAO2H,EAAsBQ,MAAO3H,MAAO,SAC7C,CAAER,MAAO2H,EAAsBS,MAAO5H,MAAO,wBAGlC+H,EAAgD,CAC3D,CAAEvI,OAAO,EAAMQ,MAAO,cACtB,CAAER,OAAO,EAAOQ,MAAO,uBAGZgI,GAAyC,CACpD,CAAExI,OAAO,EAAMQ,MAAO,uBACtB,CAAER,OAAO,EAAOQ,MAAO,8BAQZiI,GAA2C,CACtD,CACEzI,MAAOqI,EAAoBH,IAC3B1H,MAAO,qCAET,CACER,MAAOqI,EAAoBD,MAC3B5H,MAAO,qCAET,CAAER,MAAOqI,EAAoBK,KAAMlI,MAAO,S,aC1C5C,cAME,WAAoBmI,EAAyCC,GAAzC,KAAAD,QAJZ,KAAAE,SAA2B,GAKjCrJ,KAAKsJ,KAAUF,EAAOG,cAAa,4B,OAG9B,YAAAC,SAAP,sBACE,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAC3B,EAAKC,wBAAuB,SAACC,QACfxJ,IAARwJ,GACFH,GAAQ,GAEVC,EAAOE,UAKN,YAAAC,WAAP,WACE,OAAO9J,KAAKqJ,UAGN,YAAAO,uBAAR,SAA+BG,GAA/B,WACE/J,KAAKmJ,MACFa,IAAsBhK,KAAKsJ,MAC3B7C,KACC,OAAAwD,GAAA,IAAI,SAACtD,G,UACGuD,EAA0B,GAIhC,EAAKC,YAAcxD,EAAO,YAAIA,EAAM,EAAEyD,IAAK,EAAGC,GAAI,UAAWhH,KAAM,cACnE,IAAIiH,EAAQ,E,IACZ,IAAoB,kBAAA3D,GAAI,8BAAE,CAArB,IAAM4D,EAAK,QACdL,EAAQpE,KAAK,CAAEtF,MAAe,QAAV,EAAE+J,EAAMH,UAAE,QAAIE,IAAStJ,MAAOuJ,EAAMlH,Q,iGAE1D,OAAO6G,MAGVtD,WACC,SAACsD,GACC,EAAKb,SAAWa,EAChBH,OAEF,SAACS,GAAU,OAAAT,EAAGS,OAIb,YAAAC,cAAP,SAAqBpH,G,MACnB,OAAKA,GAASrD,KAAKmK,YAAYzH,SAG+C,QAAvE,EAAA1C,KAAKmK,YAAYO,MAAK,SAACC,GAA2B,OAAAA,EAAOtH,OAASA,YAAK,eAAEgH,KAFvE,M,sCApDAO,GAAiC,eAKG,O,yBALpCA,EAAiC,QAAjCA,EAAiC,qBADpB,S,EAA1B,GA+DaC,GAAgD,CAC3D,CACElK,QAAS,IACTmK,WAPG,SAAiCC,GACtC,OAAO,WAAwB,OAAAA,EAAQvB,aAOrCwB,KAAM,CAAC,IACPnK,OAAO,GAET,ICjFWoK,GAAiD,CAC5DC,aAAS7K,EACT8K,cAAU9K,EACV+K,cAAU/K,G,sCCeE,mCAGE,2EAIF,O,sBALE,iCAA0B,8B,sCAU5B,mCAGE,2EAIF,O,sBALE,iCAA0B,8B,0BAnBhC,sBAIE,6BAUF,OACA,sBACE,6BAUF,Q,mBAzBE,oCAcS,6C,sCAzBf,YAAG,oGAAmF,OACtF,mCAGE,yEAKA,6BA6BF,O,qBAnCE,wCAAyB,2BAAzB,CAAyB,sCCHjC,+BAMkB,KAAAgL,UAAW,EACX,KAAA7K,MAA6ByK,GAC5B,KAAA1F,YAAc,IAAI,IAE5B,KAAA+F,eAAiB,CACtB,CAAE9K,MAAO,EAAGQ,MAAO,MACnB,CAAER,MAAO,EAAGQ,MAAO,SAGd,KAAAuK,gBAAkB,CACvB,CAAE/K,MAAO,EAAGQ,MAAO,MACnB,CAAER,MAAO,EAAGQ,MAAO,SAGd,KAAAwK,gBAAkB,CACvB,CAAEhL,MAAO,EAAGQ,MAAO,MACnB,CAAER,MAAO,EAAGQ,MAAO,S,OAGd,YAAAyK,WAAP,SAAkBP,GAChBlL,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACb0K,QAAO,MAIJ,YAAAQ,YAAP,SAAmBP,GACjBnL,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACb2K,SAAQ,MAIL,YAAAQ,YAAP,SAAmBP,GACjBpL,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACb4K,SAAQ,M,sCArCDQ,I,uBAAAA,EAAkB,2nBDR/B,UACE,sBACE,6BAyCF,OACF,S,sFCzCA,GCKYC,GAAZ,SAAYA,G,OACV,uBACA,2BAFUA,EAAZ,CAGC,IAQYC,GAAqD,CAChE,CAAEtL,MAAOqL,GAAwBE,OAAQ/K,MAAO,wBAChD,CAAER,MAAOqL,GAAwBG,SAAUhL,MAAO,sBAepD,0E,OA0BkB,EAAAiL,eAA8B5L,EAEvC,EAAA6L,gBAAkB,CACvB,CAAElL,MAAO,SAAUR,MAAO,GAC1B,CAAEQ,MAAO,UAAWR,MAAO,GAC3B,CAAEQ,MAAO,UAAQR,MAAO,GACxB,CAAEQ,MAAO,QAASR,MAAO,GACzB,CAAEQ,MAAO,MAAOR,MAAO,GACvB,CAAEQ,MAAO,OAAQR,MAAO,GACxB,CAAEQ,MAAO,OAAQR,MAAO,GACxB,CAAEQ,MAAO,SAAUR,MAAO,GAC1B,CAAEQ,MAAO,YAAaR,MAAO,GAC7B,CAAEQ,MAAO,UAAWR,MAAO,GAC3B,CAAEQ,MAAO,WAAYR,MAAO,IAC5B,CAAEQ,MAAO,WAAYR,MAAO,KAEvB,EAAA2L,mBAAqC,GAEpC,EAAAC,mBAAqB,a,SAtBrB,iBAwBD,YAAArG,YAAP,WACE/F,KAAKoM,sBAGA,YAAA9L,SAAP,WACE,IAAME,EAAQ,YAAH,GAAQR,KAAKQ,OACxB,OAAsB,MAAlBR,KAAKiM,WAA4C,MAAvBzL,EAAM6L,eAA8C,MAArB7L,EAAM8L,YAC1D,KA8CN,SACL9L,EACAyL,GAEA,IAAMM,EAAQ/L,EAAM6L,cACdG,EAAMhM,EAAM8L,YACZG,EAAiBR,EAAUjK,WAKjC,OAHGwK,EAAMD,IAAUC,GAAOC,GAAkBF,GAASE,IAClDF,GAASE,GAAkBA,GAAkBD,EAEjC,KAAO,CAAEE,SAAS,GAtDxBC,CAAqBnM,EAAOR,KAAKiM,YAGnC,YAAAW,0BAAP,SAAiCC,GAC/B7M,KAAKoM,mBAAqBS,GAGrB,YAAAC,WAAP,SAAkBtM,GAChB,YAAMsM,WAAU,UAACtM,GAEbR,KAAKQ,OAAqC,MAA5BR,KAAKQ,MAAM6L,eAC3BrM,KAAK+M,qBAIF,YAAAC,oBAAP,SAA2BX,GACzBrM,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAM,CACd6L,cAAa,IAGM,MAAjBA,GACFrM,KAAK+M,qBAIF,YAAAE,kBAAP,SAAyBX,GACvBtM,KAAKQ,MAAQ,YAAH,eACLR,KAAKQ,OAAM,CACd8L,YAAW,KAIP,YAAAS,kBAAR,WACE,IAAMV,EAAgBrM,KAAKQ,MAAO6L,cAClCrM,KAAKmM,mBAAqBnM,KAAKkM,gBAE5BxF,QAAO,SAAClG,GAAU,OAAAA,EAAMA,MAAQ6L,GAAiB7L,EAAMA,MAAQ6L,EAAgB,MAE/Ea,OAAOlN,KAAKkM,gBAAgBxF,QAAO,SAAClG,GAAU,OAAAA,EAAMA,MAAQ6L,EAAgB,O,qCA1EtEc,I,uBAAAA,EAAqB,gFAlBrB,CACT,CACExM,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAuM,KAC9BtM,OAAO,GAET,CACEF,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAuM,KAC9BtM,OAAO,GAET,CACEF,QAAS,IACT2B,SAAU,CAAEoK,QAAS,aAExB,sQCtDH,UACE,yBAAwB,0EAAyD,OACjF,0BAME,yCAAiB,EAAAM,oBAAA,MAEnB,OACA,0BAME,yCAAiB,EAAAC,kBAAA,MAEnB,OACF,Q,MAdI,0CAA2B,oDAS3B,6CAA8B,oD,sFDqBlC,CAsBU,M,QADG,IE/Cb,cAwBE,WAAYG,GAtBL,KAAAC,OAAS,EACT,KAAAC,SAAW,QACX,KAAAC,YAAa,EACb,KAAAC,YAAa,EACb,KAAAC,QAAS,EACT,KAAAC,iBAAkB,EAClB,KAAAC,cAAgB,GAEhB,KAAAC,SAAU,EACV,KAAAC,wBAAyB,EAc9B7N,KAAK8N,gBAAkBV,EAASpD,IAAgC,KAChEhK,KAAK+N,QAAUX,EAASpD,IAAY,KACpChK,KAAKgO,oBAAsBZ,EAASpD,IAAwB,KAC5DhK,KAAKiO,IAAMb,EAASpD,IAAuB,KAC3C,IAAMkE,EAAqBd,EAASpD,IAAwB,MAE5DhK,KAAKqN,OAASa,EAAmBb,QAAU,E,OAGtC,YAAAxH,SAAP,WACE7F,KAAK0N,gBAAkB1N,KAAKgO,oBAAoBG,SAG3C,YAAAC,eAAP,WACEpO,KAAK8N,gBAAgBO,wBAGhB,YAAAC,YAAP,WACEtO,KAAK8N,gBAAgBS,gBAGhB,YAAAC,YAAP,sBACOxO,KAAKwN,aACRxN,KAAKwN,YAAa,EAClBxN,KAAKsN,SAAW,SAEhBtN,KAAK8N,gBAAgBW,aACnB,WACE,EAAKlB,YAAa,EAClB,EAAKC,YAAa,EAClB,EAAKS,IAAIS,kBAEX,WACE,EAAKlB,YAAa,EAClB,EAAKF,SAAW,aAMjB,YAAAqB,eAAP,WACE,OAAO3O,KAAK8N,gBAAgBc,SAGvB,YAAAC,WAAP,WACE7O,KAAK+N,QAAQe,SAAS,CAAC,cAGlB,YAAAC,aAAP,SAAoBtB,GAClBzN,KAAKyN,OAASA,G,sCAzEIuB,GAAwB,Y,uBAAxBA,I,EADtB,GCJA,eAIE,WAAY5B,GAAZ,MACE,YAAMA,IAAS,K,OAHP,EAAA6B,wBAAyB,EAKjC,EAAKlB,QAAUX,EAASpD,IAAY,K,EAsBxC,OA7BwD,iBAU/C,YAAA4E,MAAP,sBACE,OAAO,YAAMA,MAAK,WAAGnI,KACnB,OAAAwD,GAAA,IAAI,SAACzJ,GAIH,QAAKA,IACH,EAAK0O,qBACL,EAAKnB,QAAQe,SAAS,CAAC,mBAChB,QAUjB,EA7BA,CAAwD,KCoBjD,SAASK,GAA0BxI,GACxC,IAAMyI,EA8CD,SAA0BzI,GAC/B,IAAM0I,EAAY1I,EAAKxD,aAAe,KAAWhD,QACjD,MAAO,CACLiD,UAAYiM,OAA8BhP,EAAlBsG,EAAKvD,UAC7Ba,SAAU0C,EAAKtD,KACfiM,aAAc3I,EAAKxD,WACnBoM,OAAQF,GAAa1I,EAAK1D,SAAW0D,EAAKzD,WAAQ7C,GApDrCmP,CAAiB7I,GAChC,OAAO,YAAP,eACKyI,GAAM,CACThM,UAAWgM,EAAOhM,UAClBe,QAASsL,GAAW9I,KAUjB,SAAS+I,GAAYC,EAAiBC,EAAwBC,GACnE,MAAO,CACLC,SAAUH,EACVI,QAASH,EACTI,aAAcH,EAAU,aAAcA,QAAWxP,GAmB9C,SAASoP,GAAW9I,GACzB,MAAO,CACLsJ,OAAQtJ,EAAKrD,aACb4M,aAAcvJ,EAAKpD,YACnBG,KAAMiD,EAAKnD,SAASE,KACpByM,WAAYxJ,EAAKnD,SAASC,KC/D9B,I,GAAA,cAIE,c,OAEO,YAAA2M,iBAAP,SAAwBnE,GAEtB,OADAjM,KAAKqQ,WAAapE,EACX,CACLqE,UAAWtQ,KAAKuQ,uBAIZ,YAAAA,mBAAR,WACE,IAAMC,GAAW,IAAI9O,MAAOG,cAAgB,EACxC4O,EAAS,GAIb,OAHIzQ,KAAKqQ,aACPI,EAASzQ,KAAKqQ,WAAWxO,eAAiB2O,EAAW,eAAiB,gBAEjEC,G,yBAlBEC,EAA8B,Q,sCAA9BA,IAA8B,WADjB,S,EAA1B,G,aCDaC,GAAsB,CACjCC,IAAK,GACLC,IAAK,IAGMC,GAAyB,CACpCC,MAAO,GACPC,YAAaL,GACb3P,MAAO,GACPiQ,KAAM,GAuBR,cAIE,WAAsB9H,EAAyCC,GAAzC,KAAAD,QACpBnJ,KAAKkR,SAAW,GAAG9H,EAAOG,cAAgBH,EAAO+H,QAAO,Q,OAGhD,YAAAC,SAAV,SAAmBzK,GACjB,MAAO,CACLoK,MAAOpK,EAAKoK,MACZC,YAAa,CACXJ,IAAKjK,EAAK0K,eACVR,IAAKlK,EAAK2K,YAEZtQ,MAAO2F,EAAK3F,MACZiQ,KAAMtK,EAAKsK,OAIL,YAAAM,aAAV,SAAuBC,GACrB,OAAqB,MAAjBA,EAAMC,OACD,OAAAC,GAAA,GAAWF,EAAMC,QAEnB,OAAAC,GAAA,GAAW,oBAGV,YAAAC,WAAV,SAAqBC,G,IAA+B,wDAElD,IADA,IAAInB,EAASoB,EAAO,GACXC,EAAI,EAAGA,EAAID,EAAOnP,OAAQoP,IACjCrB,GAAUmB,EAAQE,GAAKC,mBAAmBF,EAAOC,IAEnD,OAAOrB,G,sCA/BWuB,GAAsB,eAGO,O,yBAH7BA,EAAsB,QAAtBA,EAAsB,qBADlB,S,EAA1B,GClCYC,GAAZ,SAAYA,G,OACV,eACA,uBACA,iCACA,qBACA,sBALUA,EAAZ,CAMC,IAEYC,GAAgC,CAC3C,CAAE1R,MAAOyR,GAAaE,GAAInR,MAAO,gCACjC,CAAER,MAAOyR,GAAaG,OAAQpR,MAAO,mBACrC,CACER,MAAOyR,GAAaI,YACpBrR,MAAO,8CAET,CAAER,MAAOyR,GAAaK,MAAOtR,MAAO,aACpC,CAAER,MAAOyR,GAAarJ,MAAO5H,MAAO,uBAyC1BuR,GAAZ,SAAYA,G,OACV,eACA,eAFUA,EAAZ,CAGC,IAEYC,GAAqC,CAChD,CAAEhS,MAAO+R,GAAiBE,GAAIzR,MAAO,MACrC,CAAER,MAAO+R,GAAiBG,GAAI1R,MAAO,OAG3B2R,GAAZ,SAAYA,G,OACV,+BACA,mBACA,2BACA,mBAJUA,EAAZ,CAKC,IAEWC,GAAZ,SAAYA,G,OACV,yBACA,+BAFUA,EAAZ,CAGC,IAEYC,GAAsC,CACjD,CACErS,MAAOmS,GAAWG,WAClB9R,MAAO,8CAET,CAAER,MAAOmS,GAAWI,KAAM/R,MAAO,kBACjC,CACER,MAAOmS,GAAWK,SAClBhS,MAAO,4CAET,CACER,MAAOmS,GAAWM,KAClBjS,MAAO,gDAIEkS,GAA2C,CACtD,CAAE1S,MAAOoS,GAAeO,QAASnS,MAAO,4BACxC,CAAER,MAAOoS,GAAeQ,WAAYpS,MAAO,+BAGjCqS,GAAZ,SAAYA,G,OACV,mBACA,uBACA,yBACA,yBAJUA,EAAZ,CAKC,IAEYC,GAAkC,CAC7C,CAAE9S,MAAO6S,GAASE,OAAQvS,MAAO,wBACjC,CACER,MAAO6S,GAASG,QAChBxS,MAAO,sDAET,CAAER,MAAO6S,GAASI,QAASzS,MAAO,WAClC,CAAER,MAAO6S,GAASnK,KAAMlI,MAAO,yBAGrB0S,GAAZ,SAAYA,G,OACV,qBACA,6BAFUA,EAAZ,CAGC,IAEYC,GAAmC,CAC9C,CAAEnT,MAAOkT,GAASE,MAAO5S,MAAO,gBAChC,CAAER,MAAOkT,GAASG,UAAW7S,MAAO,qB,aClHtC,eAIE,WAAY8S,EAAwC1K,GAApD,MACE,YAAM0K,EAAM1K,IAAO,K,OAHd,EAAA2K,OAAmB,G,SADc,iBAOjC,YAAAC,OAAP,SAAchD,GAAd,WACE,OAAOhR,KAAKmJ,MACTa,IACChK,KAAKkR,SAAW,2BAA2BF,EAAYJ,IAAG,eAAeI,EAAYH,KAEtFpK,KACC,OAAAwD,GAAA,IAAI,SAACgK,GACH,IAAKA,EAEH,MAAM,IAAI,IAAkB,CAAExC,OAAQ,MAExC,OAAO,EAAKL,SAAS6C,MAEvB,OAAAC,GAAA,IAAW,SAACrK,GAAQ,SAAK0H,aAAa1H,Q,sCApBjCsK,GAAoB,eAGO,O,yBAH3BA,EAAoB,QAApBA,EAAoB,qBADP,S,EAA1B,CAC0C,I,qKCD1C,cAmCE,WAAmBC,GAAA,KAAAA,iBA3BZ,KAAApD,YAA8C,CAAEJ,IAAK,GAAIC,IAAK,IAE9D,KAAAwD,kBAAkE,IAAI,IAEtE,KAAA5D,YAA0CpQ,EAE1C,KAAAiU,aAAmE,IAAI,IAKvE,KAAAC,MAAQ,GAER,KAAAC,aAAe,GAEf,KAAAC,cAAgB,SAEhB,KAAAC,WAAa,SACb,KAAAC,kBAAoB,SAGpB,KAAAC,WAAkCvU,EAElC,KAAAwU,SAAU,EACV,KAAAd,OAAmB,GAClB,KAAAe,WAAY,E,OAIb,YAAA3O,mBAAP,WACMnG,KAAK8U,WACP9U,KAAK+U,iBAIF,YAAAC,OAAP,SAAcpE,GACZ5Q,KAAKiV,eACLjV,KAAKgR,YAAc,YAAH,eACXhR,KAAKgR,aAAW,CACnBJ,IAAG,IAEL5Q,KAAKqU,kBAAkBnO,KAAKlG,KAAKgR,aACjChR,KAAK+U,iBAGA,YAAAG,OAAP,SAAcrE,GACZ7Q,KAAKiV,eACLjV,KAAKgR,YAAc,YAAH,eACXhR,KAAKgR,aAAW,CACnBH,IAAG,IAEL7Q,KAAKqU,kBAAkBnO,KAAKlG,KAAKgR,aACjChR,KAAK+U,iBAGA,YAAAA,cAAP,sBACM/U,KAAK4U,MAAOO,QACdnV,KAAK8U,WAAY,EACjB9U,KAAK6U,SAAU,EACf7U,KAAKoU,eAAeJ,OAAOhU,KAAKgR,aAAapK,WAC3C,SAAC6J,GACqB,IAAhBA,EAAOQ,MACT,EAAKmD,eAAeL,OAAS,CAAC,EAAKY,mBACnC,EAAKS,mBAAc/U,IAEnB,EAAK+U,cAAc3E,MAGvB,SAACe,GACC,EAAK4C,eAAeL,OAAS,CAAW,MAAVvC,EAAgB,EAAKiD,cAAgB,UACnE,EAAKW,mBAAc/U,QAMnB,YAAA4U,aAAR,WACEjV,KAAKoU,eAAeL,OAAS,IAGvB,YAAAqB,cAAR,SAAsB5U,GACpBR,KAAK6U,SAAU,EACf7U,KAAKsU,aAAapO,KAAK1F,I,sCApFd6U,GAAiC,W,uBAAjCA,EAAiC,uE,MAAA,K,KAsBjC,KAAc,G,wUA3Bd,CAAC,MAAqB,0oBCdnC,UACE,UACE,gBACE,gBACE,yBAAwB,8CAAgC,OACxD,sBAGE,yCAAiB,EAAAL,OAAA,MASnB,OACA,yBAAwB,uCAAyB,OACjD,sBAGE,yCAAiB,EAAAE,OAAA,MAgBnB,OACA,uBACF,OACA,iBACE,4BACF,OACF,OACF,OACF,Q,MAvCU,0CAA2B,8BAc3B,0CAA2B,0CAA3B,CAA2B,mDAkBlB,iDAGK,uCAAwB,mB,0HD7BhD,GEoBA,4B,OAOgB,EAAAI,QAAd,WACE,MAAO,CACLC,SAAUC,I,uBAHHA,I,oDAAAA,IAAgB,SALlB,CAAC,IAAc,IAAe,Q,EADzC,GC5BaC,GAAc,CACzBlM,cAAe,IACfmM,SAAU,KACVC,UAAW,iDACXzS,MAAO,sGACPiO,QAAS,OACTyE,OAAQ,UCiCGC,GAAuE,CAClFC,aAAc,KACdC,MAAO,KACPC,SAAU,KACVC,MAAO,MClBT,eAME,WAAYnC,EAAwC1K,GAApD,MACE,YAAM0K,EAAM1K,IAAO,K,OALJ,EAAA8M,YAAc,IAEvB,EAAAC,YAAuC,G,SAHD,iBASvC,YAAAC,gBAAP,SAAuBC,GACjBrW,KAAKmW,YAAYG,eAAeD,WAE3BrW,KAAKmW,YAAYE,IAIpB,YAAAE,iBAAR,SAAyBF,EAA+BG,GACtD,OAAQH,GACN,IAAK,eACL,IAAK,WACL,IAAK,QAEH,OADArW,KAAKmW,YAAYE,GAAQG,EAClBxW,KAAKmW,YAAYE,GAE1B,QACE,MAAO,KAIN,YAAAI,aAAP,SACEJ,EACAK,GAFF,IA2BQC,EA3BR,OAIQC,EAAoCP,EACpCQ,EAAU7W,KAAKkR,SAAW,iBAGhC,MAAiB,iBAAb0F,EAEK5W,KAAKmJ,MAAMa,IADR6M,EAAU,iBACqBpQ,KACvC,OAAAwD,GAAA,IAAI,SAACgK,GAAkB,SAAKsC,iBAAiBF,EAAMpC,MACnD,OAAAC,GAAA,IAAW,SAACrK,GAAQ,SAAK0H,aAAa1H,OAGzB,aAAb+M,GAEFD,GADIA,EAAqB,IAAI,KACbG,OAAO,eAAgBJ,EAAKZ,cAErC9V,KAAKmJ,MACTa,IAFO6M,EAAU,aAEM,CAAEF,OAAM,IAC/BlQ,KACC,OAAAwD,GAAA,IAAI,SAACgK,GAAkB,SAAKsC,iBAAiBF,EAAMpC,MACnD,OAAAC,GAAA,IAAW,SAACrK,GAAQ,SAAK0H,aAAa1H,QAG3B,UAAb+M,GAGFD,GADAA,GADIA,EAAqB,IAAI,KACbG,OAAO,eAAgBJ,EAAKZ,eAC5BgB,OAAO,WAAYJ,EAAKV,UAEjChW,KAAKmJ,MACTa,IAFO6M,EAAU,SAEM,CAAEF,OAAM,IAC/BlQ,KACC,OAAAwD,GAAA,IAAI,SAACgK,GAAkB,SAAKsC,iBAAiBF,EAAMpC,MACnD,OAAAC,GAAA,IAAW,SAACrK,GAAQ,SAAK0H,aAAa1H,QAIrC,aAAuB+M,IAGzB,YAAAG,eAAP,SAAsBL,GAAtB,WACQG,EAAU7W,KAAKkR,SAAW,iBAChC,OAAOlR,KAAKmJ,MACTa,IACChK,KAAK2R,WAAU,2GAAU,yBAA2C,YAGpE,eAA4B,UAAqB,eAA0C,MAHzEkF,EAAgCH,EAAKZ,aAErDY,EAAKX,MAAQW,EAAKX,MAAQ,GACdW,EAAKV,SAAmBU,EAAKT,MAAqBjW,KAAKkW,YAAYc,aAElFvQ,KACC,OAAAwD,GAAA,IAAI,SAACgK,GACH,GAAIA,EACF,MAAO,CACLgD,SAAUhD,EAAIgD,SAAShN,IAAI,EAAKmH,UAChC8F,UAAWjD,EAAIkD,qBAAuB,EAAKjB,aAI/C,MAAM,IAAI,IAAkB,CAAEzE,OAAQ,SAExC,OAAAyC,GAAA,IAAW,SAACrK,GAAQ,SAAK0H,aAAa1H,Q,sCA3FjCuN,GAA0B,eAKC,O,yBAL3BA,EAA0B,QAA1BA,EAA0B,qBADb,S,EAA1B,CACgD,I,uCCiBxC,YACE,QACF,Q,kBADE,qC,sCAMF,2BAIE,4EAGF,O,qBALE,2BAAoB,sBClC9B,kBAkDE,WACUC,EACApJ,GADA,KAAAoJ,kBACA,KAAApJ,MA9CM,KAAAqJ,cAAsCzB,GACrC,KAAA0B,oBAA0D,IAAI,IAC/D,KAAA9G,YAA0CpQ,EACzC,KAAAiU,aAEb,IAAI,IACqC,KAAAM,WAAkCvU,EAExE,KAAA0T,OAAmB,GAElB,KAAAyD,kBAA0E,CAChF1B,aAAc,GACdE,SAAU,GACVC,MAAO,GACPwB,QAAS,GACTC,aAAc,IAGR,KAAAC,UAAW,E,OAEnB,sBAAW,sBAAO,C,IAAlB,WACE,OAAO3X,KAAK2X,U,gCAGd,sBAAW,4BAAa,C,IAAxB,WACE,OAAO3X,KAAKwX,kBAAkB1B,c,gCAGhC,sBAAW,yBAAU,C,IAArB,WACE,OAAO9V,KAAKwX,kBAAkBxB,U,gCAGhC,sBAAW,qBAAM,C,IAAjB,WACE,OAAOhW,KAAKwX,kBAAkBvB,O,gCAGhC,sBAAW,uBAAQ,C,IAAnB,WACE,OAAOjW,KAAKwX,kBAAkBE,c,gCAGhC,sBAAW,sBAAO,C,IAAlB,WACE,OAAQ1X,KAAKyQ,OAAqBzQ,KAAKyQ,OAAOzP,WAAxBX,G,gCAQjB,YAAAwF,SAAP,sBACE7F,KAAK4X,QAAQ,gBAAgB,WAAM,SAAK3J,IAAIS,kBACxC1O,KAAKsX,cAAcxB,eACrB9V,KAAK4X,QAAQ,YAAY,WAAM,SAAK3J,IAAIS,kBACpC1O,KAAKsX,cAActB,WACrBhW,KAAK4X,QAAQ,SAAS,WAAM,SAAK3J,IAAIS,kBACjC1O,KAAKsX,cAAcrB,OACrBjW,KAAK6X,iBAAgB,WAAM,SAAK5J,IAAIS,qBAMpC,YAAAkJ,QAAR,SAAgBvB,EAA+ByB,GAA/C,WACE9X,KAAK+T,OAAS,GACd/T,KAAK2X,UAAW,EAChB3X,KAAKqX,gBAAgBZ,aAAaJ,EAAMrW,KAAKsX,eAAe1Q,WAC1D,SAACD,GAKC,OAJA,EAAKgR,UAAW,EACXhR,IACHA,EAAO,IAED0P,GACN,IAAK,eACL,IAAK,WACL,IAAK,QACH,EAAKmB,kBAAkBnB,GAAQ1P,EAC/B,MAEF,IAAK,UACH,EAAK6Q,kBAAkBnB,GAAQ1P,EAG/BmR,GACFA,IAEF,EAAK7J,IAAIS,kBAEX,WACE,EAAKiJ,UAAW,MAKd,YAAAE,gBAAR,SAAwBC,GAAxB,WACE9X,KAAK+T,OAAS,GACd/T,KAAK2X,UAAW,EAChB3X,KAAKqX,gBAAgBN,eAAe/W,KAAKsX,eAAe1Q,WACtD,SAACD,GACC,EAAKgR,UAAW,EACZhR,EAAKuQ,UACP,EAAKnD,OAAS,CAAC,WAEf,EAAKyD,kBAAkBC,QAAU9Q,EAAKsQ,SACtC,EAAKO,kBAAkBE,aAAe/Q,EAAKsQ,SAAShN,KAAI,SAACzJ,GAAU,OAAAA,EAAMQ,SAE3B,IAA1C,EAAKwW,kBAAkBC,QAAQ/U,SACjC,EAAK+N,OAAS,EAAK+G,kBAAkBC,QAAQ,GAC7C,EAAKnD,aAAapO,KAAK,EAAKuK,SAG1BqH,GACFA,QAIN,SAACrG,GACC,EAAKkG,UAAW,EAChB,EAAK5D,OAAoB,MAAXtC,GAA6B,MAAXA,EAAiB,CAAC,UAAY,CAAC,UAC/D,EAAK6C,aAAapO,UAAK7F,GACvB,EAAK4N,IAAIS,mBAKR,YAAAqJ,mBAAP,SAA0BjC,GAA1B,WACE9V,KAAKgY,iBACLhY,KAAKiY,sBACLjY,KAAKgY,iBAELhY,KAAKsX,cAAgB,YAAH,eACbtX,KAAKsX,eAAa,CACrBxB,aAAY,EACZE,SAAU,KACVC,MAAO,KACPF,MAAO,KACP0B,QAAS,OAEXzX,KAAKuX,oBAAoBrR,KAAKlG,KAAKsX,eAEf,MAAhBxB,GACF9V,KAAK4X,QAAQ,YAAY,WACvB,EAAK3J,IAAIS,eAEsC,IAA3C,EAAK8I,kBAAkBxB,SAAStT,QAClC,EAAKwV,eAAe,EAAKV,kBAAkBxB,SAAS,QAMrD,YAAAmC,YAAP,SAAmBpC,GAAnB,WACE/V,KAAKgY,iBACLhY,KAAKsX,cAAgB,YAAH,eACbtX,KAAKsX,eAAa,CACrBvB,MAAK,IAGL/V,KAAKsX,cAActB,UACnBhW,KAAKsX,cAAcrB,OACnBjW,KAAKsX,cAAcxB,cAEnB9V,KAAK6X,iBAAgB,WAAM,SAAK5J,IAAIS,kBAEtC1O,KAAKuX,oBAAoBrR,KAAKlG,KAAKsX,gBAG9B,YAAAY,eAAP,SAAsBlC,GAAtB,WACEhW,KAAKgY,iBACLhY,KAAKsX,cAAgB,YAAH,eACbtX,KAAKsX,eAAa,CACrBtB,SAAQ,IAEM,MAAZA,GACFhW,KAAK4X,QAAQ,SAAS,WACpB,EAAK3J,IAAIS,eAEmC,IAAxC,EAAK8I,kBAAkBvB,MAAMvT,QAC/B,EAAK0V,YAAY,EAAKZ,kBAAkBvB,MAAM,OAKpDjW,KAAKuX,oBAAoBrR,KAAKlG,KAAKsX,gBAG9B,YAAAc,YAAP,SAAmBnC,GAAnB,WACEjW,KAAKgY,iBACLhY,KAAKsX,cAAgB,YAAH,eACbtX,KAAKsX,eAAa,CACrBrB,MAAK,IAEM,MAATA,GACFjW,KAAK6X,iBAAgB,WAAM,SAAK5J,IAAIS,kBAEtC1O,KAAKuX,oBAAoBrR,KAAKlG,KAAKsX,gBAG9B,YAAAe,cAAP,SAAqBC,GACnBtY,KAAKyQ,OAAS6H,EACVtY,KAAKwX,kBAAkBC,QAAQ/M,MAAK,SAAClK,GAAU,OAAAA,EAAMQ,QAAUsX,UAC/DjY,EACJL,KAAKsU,aAAapO,KAAKlG,KAAKyQ,SAGtB,YAAAwH,oBAAR,WACEjY,KAAKqX,gBAAgBjB,gBAAgB,YACrCpW,KAAKqX,gBAAgBjB,gBAAgB,SACrCpW,KAAKwX,kBAAkBxB,SAAW,GAClChW,KAAKwX,kBAAkBvB,MAAQ,GAC/BjW,KAAKiO,IAAIS,gBAGH,YAAAsJ,eAAR,WACEhY,KAAKqX,gBAAgBjB,gBAAgB,WACrCpW,KAAKwX,kBAAkBC,QAAU,GACjCzX,KAAKwX,kBAAkBE,aAAe,GACtC1X,KAAKiO,IAAIS,gB,sCAzNA6J,GAA4B,qB,uBAA5BA,EAA4B,kE,MAAA,K,sgCD5BzC,UACE,UACE,YACE,0BAKE,yCAAiB,EAAAR,mBAAA,MAGnB,OACA,sBAME,yCAAiB,EAAAI,YAAA,MAEnB,OACA,0BAME,yCAAiB,EAAAD,eAAA,MAGnB,OACA,0BAME,yCAAiB,EAAAE,YAAA,MAInB,OACF,OAEA,sBAEA,sBACE,8BAKF,OACA,wBACE,8BAUF,OACF,OACF,Q,MA5DQ,wCAAyB,wCASzB,uDAAwC,iCASxC,qCAAsB,yCAAtB,CAAsB,oCAUtB,iCAAkB,qCAAlB,CAAkB,gCAAlB,CAAkB,oCAUX,kCAE8B,8CAOO,8C,gHC9BpD,GCJA,cAIE,WAAoBjP,EAAyCC,GAAzC,KAAAD,QAClBnJ,KAAKkR,SAAc9H,EAAOG,cAAa,Y,OAGlC,YAAAyK,OAAP,SAAchD,GAAd,WACE,OAAOhR,KAAKmJ,MACTa,IACChK,KAAKkR,SACH,qCAAqCF,EAAYJ,IAAG,eAAeI,EAAYH,KAElFpK,KACC,OAAAwD,GAAA,IAAI,SAACgK,GAAyB,SAAK7C,SAAS6C,MAC5C,OAAAC,GAAA,IAAW,SAACrK,GAA2B,SAAK0H,aAAa1H,QAIrD,YAAAuH,SAAV,SAAmBzK,GACjB,MAAO,CACLoK,MAAOpK,EAAK6R,WACZC,KAAM9R,EAAKgJ,IACX+I,IAAK/R,EAAK+R,IACVC,IAAKhS,EAAKgS,IACV1C,MAAO,CACL2C,GAAIjS,EAAKkS,UAAUC,GACnBC,GAAIpS,EAAKkS,UAAUG,MAKf,YAAAzH,aAAV,SAAuBC,GACrB,OAAqB,MAAjBA,EAAMC,OACD,OAAAC,GAAA,GAAWF,EAAMC,QAGnB,OAAAC,GAAA,GAAW,oB,sCArCTuH,GAAuB,eAGa,O,yBAHpCA,EAAuB,QAAvBA,EAAuB,qBADV,S,EAA1B,GCVYC,GAAZ,SAAYA,G,OACV,uCACA,mCAFUA,EAAZ,CAGC,IAEWC,GAAZ,SAAYA,G,OACV,mBACA,mBAFUA,EAAZ,CAGC,IAEYC,GAAiC,CAC5CC,gBAAiB,EACjBC,eAAWjZ,EACXkZ,WAAOlZ,EACPmZ,YAAa,GACbC,YAAa,EACbC,mBAAmB,GCJrB,0E,OAES,EAAAjC,QAAmB,CACxBzD,OAAQ,CACNhD,YAAaL,GACbF,OAAQK,GACRwG,cAAezB,GACf4C,UAAMpY,EACNsZ,eAAWtZ,GAEbuZ,iBAAavZ,EACbwZ,sBAAkBxZ,EAClByZ,0BAAsBzZ,EACtB0Z,eAAW1Z,EACX2Z,oBAAgB3Z,EAChB4L,UAAW,KACXgO,aAAc,CACZxB,UAAMpY,EACNiM,iBAAajM,EACbgM,mBAAehM,GAEjB6Z,cAAe,CACbzW,IAAK,GACLC,KAAM,IAERyW,WAAO9Z,GAGF,EAAA+Z,QAAmB,CACxBC,mBAAeha,EACfia,UAAW,KACXC,UAAWtP,GACXhJ,gBAAY5B,EACZma,aAASna,EACToa,mBAAepa,EACfqa,cAAUra,EACVsa,uBAAmBta,EACnBua,uBAAmBva,EACnBwa,QAAS,CACPC,QAAQ,EACRC,aAAa,EACbC,UAAU,EACVC,QAAQ,GAEVC,wBAAoB7a,EACpB8a,SAAK9a,EACL+a,sBAAkB/a,EAClBgb,cAAUhb,EACVib,oBAAgBjb,EAChBkb,oBAAgBlb,EAChBmb,GAAI,CACFlC,eAAWjZ,EACXkZ,WAAOlZ,GAETob,YAAQpb,EACRqb,gBAAYrb,EACZsb,mBAAoB,KACpBC,OAAQ,CACNC,WAAOxb,EACPyb,eAAgB,CACdxB,UAAW,KACXyB,SAAK1b,IAGT2b,aAAa,GAGR,EAAAC,MAAe7C,GAEf,EAAA8C,eAAiC,CACtCC,sBAAuB,KACvBla,gBAAY5B,EACZ+b,WAAO/b,EACPgc,0BAAsBhc,EACtBic,IAAK,IACLC,2BAAuBlc,EACvBmc,gBAAYnc,EACZoc,oBAAgBpc,EAChBqc,mBAAoB,KACpBC,kBAAmB,IACnBC,kBAAcvc,EACdwc,sBAAkBxc,EAClByc,qBAAiBzc,EACjB0c,mBAAe1c,EACfP,aAAc,KACdkd,gBAAiB,CACfxU,mBAAoBxF,GAEtBia,QAAS,K,SAvFoB,iBA0FxB,YAAAC,gBAAP,WACE,OAAOld,KAAKkc,eAAepc,cAGnB,YAAAqd,iBAAV,SAA2Brd,GACzBE,KAAKkc,eAAepc,aAAeA,GAG9B,YAAAsd,sBAAP,WACE,OAAOpd,KAAKyX,QAAQxL,WAGZ,YAAAoR,uBAAV,SAAiCpR,GAC/BjM,KAAKyX,QAAQxL,UAAYA,GAGpB,YAAAqR,4BAAP,WACE,OAAOtd,KAAKoa,QAAQE,WAGZ,YAAAiD,6BAAV,SAAuC1Z,GACrC7D,KAAKoa,QAAQE,UAAYzW,GAGpB,YAAA5D,+BAAP,WACE,OAAOD,KAAKoa,QAAQC,eAGZ,YAAAna,iCAAV,SAA2Cma,GACzCra,KAAKoa,QAAQC,cAAgBA,GAGxB,YAAAmD,WAAP,WACE,MCjJuB,U,yBDsBdC,EAAW,Q,qCAAXA,IAAW,WADE,S,EAA1B,CACiC,G,QAApB,IErBb,2BAES,KAAAC,cAAe,E,gCADXC,EAAiB,Q,sCAAjBA,IAAiB,WADJ,S,EAA1B,GCaA,cAEE,WAAoBC,EAAmCC,GAAnC,KAAAD,eAAmC,KAAAC,qB,OAEhD,YAAAC,YAAP,WACE,OAAO9d,KAAK4d,aAAanG,QAAQxL,UAAa,IAAIvK,KAAK,KAAM,EAAG,IAK3D,YAAAqc,6BAAP,WACE,OAAoD,IAA7C/d,KAAK4d,aAAanG,QAAQuC,gBAG5B,YAAAgE,iCAAP,WAEE,OADoBhe,KAAK4d,aAAY,QACtB5D,gBAAkBha,KAAK+d,gCAGjC,YAAAE,yBAAP,WACE,OAAOje,KAAK4d,aAAanG,QAAQwC,aAAaxB,OAAS5M,GAAwBG,UAK1E,YAAAkS,qBAAP,WACE,OAAmD,IAA5Cle,KAAK4d,aAAaxD,QAAQC,eAG5B,YAAA8D,qBAAP,WACE,OACEne,KAAK4d,aAAanG,QAAQ0C,QAAUlI,GAAaE,IACjDnS,KAAK4d,aAAanG,QAAQ0C,QAAUlI,GAAaI,aACjDrS,KAAK4d,aAAanG,QAAQ0C,QAAUlI,GAAaG,QAI9C,YAAAgM,oBAAP,WACE,OAAmD,IAA5Cpe,KAAK4d,aAAaxD,QAAQK,eAG5B,YAAA4D,6BAAP,WAEe,IAAA3D,EACT1a,KAAK4d,aAAY,iBACrB,OAAO5d,KAAKoe,uBAAyB1D,IAAahH,GAASE,OAGtD,YAAA0K,mBAAP,WACE,OAAuD,IAAhDte,KAAK4d,aAAaxD,QAAQQ,mBAG3B,YAAA2D,gBAAR,WACQ,MAAuBve,KAAK4d,aAA1BxD,EAAO,UAAE3C,EAAO,UACxB,OACuB,MAArB2C,EAAQE,WAAqB,aAAcF,EAAQE,UAAW7C,EAAQxL,UAAY,GAAI,KAInF,YAAAuS,0BAAP,WACU,IAAApE,EAAYpa,KAAK4d,aAAY,QACrC,OAC4B,IAA1BxD,EAAQC,gBACuB,IAA9BD,EAAQQ,mBAA8B5a,KAAKue,mBAIzC,YAAAE,0BAAP,WACU,IAAArE,EAAYpa,KAAK4d,aAAY,QAC/Bc,GAA4C,IAA1BtE,EAAQC,gBAA2Bra,KAAKue,kBAEhE,OACGve,KAAKwe,8BAAgCE,IAA4C,IAAzBtE,EAAQwB,OAAOC,QACvE6C,IAAiD,IAA9BtE,EAAQQ,mBAIzB,YAAA+D,6BAAP,WACU,IAAAvE,EAAYpa,KAAK4d,aAAY,QACrC,OAAqC,IAA9BxD,EAAQQ,mBAA8BR,EAAQS,QAAQI,QAGvD,YAAA2D,2BAAR,WACE,IAAMC,EAAe7e,KAAK2e,+BAE1B,OAAO3e,KAAK8e,sBADG9e,KAAK4d,aAAaxD,QAAQwB,OACAE,eAAgB+C,IAGnD,YAAAC,sBAAR,SAA8BhD,EAAgC+C,GAC5D,IAAMtS,EAAQvM,KAAK4d,aAAanG,QAAQxL,UACxC,OAAgC,MAA5B6P,EAAexB,UAEfwB,EAAexB,WACf,IAAI5Y,KAAK6K,EAAM1K,cAAgB,GAAI0K,EAAMvK,WAAa,GAAIuK,EAAMwS,WAG7DF,QAAuCxe,IAAvByb,EAAeC,KAAqBD,EAAeC,IAAM,IAG3E,YAAAiD,0BAAP,WACE,OAAoD,IAA7Chf,KAAK4d,aAAanG,QAAQuC,gBAG5B,YAAAiF,cAAP,WACQ,MAAuBjf,KAAK4d,aAClC,OADe,UACA5D,gBADS,UACkBsB,gBAGrC,YAAA4D,kBAAP,WACE,IAAM9E,EAAUpa,KAAK4d,aAAaxD,QAClC,OACEpa,KAAKgf,8BACsB,IAA3B5E,EAAQkB,gBACRtb,KAAKmf,oBACqB,IAA1B/E,EAAQC,eACRra,KAAKue,qBACHve,KAAKwe,6BACLpE,EAAQwB,OAAOC,OACf7b,KAAK4e,+BAIJ,YAAAQ,kBAAP,WACQ,MAAuBpf,KAAK4d,aAAjBxD,EAAO,UACxB,OAC6B,IAFd,UAELJ,iBACmB,IAA3BI,EAAQkB,gBACW,IAAnBlB,EAAQqB,SACgB,IAAvBrB,EAAQsB,YAA2C,IAAvBtB,EAAQsB,aAMlC,YAAA2D,eAAP,WACE,OAAQrf,KAAK6d,mBAAmBH,cAG3B,YAAA4B,6BAAP,WACE,OAAOtf,KAAKqf,kBAAoBrf,KAAKmf,mBAGhC,YAAAI,mBAAP,WACE,OAAOvf,KAAKqf,mBAAqBrf,KAAKie,4BAGjC,YAAAuB,aAAP,W,MACE,QAAOxf,KAAK4d,aAAa1B,eAAeC,wBACkB,QAAtD,EAAAnc,KAAK4d,aAAa1B,eAAeC,6BAAqB,eAAEta,eAAgB,MAMvE,YAAAsd,gBAAP,WACE,IAAMxF,EAAY3Z,KAAK4d,aAAanG,QAAQzD,OAAO2F,UACnD,QAAOA,IACe,QAAlBA,EAAUhB,KAAmC,QAAlBgB,EAAUhB,KAAmC,QAAlBgB,EAAUhB,MAI/D,YAAA8G,sBAAP,WACE,OACGzf,KAAK4d,aAAanG,QAAQuC,gBAC3Bha,KAAKgf,6BACLhf,KAAK4d,aAAaxD,QAAQkB,gBAC1Btb,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBS,OAI9E,YAAA8W,0BAAP,WACE,OACE1f,KAAKyf,yBACLzf,KAAK4d,aAAa1B,eAAeM,aAAe7J,GAAWI,MAIxD,YAAA4M,iCAAP,WACE,OAAO3f,KAAK4d,aAAanG,QAAQuC,gBAAkBha,KAAK4d,aAAaxD,QAAQkB,gBAGxE,YAAAsE,6BAAP,WACU,IAAA1D,EAAmBlc,KAAK4d,aAAY,eAC5C,OACE5d,KAAK2f,qCACJzD,EAAeK,wBAA0BpU,EAAsBO,KAC9DwT,EAAeK,wBAA0BpU,EAAsBQ,QAI9D,YAAAkX,+BAAP,WACU,IAAAzF,EAAYpa,KAAK4d,aAAY,QACrC,OACG5d,KAAK4d,aAAanG,QAAQuC,iBAC1BI,EAAQkB,gBACTlB,EAAQqB,SAAW5S,EAAoBH,KAIpC,YAAAoX,wBAAP,WACQ,MAA8B9f,KAAK4d,aAAjCxD,EAAO,UAAE8B,EAAc,iBAC/B,OACGlc,KAAK2f,oCACJzD,EAAeK,wBAA0BpU,EAAsBS,QAC/DwR,EAAQC,eACRra,KAAKkf,qBACL9E,EAAQqB,SAAW5S,EAAoBD,OAItC,YAAAmX,qCAAP,WACE,OACE/f,KAAK2f,oCACL3f,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBS,OAI9E,YAAAoX,yBAAP,WACE,OACEhgB,KAAK+f,yCACJ/f,KAAK4d,aAAanG,QAAQuC,gBAAkBha,KAAKyf,0BAI/C,YAAAQ,oCAAP,WACE,OAC+C,IAA7CjgB,KAAK4d,aAAanG,QAAQuC,gBAC1Bha,KAAK+f,wCAIF,YAAAG,gCAAP,WACE,OAAOlgB,KAAK+f,wCAGP,YAAAI,8BAAP,WACE,IAAMtc,EAAY7D,KAAK4d,aAAa1B,eAAepc,aAAasgB,SAChE,OAAoB,MAAbvc,GAAqB,aAAaA,EAAW,IAAInC,MAAU,IAG7D,YAAA2e,gBAAP,WACE,YAAyChgB,IAAlCL,KAAK4d,aAAa3B,MAAM1C,OAK1B,YAAA+G,OAAP,WACE,MAA4D,MAArDtgB,KAAK4d,aAAa1B,eAAee,QAAQsD,SAK3C,YAAAC,iBAAP,WACE,OAC+C,IAA7CxgB,KAAK4d,aAAanG,QAAQuC,gBAC1Bha,KAAK2f,oCACL3f,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBQ,OAI9E,YAAA8X,eAAP,WACE,OAC+C,IAA7CzgB,KAAK4d,aAAanG,QAAQuC,gBAC1Bha,KAAK2f,oCACL3f,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBO,KAI9E,YAAAgY,gCAAP,WACE,IAAMC,EACJ3gB,KAAK2f,oCACL3f,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBO,IACnF,OAAO1I,KAAK+d,gCAAkC4C,GAGzC,YAAAC,kCAAP,WACE,IAAMD,EACJ3gB,KAAK2f,oCACL3f,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBQ,MACnF,OAAO3I,KAAK+d,gCAAkC4C,GAGzC,YAAAE,kCAAP,WACE,IAAMF,EACJ3gB,KAAK2f,oCACL3f,KAAK4d,aAAa1B,eAAeK,wBAA0BpU,EAAsBS,MACnF,OAAoD,IAA7C5I,KAAK4d,aAAanG,QAAQuC,gBAA2B2G,GAGvD,YAAAG,eAAP,WACQ,MAA8B9gB,KAAK4d,aAAjC1B,EAAc,iBACtB,OAC6B,IAFE,UAErBlC,gBACmC,MAA3Cha,KAAK4d,aAAaR,uBACsB,MAAxClB,EAAeC,uBACfD,EAAeC,sBAAsB4E,cAAgB,GACnD/gB,KAAK4d,aAAaR,wBAAwB2D,eAC5C7E,EAAeC,sBAAsB6E,kBACnChhB,KAAK4d,aAAaR,wBAAwB4D,kBAOzC,YAAAC,eAAP,WACQ,MAA8BjhB,KAAK4d,aAAjC1B,EAAc,iBACtB,OAC6B,IAFE,UAErBlC,gBACmC,MAA3Cha,KAAK4d,aAAaR,uBACsB,MAAxClB,EAAeC,wBACdD,EAAeC,sBAAsB4E,cAAgB,EACpD/gB,KAAK4d,aAAaR,wBAAwB2D,eAC1C7E,EAAeC,sBAAsB6E,iBACnChhB,KAAK4d,aAAaR,wBAAwB4D,mB,sCAzTvCE,GAAiB,oB,yBAAjBA,EAAiB,QAAjBA,EAAiB,qBADJ,S,EAA1B,GCJMC,GAAO,OACPC,GAAO,OACPC,GAAO,OACPC,GAAO,OACPC,GAAS,SAEf,eAEE,WAAoBC,GAApB,MACE,cAAO,K,OADW,EAAAA,qB,SADsB,iBAKnC,YAAAC,eAAP,WACE,MAAO,CACLC,GAAI1hB,KAAK2hB,cACTC,QAAS5hB,KAAK6hB,sBACdC,UAAW9hB,KAAK+hB,uBAIZ,YAAAJ,YAAR,WACE,IAAIK,EAAW,GAef,OAdIhiB,KAAKwhB,mBAAmBhB,mBAC1BwB,EAAWZ,GACFphB,KAAKwhB,mBAAmBf,iBACjCuB,EAAWX,GACFrhB,KAAKwhB,mBAAmBd,kCACjCsB,EAAWV,GACFthB,KAAKwhB,mBAAmBZ,oCACjCoB,EAAWT,QAEoDlhB,IAA/DL,KAAKwhB,mBAAmB7B,oCACxB3f,KAAKwhB,mBAAmBzD,iCAExBiE,EAAWb,IAENa,GAGD,YAAAH,oBAAR,WACE,GAAI7hB,KAAKwhB,mBAAmBX,oCAC1B,MAAO,qBAET,OAAQ7gB,KAAK2hB,eACX,KAAKR,GACH,MAAO,eACT,KAAKI,GACL,KAAKD,GACH,MAAO,kBACT,KAAKF,GACH,MAAO,uBACT,KAAKC,GACH,MAAO,kBACT,QACE,MAAO,KAIL,YAAAU,mBAAR,WACE,IAAItR,EAAS,GAMb,OALIzQ,KAAKwhB,mBAAmBV,iBAC1BrQ,EAAS,eACAzQ,KAAKwhB,mBAAmBP,mBACjCxQ,EAAS,gBAEJA,G,sCA1DEwR,GAAsB,W,yBAAtBA,EAAsB,QAAtBA,EAAsB,qBADT,S,EAA1B,CAC4C,I,0CCyC1B,YAAG,QAAmC,Q,mBAAnC,wG,sCAfP,uBACE,+CAEE,kFAA4C,yEAQ9C,OACF,OACA,uBACE,6BAGF,O,gCAjBW,0BAEP,yDAWO,kH,sCAgBX,uBACE,0CAEE,yFAAmD,yEAKrD,OACF,O,gCATW,0BAEP,6DAA8C,mC,sCAzCxD,qCACE,+BAIE,sEAA0B5hB,KAA1B,CAAqC,2DACb,MAGxB,6BAoBF,OACA,+BAIE,sEAA0BA,KAA1B,CAAqC,2DACb,MAGxB,6BAYF,OACF,O,sBA/CI,mDA6BA,oD,4GA4DI,8BAME,sFAQF,O,sBAZE,oCAA6B,8BAA7B,CAA6B,qCAA7B,CAA6B,yF,sCAtBnC,0BAOE,0BAAwB,uBAAY,OACpC,oCAGE,0FAIF,OACF,OAEA,uBACE,6BAiBF,O,gCAnCE,6MASE,uDAAwC,8BAQjC,wC,sCA3Bf,oCAGE,iFAKA,6BAuCF,O,sBA7CE,sCAA+B,+CAA/B,CAA+B,2B,uBA2D/B,QACG,YAAC,Q,0BAGF,QACE,QACF,Q,mBADE,sF,0BAEF,QACE,QAIF,Q,mBAJE,uO,0BALJ,QACE,iCAGA,iCAMF,Q,oCATiB,2DAGA,6C,0BATnB,YACE,QACA,iCAGA,iCAWF,Q,mBAfE,yNACe,4EAGA,qD,yBALjB,sB,mBAAI,kD,sCAqFA,oBACE,+BAME,kFAEF,OACF,O,sBALI,8CAA+B,mC,sCAdvC,oCAGE,sFAKA,6BAaF,O,sBAnBE,4CAAqC,6CAArC,CAAqC,sC,sCAxO3C,cACE,mNAGF,OAEA,wBAKE,2BAOE,uFAEF,OACF,OAEA,wBAOE,6BAsDF,OAEA,wBAQE,8BAkDF,OAEA,yBAOE,8BAmBF,OAEA,2BAOE,qCAIE,0EAGF,OACF,OAEA,2BAME,iCAGE,kFAIF,OACF,OAEA,2BAME,qCAGE,mFAIF,OACF,OAEA,wB,sBAME,8BAwBF,OAEA,4BACE,8BACA,8BACF,O,0EApPI,6DAA8C,uCAA9C,CAA8C,mCAA9C,CAA8C,+BAUhD,uCAAuC,sBAgEvC,gOADA,0HA4DA,4DAAkD,0BA4BlD,uCASE,wCAAyB,0BAQ3B,uCAOE,gDASF,uCAOE,iDAAkC,0BASpC,uCAA4C,yGCxMlD,kBAgCE,WACUud,EACAsE,EACAC,EACAC,EACAnU,GAJA,KAAA2P,eACA,KAAAsE,mBACA,KAAAC,0BACA,KAAAC,sBACA,KAAAnU,MA9BM,KAAAoU,iBAAmB7P,GACnB,KAAAjO,aAAe,KACf,KAAA+d,wBAA0BxW,GAC1B,KAAAyW,aAAerQ,GAGxB,KAAAsQ,2BAA6B,CAClCC,YAAa,SACbC,WAAY,SACZC,SAAU,UAEL,KAAAC,sBAAwB,EACxB,KAAAC,2BAA6B,SAC7B,KAAAC,sBAAwB,IACxB,KAAAC,2BAA6B,SAE7B,KAAAC,wBAAyB,EACzB,KAAAC,qBAAsB,EAEtB,KAAAC,wBAA0B,aAAU,IAAIxhB,KAAK,KAAM,EAAG,KACtD,KAAAyhB,sBAA8B,aAAU,IAAIzhB,MAYjD1B,KAAKyX,QAAUzX,KAAK4d,aAAanG,Q,OAG5B,YAAA5R,SAAP,WACE7F,KAAKmjB,sBAAwB,aAAU,IAAIzhB,MACvC1B,KAAKkjB,wBAA0B,aAAU,IAAIxhB,QAC/C1B,KAAKkjB,wBAA0B,aAAU,IAAIxhB,OAE/C1B,KAAKmjB,sBAAsBvhB,YAAY5B,KAAKmjB,sBAAsBthB,cAAgB,GAElF7B,KAAKgjB,uBAAyBhjB,KAAKojB,0BACnCpjB,KAAKijB,uBACHjjB,KAAKyX,QAAQmC,aAAe5Z,KAAKyX,QAAQqC,uBAAyBvH,GAAiBE,IAErFzS,KAAKqjB,gCAGA,YAAAC,cAAP,SAAqB7K,GACnBzY,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfzD,OAAQ,YAAF,eACDhU,KAAKyX,QAAQzD,QAAM,CACtByE,KAAI,OAKH,YAAA8K,gBAAP,SAAuB9S,GAChBA,EAIHzQ,KAAKwjB,iBAAiB/S,IAHtBA,EAASK,GACT9Q,KAAKyjB,mBAAcpjB,IAKrB,IAAI2T,EAAS,YAAH,eACLhU,KAAKyX,QAAQzD,QAAM,CACtBvD,OAAM,IAGJA,IAAWuD,EAAOyE,OAEpBzE,EAAS,YAAH,eACDA,GAAM,CACThD,YAAaP,EAAOO,eAIxBhR,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfzD,OAAM,IAERhU,KAAKiO,IAAIS,gBAGJ,YAAAgV,eAAP,SAAsB1S,GACpBhR,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfzD,OAAQ,YAAF,eACDhU,KAAKyX,QAAQzD,QAAM,CACtBhD,YAAW,OAKV,YAAA2S,oBAAP,SAA2BrM,GACzBtX,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfzD,OAAQ,YAAF,eACDhU,KAAKyX,QAAQzD,QAAM,CACtBsD,cAAa,OAKZ,YAAAsM,kBAAP,SAAyBhK,GACvB,IAAMpZ,EAAQ,YAAH,eACNR,KAAKyX,SAAO,CACfmC,YAAW,IAEb5Z,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAUjX,GAGtC,YAAAqjB,uBAAP,SAA8BhK,GAC5B7Z,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfoC,iBAAgB,KAIb,YAAAiK,2BAAP,SAAkChK,GAChC9Z,KAAKijB,oBAAsBnJ,IAAyBvH,GAAiBE,GAErEzS,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfqC,qBAAoB,IAGtB9Z,KAAKqjB,gCAGA,YAAAU,qBAAP,SAA4B/J,GAC1Bha,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfuC,eAAc,KAIX,YAAAgK,YAAP,SAAmB7J,GACjBna,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACf0C,MAAK,KAIF,YAAA8J,yBAAP,SAAgChY,GAC9BjM,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfxL,UAAS,IAEPA,GACFjM,KAAKkkB,eAAejY,IAIjB,YAAAkY,oBAAP,SAA2BjK,GACzBla,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfyC,cAAa,KAIV,YAAAkK,uBAAP,SAA8BC,GAC5BrkB,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfwC,aAAc,YAAF,eACPja,KAAKyX,QAAQwC,cAAY,CAC5BxB,KAAM4L,MAIVrkB,KAAKgjB,uBAAyBhjB,KAAKojB,2BAG9B,YAAAkB,mBAAP,SAA0BrK,GACxBja,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfwC,aAAY,KAIR,YAAAmJ,wBAAR,WACE,OAAOpjB,KAAKyX,QAAQwC,aAAaxB,OAAS5M,GAAwBG,UAG5D,YAAAqX,6BAAR,WACE,IAAiC,IAA7BrjB,KAAKyX,QAAQmC,kBAA8DvZ,IAAtCL,KAAKyX,QAAQqC,qBAAtD,CAIA,IAAiC,IAA7B9Z,KAAKyX,QAAQmC,aAAwB5Z,KAAKyX,QAAQzD,OAAO2F,UAAW,CACtE,IAAMA,EAAY3Z,KAAKyX,QAAQzD,OAAO2F,UAEtC,GAAsB,QAAlBA,EAAUhB,KAAmC,MAAlBgB,EAAUjB,IAKvC,OAJA1Y,KAAK4iB,sBAAwB5iB,KAAKijB,oBAAsB,GAAK,GAC7DjjB,KAAK6iB,2BAA6B,SAClC7iB,KAAK8iB,sBAAwB,SAC7B9iB,KAAK+iB,2BAA6B,UAGpC,GAAsB,QAAlBpJ,EAAUhB,KAAmC,QAAlBgB,EAAUhB,IAKvC,OAJA3Y,KAAK4iB,sBAAwB,EAC7B5iB,KAAK6iB,2BAA6B,SAClC7iB,KAAK8iB,sBAAwB9iB,KAAKijB,oBAAsB,GAAK,QAC7DjjB,KAAK+iB,2BAA6B,UAKtC/iB,KAAK4iB,sBAAwB,EAC7B5iB,KAAK8iB,sBAAwB,IAC7B9iB,KAAK6iB,2BAA6B7iB,KAAK+iB,2BAA6B,WAG9D,YAAAS,iBAAR,SAAyB/S,GAAzB,WACEzQ,KAAKoiB,oBACFpO,OAAOvD,EAAQO,aACfpK,WAAU,SAAC+S,GACV,EAAK8J,cAAc9J,OAIjB,YAAA8J,cAAR,SAAsB9J,GACpB3Z,KAAK4d,aAAanG,QAAUzX,KAAKyX,QAAU,YAAH,eACnCzX,KAAKyX,SAAO,CACfzD,OAAQ,YAAF,eACDhU,KAAKyX,QAAQzD,QAAM,CACtB2F,UAAS,MAGb3Z,KAAKqjB,gCAGA,YAAAa,eAAP,SAAsBjY,GACpBjM,KAAKkiB,iBAAiBqC,uCACpBvkB,KAAKmiB,wBAAwB/R,iBAAiBnE,KAIlD,sBAAW,2BAAY,C,IAAvB,WACE,IAAM0N,EAAY3Z,KAAK4d,aAAanG,QAAQzD,OAAO2F,UACnD,OAAOA,EAAYA,EAAU5I,MAAQ,I,sEApP5ByT,GAAgB,kD,uBAAhBA,EAAgB,oD,MAAA,K,mEAJhB,CAAC,MAAwB,+mFD5BtC,mBACE,+BAqQF,S,wMC5OA,G,sMChBQ,2BAKE,4EASF,OACA,6BAIE,sEAYF,O,sBA9BE,yBAAuB,4BAAvB,CAAuB,uBAAvB,CAAuB,qBAAvB,CAAuB,8CAiBvB,oCAAqB,2BAArB,CAAqB,SAArB,CAAqB,eAArB,CAAqB,iE,sCAgBvB,2BAIE,4EAUF,O,sBAbE,yBAAuB,4BAAvB,CAAuB,uBAAvB,CAAuB,qBAAvB,CAAuB,8C,0BApC3B,gCAkCA,0C,4BAlCa,uBAAgB,eCGnC,+BAMkB,KAAAC,QAAS,EAET,KAAAC,SAAU,EAEV,KAAAC,YAA2B,KAC3B,KAAAC,SAAU,EAET,KAAArf,YAAc,IAAI,IAE5B,KAAAsf,SAAW,GACX,KAAAC,OAAS,GACT,KAAAC,QAAU,IAAIrjB,KACd,KAAAsjB,QAAU,IAAItjB,KACd,KAAAujB,iBAAmB,SACnB,KAAAC,aAAe,SACf,KAAAC,OAAS,GACT,KAAAC,YAAc,S,OAEd,YAAAvf,SAAP,WACE,IAAMwf,EAAI,IAAI3jB,KAAK1B,KAAKiM,WACxBoZ,EAAEzjB,YAAYyjB,EAAExjB,cAAgB,IAChC7B,KAAK+kB,QAAUM,GAGV,YAAAtf,YAAP,WACM/F,KAAKykB,SACPzkB,KAAK8kB,OAAS,QACd9kB,KAAKilB,iBAAmB,UAE1BjlB,KAAK6kB,SAAW,mBAAmB7kB,KAAK8kB,OAAM,qBAC9C,IAAME,EAAU,IAAItjB,KAAK1B,KAAKiM,WAC9B+Y,EAAQpjB,YAAYojB,EAAQnjB,cAAgB,GAAImjB,EAAQhjB,WAAa,IAEjEhC,KAAK2kB,aACP3kB,KAAKglB,QAAUhlB,KAAK2kB,YACpB3kB,KAAKmlB,OAAS,aAAanlB,KAAK2kB,YAAa3kB,KAAKiM,WAC9CjM,KAAKmlB,OAAS,KAChBnlB,KAAKmlB,OAAS,GACdnlB,KAAKglB,QAAUA,GAEZ,aAAchlB,KAAK2kB,YAAa3kB,KAAKiM,UAAW,GAAI,MACvDjM,KAAKolB,YAAcplB,KAAKklB,aAAe,YAGzCllB,KAAKglB,QAAUA,EACfhlB,KAAKolB,YAAcplB,KAAKklB,aAAe,SACvCllB,KAAKmlB,OAAS,KAIX,YAAAG,OAAP,SAAcvJ,GACZ/b,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbub,IAAG,MAIA,YAAAwJ,aAAP,SAAoBjL,GAClBta,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACb8Z,UAAS,MAIN,YAAAkL,OAAP,WACE,GAAKxlB,KAAKQ,MAAM8Z,WAActa,KAAKiM,UAGnC,OAAO,aAAajM,KAAKQ,MAAM8Z,UAAWta,KAAKiM,Y,sCArEtCwZ,I,uBAAAA,EAAuB,oxBDjBpC,UACE,wBAOE,6BAqDF,OACF,Q,MA5DI,oCAAqB,uB,4HCUzB,G,sCCHM,mCAKE,uEACD,O,qBAHC,+BAAwB,0BCRhC,+BAOkB,KAAAf,SAAU,EAEV,KAAAjN,QAAU,GACV,KAAAmN,SAAU,EACV,KAAAD,YAA2B,KAC3B,KAAAe,kBAAmB,EAGlB,KAAAngB,YAAc,IAAI,IAEnB,KAAAhB,aAAe,K,OAExB,YAAAohB,SAAP,SAAgB9J,GACd7b,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbqb,MAAK,MAIF,YAAA+J,kBAAP,SAAyB9J,GACvB9b,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbsb,eAAc,M,sCAxBP+J,I,uBAAAA,EAAe,oiBDT5B,UACE,sB,oCAOE,6BASF,OACA,kCAIE,uCAAe,EAAAD,kBAAA,MAMjB,OACF,Q,MA3BI,kJAGC,kCAcD,sEAA4D,oBAA5D,CAA4D,+BAA5D,CAA4D,wBAA5D,CAA4D,+B,kHCfhE,G,sCCDM,0BAIE,4DAAqB,YAAaE,MAGpC,O,qBANE,mCAA4B,8B,sCAW9B,0BAIE,4DAAqB,QAASA,MAE/B,OACD,YACE,gQAGF,O,qBAVE,+BAAwB,0BCJhC,IAAMC,GAAwC,CAC5C,CAAEvlB,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,MAAOQ,MAAO,UACvB,CAAER,MAAO,IAAKQ,MAAO,YACrB,CAAER,MAAO,IAAKQ,MAAO,aAGjBglB,GAA8C,CAClD,CAAExlB,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,MAAOQ,MAAO,UACvB,CAAER,MAAO,IAAKQ,MAAO,aAGvB,cAgDE,WAAYilB,GAzCK,KAAA1gB,YAAc,IAAI,IAEnB,KAAA2gB,UAAW,EACX,KAAAC,WAAa,GACb,KAAA9a,UAAW,EACX,KAAA+a,OAAQ,EAEjB,KAAAC,WAAa,GACb,KAAAC,eAAiB,GAEjB,KAAAnH,iBAAkB,EAElB,KAAAoH,iBAAmC,GAEnC,KAAAC,aAA+B,CACpC,CAAEhmB,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,KAAMQ,MAAO,SACtB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,IAAKQ,MAAO,QACrB,CAAER,MAAO,MAAOQ,MAAO,UACvB,CAAER,MAAO,IAAKQ,MAAO,YACrB,CAAER,MAAO,IAAKQ,MAAO,YACrB,CAAER,MAAO,kBAAmBQ,MAAO,8CAInChB,KAAKmf,gBAAkB8G,EAAkB9G,kBACzCnf,KAAKumB,iBAAmBvmB,KAAKmf,gBACzB4G,GACAC,G,OAGC,YAAAngB,SAAP,WACM7F,KAAKomB,QACPpmB,KAAKwmB,aAAexmB,KAAKwmB,aAAaC,MAAM,GAAI,GAChDzmB,KAAKumB,iBAAmBvmB,KAAKumB,iBAAiBE,MAAM,GAAI,IAEtDzmB,KAAKkmB,UACPlmB,KAAKqmB,WACH,+GACFrmB,KAAKsmB,eACH,uHAEFtmB,KAAKsmB,eAAiB,qGAAqGtmB,KAAKmmB,WAAU,eAC1InmB,KAAKqmB,WAAa,+FAA+FrmB,KAAKmmB,WAAU,iBAI7H,YAAAO,IAAP,SAAWC,EAAgBnmB,G,MACzBR,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,SAAK,MACZmmB,GAAOnmB,EAAK,M,sCArENomB,GAAoB,W,uBAApBA,EAAoB,ocDnDjC,UACE,sBACE,6BAUF,OACA,sBACE,6BAcF,OACF,Q,MA5Ba,0CAA2B,uBAY3B,sCAAuB,sBAAvB,CAAuB,+B,0FCiCpC,G,wHC1BY,uBACE,4BAIE,4EAWF,OACF,O,sBAfI,iCAAuB,8BAAvB,CAAuB,4BAAvB,CAAuB,0BAAvB,CAAuB,+B,sCAb/B,oCAGE,gFAOA,6BAoBF,O,sBA5BE,wCAAiC,iDAAjC,CAAiC,mC,sCAuCnC,4BAEE,0EACD,O,sBAFC,mC,sCAwEU,uBAGE,oCAIE,oFAGF,OACF,O,sBALI,oDAAqC,2B,sCAf7C,oCAIE,2EAIA,6BAcF,O,sBAnBE,mCAA4B,4BAA5B,CAA4B,mD,uBALlC,uBACE,6BAyBF,Q,sCAnCJ,oCAIE,gFAIA,6BA6BF,O,sBAlCE,wCAAiC,4CAAjC,CAAiC,2B,uFAyD7B,0B,qBAME,qCACE,+BAIE,oEAA4B,SAAUd,MAExC,OACA,+BAIE,oEAA4B,cAAeA,MAI7C,OACA,+BAIE,oEAA4B,WAAYA,MAE1C,OACA,+BAIE,oEAA4B,SAAUA,MAExC,OACF,OACF,OACA,yBAKE,uEAMF,O,gCAjDE,4FASI,iDAOA,sDAAuC,mDAAvC,CAAuC,+BASvC,mDAOA,iDAOJ,uCAAwB,wBAAxB,CAAwB,wCAAxB,CAAwB,yBAAxB,CAAwB,yBAAxB,CAAwB,gCAAxB,CAAwB,2DAAxB,CAAwB,yD,sCAuB1B,yBAKE,uEACD,O,sBALC,+BAAwB,wBAAxB,CAAwB,yBAAxB,CAAwB,iB,sCAX9B,+BAKE,uEAA+B,KAA/B,CAAsC,wEACLzlB,MAGjC,6BASF,O,sBAdE,kD,sCAgBA,+BAKE,uEAA+B,KAA/B,CAAsC,wEACLA,MAEnC,O,sBAJE,kD,sCAvFN,qCACE,+BAKE,uEAA+B,KAA/B,CAAqC,wEACJA,MAEjC,8BAqDF,OACA,sCAmBA,0CAWF,O,gCAxFI,yDAiEC,kDAAuC,e,sCAmC5C,oCAKE,iFACD,O,sBAHC,+BAAwB,qC,sCAO9B,8BAIE,mE,eAED,O,uCAJC,sDAA6C,qBAA7C,CAA6C,2B,sCA0BnC,2BAIE,6EAED,O,sBALC,oCAA6B,iC,uBALnC,uBAGE,6BASF,Q,sCArBJ,oCAIE,yEAIA,6BAeF,O,sBApBE,iCAA0B,0BAA1B,CAA0B,uC,uHA5RhC,wBAME,6BAiCF,OAEA,wBAME,6BAMF,OAEA,wB,qBASE,6BAKE,4EAOF,OACF,OAEA,yB,sBAME,oCAIE,yEAED,OACH,OAEA,2BAME,8BAwCF,OAEA,2B,sBAQE,8BAgGF,OAEA,2BAOE,8BASF,OAEA,sCAQA,2BAME,8BA0BF,OAEA,4BAGE,2EACD,OAED,4BACE,8BACA,8BACA,8BACF,O,+FA7TE,8BAyCA,uCAcA,uCAA4B,gIAY1B,6CAA8B,QAA9B,CAA8B,SAA9B,CAA8B,+BAYhC,uCAAmC,+FAQjC,0CAA2B,4BAO7B,uCAgDA,uCAAiC,mGA0GjC,uCAAgC,iCAkB/B,uFASD,4CAiCA,uCAAoC,gCCnS1C,kBAmCE,WACUwmB,EACAjJ,EACA4D,GAFA,KAAAqF,kBACA,KAAAjJ,eACA,KAAA4D,qBAjCH,KAAApc,YAAa,EACb,KAAA0hB,aAAe,GAMf,KAAAC,aAAe,IAAIrlB,KAAK,KAAM,EAAG,GAEjC,KAAAslB,4BAA6B,EAEpB,KAAAziB,aAAe,KACf,KAAA0iB,qBAAuBljB,EACvB,KAAAmjB,eAAiB5T,GACjB,KAAA6T,gBAAkBxT,GAClB,KAAAyT,cAAgBne,GAChB,KAAAoe,kBAAoC,CAClD,CAAE7mB,MAAO,EAAGQ,MAAO,mBACnB,CAAER,MAAO,EAAGQ,MAAO,OACnB,CAAER,MAAO,EAAGQ,MAAO,4BAgBnB,IAAMsmB,EAAe,aAAU,IAAI5lB,MACnC4lB,EAAavlB,SAASulB,EAAatlB,WAAa,IAChDslB,EAAa1lB,YAAY0lB,EAAazlB,cAAgB,IACtD7B,KAAKsnB,aAAeA,EACpBtnB,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QACjCpa,KAAKiM,UAAYjM,KAAK4d,aAAanG,QAAQxL,UAC3CjM,KAAKga,eAAiBha,KAAK4d,aAAanG,QAAQuC,eAEhD,IAAML,EAAY3Z,KAAK4d,aAAanG,QAAQzD,OAAO2F,UACnD3Z,KAAK8mB,aAAenN,EAAYA,EAAU5I,MAAQ,GAClD/Q,KAAKgnB,2BAA6BhnB,KAAKunB,8B,OAvBzC,sBAAW,wBAAS,C,IAApB,WACE,OAAOvnB,KAAKwhB,mBAAmBhD,6B,gCAGjC,sBAAW,gCAAiB,C,IAA5B,WACE,OAAOxe,KAAKwhB,mBAAmBtC,qB,gCAqB1B,YAAArZ,SAAP,WACE7F,KAAKoF,WAAapF,KAAK6mB,gBAAgB1Y,SAGlC,YAAAqZ,iBAAP,SAAwBnN,GACtBra,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfC,cAAa,KAIV,YAAAkL,aAAP,SAAoBjL,GAClBta,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfE,UAAS,KAIN,YAAAmN,aAAP,SAAoBlN,GAClBva,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfG,UAAS,KAIN,YAAAmN,cAAP,SAAqBzlB,GACnBjC,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfnY,WAAU,KAIP,YAAA0lB,WAAP,SAAkBnN,GAChBxa,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfI,QAAO,KAIJ,YAAAoN,iBAAP,SAAwBnN,GACtBza,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfK,cAAa,KAIV,YAAAoN,YAAP,SAAmBnN,GACjB1a,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfM,SAAQ,IAGV1a,KAAKgnB,2BAA6BhnB,KAAKunB,+BAGlC,YAAAO,qBAAP,SAA4BnN,GAC1B3a,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfO,kBAAiB,KAId,YAAAoN,qBAAP,SAA4BnN,GAC1B5a,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfQ,kBAAiB,KAIK,IAAtBA,IACoB,IAApB5a,KAAKgoB,aACuC,IAA5ChoB,KAAK4d,aAAaxD,QAAQC,cAE1Bra,KAAK4d,aAAaxD,QAAQwB,OAAS,YAAH,eAC3B5b,KAAK4d,aAAaxD,QAAQwB,QAAM,CACnCC,OAAO,EACPC,eAAgB,YAAF,eACT9b,KAAK4d,aAAaxD,QAAQwB,OAAOE,gBAAc,CAClDxB,UAAWta,KAAKoa,QAAQE,eAGG,IAAtBM,IAAkD,IAApB5a,KAAKgoB,aAC5ChoB,KAAK4d,aAAaxD,QAAQwB,OAAS,YAAH,eAC3B5b,KAAK4d,aAAaxD,QAAQwB,QAAM,CACnCC,WAAOxb,EACPyb,eAAgB,YAAF,eACT9b,KAAK4d,aAAaxD,QAAQwB,OAAOE,gBAAc,CAClDxB,UAAW,WAMZ,YAAA2N,WAAP,SAAkBtB,EAAgCnmB,G,MAChDR,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfS,QAAS,YAAF,eACF7a,KAAKoa,QAAQS,UAAO,OACtB8L,GAAOnmB,EAAK,OAKZ,YAAAwnB,SAAP,WACE,OACiC,IAA/BhoB,KAAKoa,QAAQC,eACb,aAAcra,KAAKoa,QAAQE,UAAYta,KAAKiM,UAAY,GAAI,KAIzD,YAAAic,kBAAP,SAAyB5M,GACvBtb,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfkB,eAAc,KAIX,YAAA6M,MAAP,SAAa3M,GACXxb,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfoB,GAAE,KAIC,YAAA4M,UAAP,SAAiB3M,GACfzb,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfqB,OAAM,KAIV,sBAAW,6BAAc,C,IAAzB,WACE,OAA+B,IAAxBzb,KAAKoa,QAAQqB,QAAwC,IAAxBzb,KAAKoa,QAAQqB,Q,gCAG5C,YAAA4M,cAAP,SAAqB3M,GACnB1b,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfsB,WAAU,KAIP,YAAA4M,UAAP,SAAiB1M,GACf5b,KAAKoa,QAAUpa,KAAK4d,aAAaxD,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACfwB,OAAM,KAIF,YAAA2L,4BAAR,WACE,OAAOvnB,KAAKoa,QAAQM,WAAahH,GAASE,OAGrC,YAAA2U,eAAP,SAAsBvM,GACpBhc,KAAK4d,aAAaxD,QAAUpa,KAAKoa,QAAU,YAAH,eACnCpa,KAAKoa,SAAO,CACf4B,YAAW,K,sCA7MJwM,GAAgB,8B,uBAAhBA,EAAgB,itHDxB7B,mBACE,+BAiUF,S,0MC9SA,G,aC+HA,cAEE,WACUhH,EACA5D,EACA6K,EACAC,EACAC,GAJA,KAAAnH,qBACA,KAAA5D,eACA,KAAA6K,mBACA,KAAAC,kBACA,KAAAC,yB,OAGF,YAAAC,iBAAR,W,MvCrHsCpoB,EwCrCEqoB,ED2J9B3M,EAAmBlc,KAAK4d,aAAY,eAE5C,MAAO,CACLkL,aAAc5M,EAAeK,sBACzBL,EAAeK,sBACfpU,EAAsBS,MAC1BmgB,UACE7M,EAAeK,wBAA0BpU,EAAsBO,IAC3D,aAA4BwT,EAAeS,wBAC3Ctc,EACN2oB,YACE9M,EAAeK,wBAA0BpU,EAAsBQ,MAC3D,aAA4BuT,EAAeS,wBAC3Ctc,EACN4oB,SACEjpB,KAAKwhB,mBAAmB1B,2BACxB9f,KAAKwhB,mBAAmBpC,oBACpBlD,EAAeY,qBACfzc,EACN6oB,2BACElpB,KAAKwhB,mBAAmB1B,2BACxB9f,KAAKwhB,mBAAmBpC,sBACsD,QAA3E,EAACpf,KAAK2oB,uBAAuBle,cAAcyR,EAAeW,yBAAiB,aAC1Exc,EACN8oB,iBACEnpB,KAAKwhB,mBAAmB1B,2BACxB9f,KAAKwhB,mBAAmBpC,qBCrLUyJ,EDsLJ3M,EAAeW,iBCpL5CgM,EAAeO,QAAQ,kBAAmB,WDqLvC/oB,EACNgpB,kBAAmBrpB,KAAKwhB,mBAAmBxB,4BvCnJTxf,EuCoJN0b,EAAea,evCnJ9B,IAAVvc,EAAiB,KAAO,WuCoJvBH,EACJipB,eAAgBtpB,KAAKwhB,mBAAmBvB,sCACpC,aAAmB/D,EAAeI,UAClCjc,IAID,YAAAkpB,gBAAP,WACE,I9B7GuB5iB,E8B6GjB6iB,EAAOxpB,KAAKypB,UACZ,EAAuCzpB,KAAK4d,aAAjC1B,EAAc,iBAAEzE,EAAO,UAClCiS,E9BpGH,SACLC,EACAC,EACAva,EACAqa,GAEA,OAAO,YAAP,eACK,aAAgBC,EAAUC,EAASva,IAAU,CAChDwa,eAAgBH,EAAWA,EAASI,iBAAczpB,I8B4FjC0pB,CACf7N,EAAepc,aACfE,KAAK0oB,iBAHQ,UAIJrO,cACTra,KAAKyoB,iBAAiBiB,UAElBM,EAEHhqB,KAAKwhB,mBAAmB7B,qCACtB3f,KAAKwhB,mBAAmB3B,kCAC3B7f,KAAKwhB,mBAAmB1B,2BACxB9f,KAAKwhB,mBAAmBpC,oBAE1B,OAAO,YAAP,eACKoK,GAAI,CACPE,SAAQ,EACRO,SAAU,YAAF,eACHT,EAAKS,UAAQ,CAChBC,aAC6B,IAA3BzS,EAAQuC,eAA0B,aAAmBkC,EAAeI,UAAQjc,EAC9E8pB,QAASjO,EAAeja,WACxBmoB,cAAepqB,KAAKwhB,mBAAmBxD,mCACnC,aAAc9B,EAAeC,4BAC7B9b,EACJgqB,IAAKnO,EAAeG,qBACpBvM,SAAU9P,KAAKwhB,mBAAmB/B,wBAC9Bzf,KAAKwhB,mBAAmB9B,4BACtBhQ,GACEwM,EAAeM,WACfN,EAAeO,eACfP,EAAeQ,oBAEjBhN,GAAYwM,EAAeM,iBAC7Bnc,EACJ4Q,KAAMjR,KAAKwhB,mBAAmBrC,kBAAoBjD,EAAeE,WAAQ/b,IAE3EiqB,SAAU,YAAF,eACHd,EAAKc,UAAQ,CAChBC,OAAQvqB,KAAKwhB,mBAAmB3B,iCAC5B,CACE2K,IAAK,aAA4BtO,EAAeS,yBAElDtc,IAENoqB,gBAAiBT,EAAkBhqB,KAAK4oB,wBAAqBvoB,EAC7D4c,QAASjd,KAAKwhB,mBAAmBlB,U9B5JZ3Z,E8B4JkCuV,EAAee,Q9B3JnE,CACLyN,KAAM/jB,EAAKgkB,SACXC,IAAKjkB,EAAKkkB,e8ByJyExqB,EACjFyqB,uBAAwB9qB,KAAKwhB,mBAAmBrB,gCAC5ChR,GAA0B+M,EAAec,gBAAgBxU,yBACzDnI,EACJ0qB,aAAc/qB,KAAKwhB,mBAAmBnC,oBAInC,YAAAoK,QAAP,WACQ,IrCjPmBlP,EqCiPnB,EAA8Bva,KAAK4d,aAAjCnG,EAAO,UAAE2C,EAAO,UAAE6B,EAAK,QAC/B,MAAO,CACL+O,MAAO,aAAcvT,EAAQxL,WAC7Bgf,YAAajrB,KAAKwhB,mBAAmBtD,uBACjC,aAAc9D,EAAQE,gBACtBja,EACJuhB,QAASnK,EAAQuC,eAAiB,EAAI,EACtCkR,WAAY9Q,EAAQC,cAAgB,EAAI,EACxC8Q,UAAWnrB,KAAKwhB,mBAAmBjC,qBAAuBtD,EAAM5C,gBAAkB,EAClF+R,aAAc,IACdC,YAAapP,EAAM3C,UACnBgS,MAAOtrB,KAAKurB,YACZjB,SAAUtqB,KAAKwrB,eACfC,SAAUzrB,KAAKwhB,mBAAmBpD,sBAAwBpe,KAAK0rB,oBAAiBrrB,EAChF4pB,SAAUjqB,KAAK2rB,eACfC,SAAU,CACRC,iBAAgB7rB,KAAKwhB,mBAAmBlC,gCACpCrD,EAAMvC,mBAGZoS,arCrQuBvR,EqCqQGH,EAAQG,UrCpQ/B,CACLrP,QAASqP,EAAUrP,QACnBC,SAAgC,IAAtBoP,EAAUrP,QAAgBqP,EAAUpP,cAAW9K,EACzD+K,SAAgC,IAAtBmP,EAAUrP,QAAgBqP,EAAUnP,cAAW/K,MqCqQnD,YAAAmrB,aAAR,WACU,IAAApR,EAAYpa,KAAK4d,aAAY,QACrC,MAAO,CACLmO,kBAAmB/rB,KAAKwhB,mBAAmBvC,gBAAkB7E,EAAQoB,GAAGlC,eAAYjZ,EACpF2rB,YACEhsB,KAAKwhB,mBAAmBvC,iBAAmBjf,KAAKwhB,mBAAmBrC,kBAC/D/E,EAAQoB,GAAGjC,WACXlZ,EACN4rB,cAAejsB,KAAKwhB,mBAAmBxC,4BACnC5E,EAAQkB,oBACRjb,EACJ6rB,QAASlsB,KAAKwhB,mBAAmBtC,oBAAsB9E,EAAQqB,YAASpb,EACxEqb,YACE1b,KAAKwhB,mBAAmBtC,qBACJ,IAAnB9E,EAAQqB,QAAmC,IAAnBrB,EAAQqB,YAE7Bpb,EADA+Z,EAAQsB,aAKV,YAAAgQ,aAAR,WACU,IAAAtR,EAAYpa,KAAK4d,aAAY,QACrC,MAAO,CACLuO,IAAKnsB,KAAKwhB,mBAAmBpD,sBAAwBhE,EAAQM,cAAWra,EACxE+rB,WAAYpsB,KAAKwhB,mBAAmBnD,+BAChCjE,EAAQO,uBACRta,IAIA,YAAAkrB,UAAR,WACU,IAAAtP,EAAUjc,KAAK4d,aAAY,MAC7BuB,EAAkBnf,KAAKwhB,mBAAmBrC,kBAC1CE,EAAiBrf,KAAKwhB,mBAAmBnC,iBAE/C,MAAO,CACLgN,oBACEhN,IAAkBF,IAAkBlD,EAAM1C,QAAUJ,GAAemT,KACrEC,mBAAkBlN,GAAiBpD,EAAM1C,QAAUJ,GAAeqT,KAClEC,2BAA4BxQ,EAAMxC,YAClCiT,2BAA4BvN,EAAkBlD,EAAMzC,iBAAcnZ,IAI9D,YAAAsrB,aAAR,WACQ,MAAuB3rB,KAAK4d,aAA1BnG,EAAO,UAAE2C,EAAO,UACxB,MAAO,CACLuS,YAAalV,EAAQmC,YACjB,CACEpZ,MAAOiX,EAAQoC,iBACfpB,KAAMhB,EAAQqC,uBAAyBvH,GAAiBE,GAAK,KAAO,WAEtEpS,EACJusB,IAAKnV,EAAQzD,OAAOvD,OAAQO,YAAYJ,IACxCic,IAAKpV,EAAQzD,OAAOvD,OAAQO,YAAYH,IACxCic,OAAQ,CACNnd,IAAK8H,EAAQ0C,MACb4S,cAAe,CACbrpB,KAAM+T,EAAQyC,cAAcxW,KAC5ByM,WAAYsH,EAAQyC,cAAczW,IAClCyM,kBAAc7P,EACd4P,YAAQ5P,IAGZ2sB,mBAAoB5S,EAAQnY,WAC5BgrB,WAAY7S,EAAQI,QACpB0S,SAAUltB,KAAKwhB,mBAAmBvD,2BAC9B,CACEkP,OAAQ1V,EAAQwC,aAAa5N,cAAiB,EAC9C+gB,KAAM3V,EAAQwC,aAAa3N,YAAe,QAE5CjM,EACJgtB,YAAartB,KAAKstB,aAClBC,QAASvtB,KAAKwtB,wBAIV,YAAAF,WAAR,WACE,IAAM7c,EAAS,GACf,GAAIzQ,KAAKwhB,mBAAmBlD,qBAAsB,CAEnC,IAAAzD,EACT7a,KAAK4d,aAAY,gBACjB/C,EAAQC,QACVrK,EAAO3K,KAAK,MAEV+U,EAAQE,aACVtK,EAAO3K,KAAK,MAEV+U,EAAQG,UACVvK,EAAO3K,KAAK,QAEV+U,EAAQI,QACVxK,EAAO3K,KAAK,QAGhB,OAAO2K,GAGD,YAAA+c,oBAAR,WACE,IAAKxtB,KAAKwhB,mBAAmB/C,4BAC3B,MAAO,GAET,IAAMhO,EAAmB,GAIXqL,EAEV9b,KAAK4d,aAAY,8BAWrB,OATAnN,EAAO3K,KAAK,CACVmlB,YAC8B,MAA5BnP,EAAexB,eAAoBja,EAAY,aAAcyb,EAAexB,WAC9EmT,MACEztB,KAAKwhB,mBAAmB7C,gCAAkC7C,EAAeC,IACrED,EAAeC,SACf1b,IAGDoQ,G,sCAzPEid,GAAoB,iD,yBAApBA,EAAoB,QAApBA,EAAoB,qBADP,S,EAA1B,GE/IA,eAEE,WAAoBC,EAAsCvgB,GAA1D,MACE,YAAMA,IAAS,K,OADG,EAAAugB,iB,SADa,iBAKvB,YAAAvc,SAAV,WACE,OAAOpR,KAAK2tB,eAAelE,W,sCANlBmE,GAAa,qB,yBAAbA,EAAa,QAAbA,EAAa,qBADA,S,EAA1B,CACmC,K,uBCJjC,0BACE,6FACF,Q,uBAgBM,gBACE,aAAI,sCAA2B,OAC/B,aAAI,0BAAe,OACnB,aAAI,0EAA4D,OAClE,Q,sCAhBJ,yBAKE,oGAAiD,+DACxBvtB,MAKzB,+BAOF,O,qBAdE,+DAAwD,wE,uBAyBtD,gBACE,aAAI,sCAA2B,OAC/B,aAAI,0BAAe,OACrB,Q,uBAsBM,gBACE,aAAI,2DAA6C,OACjD,aAAI,qDAAuC,OAC3C,aAAI,yDAA2C,OACjD,Q,sCAGA,2BAGE,8EAKF,O,sBAPE,qCAA8B,gC,sCApBpC,yBAIE,mFAA+B,4DACVA,MAMrB,+BAOA,gCAWF,O,sBA1BE,6CAAsC,wD,uBAsCpC,YAAG,qDAAuC,OAC1C,gBACE,aAAI,oBAAS,OACb,aAAI,8BAAmB,OACvB,aAAI,wBAAa,OACjB,aAAI,sCAAuB,OAC3B,cAAI,uBAAW,OACjB,Q,sCAGA,2BAGE,8EAKF,O,sBAPE,qCAA8B,gC,sCAvDxC,QACE,yBAAwB,4BAAiB,OACzC,+BACE,gCA8BA,yBAIE,mFAA+B,4DACVA,MAKrB,gCAUA,gCAWF,OACF,OACF,O,sBAhEqB,4BAUd,uCA6BD,2EALA,6CAAsC,wD,uBA4CpC,gBACE,aAAI,wDAA6C,OACnD,Q,sCAdR,QACE,uBAAc,6BAAkB,OAChC,+BACE,yBAIE,oFAIA,+BAKF,OACF,OACF,O,sBAhBqB,4BAIf,kDAAmC,6D,0BA1EzC,iCAoEA,kC,kBApEe,+CAoEA,qDChGrB,IAEMwtB,GAAqB,YACrBC,GAAqB,YACrBC,GAAiC,wBAEvC,cA2CE,WACUC,EACDC,EACChgB,EACAigB,EACAC,EACA3M,GALA,KAAAwM,qBACD,KAAAC,gBACC,KAAAhgB,MACA,KAAAigB,oBACA,KAAAC,UACA,KAAA3M,qBA3CM,KAAAnI,gBAAkB,GAEjB,KAAA9T,YAAc,IAAI,IAE5B,KAAA6oB,YAA6B/tB,EAE7B,KAAAguB,iBAA8C,GAMrC,KAAA/U,UAAYJ,GACZ,KAAAK,MAAQJ,GAEhB,KAAAmV,oBAAsBC,GAAA,EAAaC,MACnC,KAAAC,0BAA4BF,GAAA,EAAaC,MACzC,KAAAE,yBAA2BH,GAAA,EAAaC,MAEzC,KAAAG,mBAAqC,CAC1C,CAAEnuB,MAAO,GAAIQ,MAAO,yCACpB,CAAER,MAAO,GAAIQ,MAAO,+CACpB,CAAER,MAAO,GAAIQ,MAAO,yCACpB,CAAER,MAAO,GAAIQ,MAAO,+CACpB,CAAER,MAAO,GAAIQ,MAAO,+CACpB,CAAER,MAAO,GAAIQ,MAAO,yCACpB,CAAER,MAAO,GAAIQ,MAAO,+CACpB,CAAER,MAAO,GAAIQ,MAAO,gDAGf,KAAA4tB,mBAAqC,CAC1C,CAAEpuB,MAAO,EAAGQ,MAAO,kBACnB,CAAER,MAAO,EAAGQ,MAAO,wBACnB,CAAER,MAAO,EAAGQ,MAAO,wBACnB,CAAER,MAAO,EAAGQ,MAAO,yB,OAYd,YAAA6E,SAAP,sBACE7F,KAAKmf,gBAAkBnf,KAAKwhB,mBAAmBrC,kBAC/Cnf,KAAKsf,6BAA+Btf,KAAKwhB,mBAAmBlC,+BAC5Dtf,KAAKwf,aAAexf,KAAKwhB,mBAAmBhC,eACxCxf,KAAKwf,cACPxf,KAAK6uB,cAASxuB,GAEhBL,KAAKsuB,oBAAsBtuB,KAAKkuB,kBAAkBY,aAAcloB,UAAU5G,KAAKiuB,eAC/EjuB,KAAKyuB,0BAA4BzuB,KAAKiuB,cAAcxd,OAAO7J,WAAU,SAACwnB,GACpE,EAAKA,OAASA,EACd,EAAKW,0BACL,EAAK9gB,IAAIS,kBAEX1O,KAAK0uB,yBAA2B1uB,KAAKiuB,cAAce,QAAQpoB,WAAU,SAACiD,GACpE,SAAKskB,QAAQ3c,MAAM3H,MAErB7J,KAAKivB,kBAAkBjvB,KAAKQ,MAAM8Y,YAG7B,YAAA4V,YAAP,WACElvB,KAAKsuB,oBAAoBa,cACzBnvB,KAAKyuB,0BAA0BU,cAC/BnvB,KAAK0uB,yBAAyBS,eAGzB,YAAAC,aAAP,SAAoB9V,GAClBtZ,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACb8Y,UAAS,KAEXtZ,KAAKivB,kBAAkB3V,IAGlB,YAAAuV,SAAP,SAAgBtV,GACdvZ,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACb+Y,MAAK,MAIF,YAAA8V,eAAP,SAAsB7V,GACpBxZ,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbgZ,YAAW,MAIR,YAAA8V,eAAP,SAAsB7V,GACpBzZ,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbiZ,YAAW,MAIR,YAAA8V,qBAAP,SAA4B7V,GAC1B1Z,KAAKuF,YAAYW,KAAK,2BACjBlG,KAAKQ,OAAK,CACbkZ,kBAAiB,MAId,YAAA8V,cAAP,SAAqBre,GACnB,OAAQA,EAAQ0T,UACd,KAAKgJ,GAGL,KAAKC,GACH9tB,KAAK6uB,cAASxuB,GACd,MACF,KAAK0tB,GACH/tB,KAAKuvB,sBAAqB,KAIxB,YAAAR,wBAAR,WACE,IAAMX,EAASpuB,KAAKouB,OACdqB,EAA0BzvB,KAAKquB,iBAAmB,GACpDruB,KAAKQ,MAAM8Y,YAAcJ,GAAmBwW,eAC9CD,EAAS3pB,KAAK,CACZ+e,SAzIoC,8CA0IpC8K,MAAOvB,EAAOwB,mCAEP5vB,KAAKQ,MAAM8Y,YAAcJ,GAAmB2W,cACrDJ,EAAS3pB,KAAK,CACZ+e,SA7IsC,+CA8ItC8K,MAAOvB,EAAO0B,oCAGd9vB,KAAKQ,MAAM+Y,QAAUJ,GAAemT,KACtCmD,EAAS3pB,KAAK,CACZ+e,SAAUgJ,GACV8B,MAAOvB,EAAO2B,iBACdC,WAAW,IAEJhwB,KAAKQ,MAAM+Y,QAAUJ,GAAeqT,MAC7CiD,EAAS3pB,KAAK,CACZ+e,SAAUiJ,GACV6B,MAAOvB,EAAO6B,iBACdD,WAAW,IAGXhwB,KAAKsf,8BAAgCtf,KAAKQ,MAAMkZ,mBAClD+V,EAAS3pB,KAAK,CACZ+e,SAAUkJ,GACV4B,MAAOvB,EAAO8B,sBACdF,WAAW,KAKT,YAAAf,kBAAR,SAA0B3V,QACNjZ,IAAdiZ,GACFtZ,KAAKguB,mBAAmBmC,WAAW,WAIvC,sBAAW,6BAAc,C,IAAzB,WACE,OAAOnwB,KAAKwhB,mBAAmBnC,kB,sEApKtB+Q,GAAqB,4D,uBAArBA,EAAqB,k1DD7BlC,UACE,gCAGA,+BACA,yBAAwB,sCAA2B,OACnD,8BACE,+BAmBA,wBAIE,iCAAU,EAAAhB,aAAA,4BAAV,CAA+C,8BACnC,EAAAA,kBAAa/uB,MAIzB,+BAMF,OACF,OAEA,sBACE,8BAyFF,OAEA,4BAIE,sCAAc,EAAAmvB,cAAA,MAEhB,OACF,Q,MA9I2B,oCAGL,wCAED,4BAUd,sCAaD,qEAAsD,wEAe/C,oDA6FT,4GACA,8DAAoC,6B,2IClHxC,GCpBA,cAEE,WAAoBhO,EAA+C6O,GAA/C,KAAA7O,qBAA+C,KAAA6O,e,OAEnE,sBAAW,0BAAW,C,IAAtB,WACE,OAAOrwB,KAAKwhB,mBAAmB1D,cAC3B9d,KAAKqwB,aAAaC,YAAY,uBAC9BtwB,KAAKqwB,aAAaC,YAAY,wB,gCAGpC,sBAAW,uCAAwB,C,IAAnC,WACE,OAAOtwB,KAAKwhB,mBAAmB1D,cAC3B9d,KAAKqwB,aAAaC,YAAY,eAC9BtwB,KAAKqwB,aAAaC,YAAY,gB,gCAGpC,sBAAW,kBAAG,C,IAAd,WACE,OAAOtwB,KAAKqwB,aAAaC,YAAY,gB,gCAGvC,sBAAW,wBAAS,C,IAApB,WACE,OAAOtwB,KAAKqwB,aAAaC,YAAY,kB,gCAGvC,sBAAW,yCAA0B,C,IAArC,WACE,OAAOtwB,KAAKqwB,aAAaC,YAAY,2B,gCAGvC,sBAAW,8CAA+B,C,IAA1C,WACE,OAAOtwB,KAAKqwB,aAAaC,YAAY,gB,sEA5B5BC,GAAmB,sB,yBAAnBA,EAAmB,QAAnBA,EAAmB,qBADN,S,EAA1B,G,uBCDM,0BACE,0XAIF,Q,sCAQA,uBACE,uBAAc,wBAAa,OAC3B,iBACE,iBACE,iBACE,YACE,+DAAgD,aAChD,+DACF,OACF,OACF,OACA,kBACE,4BAEE,kFAKF,OACF,OACF,OACF,O,sBATQ,iDAAiC,6B,sCA1BzC,gCAOA,8BAEE,yEAED,OAED,8BAwBA,sBACE,0BACE,YAAG,2FAA6E,OAChF,eACE,aACE,eAA+B,6DAAoB,mBAAO,OAC5D,OACF,OACF,OACA,4BACE,gBACE,cACE,gBACG,oCAAwB,OAE7B,OACA,cACE,gBACG,oCAAwB,OAE7B,OACF,OACF,OACF,O,gCA5DyB,+BAQvB,8BAAe,yCAKe,0CAwBX,uCAYkB,qCAKA,sC,0BAvDzC,gCAgEA,2BACE,4BACA,6BACA,4BACF,Q,kBApEa,4BCMjB,kBAmBE,WACU3S,EACA5P,EACAwT,EACAgP,EACRvK,EACAwK,GALQ,KAAA7S,eACA,KAAA5P,sBACA,KAAAwT,qBACA,KAAAgP,iBAhBH,KAAAprB,YAAa,EAGb,KAAAsrB,eAAiC,CACtC,CAAElwB,MAAO,EAAGQ,MAAO,eACnB,CAAER,MAAO,EAAGQ,MAAO,mBACnB,CAAER,MAAO,EAAGQ,MAAO,oBAcnBhB,KAAKic,MAAQjc,KAAK4d,aAAa3B,MAC/Bjc,KAAKuf,mBAAqB0G,EAAkB1G,qBAE5Cvf,KAAK2wB,QAAUF,EAAoBG,YACnC5wB,KAAK6wB,SAAWJ,EAAoBK,yB,OAG/B,YAAAjrB,SAAP,WACE7F,KAAKoF,WAAapF,KAAKgO,oBAAoBG,SAGtC,YAAA4iB,YAAP,SAAmB3W,GACjBpa,KAAKic,MAAQjc,KAAK4d,aAAa3B,MAAQ,YAAH,eAC/Bjc,KAAKic,OACL7B,IAIA,YAAA4W,mBAAP,SAA0B3X,GACxBrZ,KAAKic,MAAQjc,KAAK4d,aAAa3B,MAAQ,YAAH,eAC/Bjc,KAAKic,OAAK,CACb5C,gBAAe,KAInB,sBAAW,kCAAmB,C,IAA9B,sBACE,OAAIrZ,KAAKuf,mBACAvf,KAAK0wB,eAAehmB,MAAK,SAACC,GAAW,OAAAA,EAAOnK,QAAU,EAAKyb,MAAM5C,mBACrErY,MAGE,I,gCAGF,YAAAiwB,QAAP,WACEjxB,KAAKwwB,eAAeS,WAGtB,sBAAW,6BAAc,C,IAAzB,WACE,OAAOjxB,KAAKwhB,mBAAmBnC,kB,sEA9DtB6R,GAAc,yD,uBAAdA,EAAc,uqBDZ3B,0BACE,6BAuEF,S,yGChEA,G,aC2BaC,GAAmB,IAAI,IAA2B,kBAClDC,GAAe,IAAI,IAAuB,cAGvD,cAYE,WACUC,EACDC,EACCC,EACAC,EACAC,EACA/I,EACAlH,EACAzT,EAC8C2jB,EACJC,GAT1C,KAAAN,iBACD,KAAAC,OACC,KAAAC,MACA,KAAAC,iBACA,KAAAC,qBACA,KAAA/I,kBACA,KAAAlH,qBACA,KAAAzT,UAC8C,KAAA2jB,kBACJ,KAAAC,cAjBpC,KAAAC,KAAO,SACP,KAAAC,YAAa,EACb,KAAAC,KAAO,QAEP,KAAAC,MAAQ,SACR,KAAAC,YAAa,E,OAetB,YAAAnsB,SAAP,sBACM7F,KAAK6xB,YAAc7xB,KAAKsxB,KAAK/qB,eAE/BvG,KAAKsxB,KAAK/qB,cACPE,KACC,OAAAC,EAAA,IAAO,WAAM,OAAC,EAAK+qB,mBAAmBQ,0BACtC,OAAAC,GAAA,GAAa,KACb,OAAAxrB,EAAA,IAAO,SAAC+K,GAAmB,MAAW,UAAXA,MAE5B7K,WAAU,WAAM,SAAKurB,qBAIrB,YAAAA,eAAP,WACEnyB,KAAKwxB,eAAeY,gBAAgBpyB,KAAKuxB,IAAIc,cAA0B,IAAM,KAAK,GAAM,IAGnF,YAAAC,KAAP,sBACMtyB,KAAKwhB,mBAAmBhC,gBAAkBxf,KAAKwhB,mBAAmBnB,kBACpErgB,KAAK+N,QAAQwkB,cAAc,kBAIzBvyB,KAAK4pB,SAEP5pB,KAAK0oB,gBAAgB8J,cAAcxyB,KAAK4pB,QAAS5pB,KAAKgyB,YAExDhyB,KAAKyyB,cAAcC,MAAK,SAACjiB,GACnBA,IACF,EAAKkiB,UACL,EAAKtB,eAAeuB,0BAKlB,YAAAD,QAAR,WAC0B,MAApB3yB,KAAK2xB,cACyB,mBAArB3xB,KAAK2xB,YACd3xB,KAAK2xB,cAEL3xB,KAAK2xB,YAAY9iB,eAIf,YAAA4jB,YAAR,sBACE,OAAO,IAAIhpB,SAAQ,SAACC,GAClB,GAA4B,MAAxB,EAAKgoB,gBACP,OAAOhoB,GAAQ,GAEjB,IAAM+G,EAC4B,mBAAzB,EAAKihB,gBACR,EAAKA,kBACL,EAAKA,gBAAgB/iB,iBAC3B,YAAsB,IAAX8B,EACF/G,GAAQ,GAEK,kBAAX+G,EACF/G,EAAQ+G,QAEjBA,EAAO7J,UAAU8C,O,sCAhFVmpB,GAAiC,sFAiBd1B,GAAgB,QAChBC,GAAY,K,uBAlB/ByB,EAAiC,qQC3C9C,uBAKE,kCAAW,EAAAP,UACZ,Q,KALC,sBAAe,cAAf,CAAe,cAAf,CAAe,2B,qCDsCjB,G,wHEvBQ,4BAQE,wFAEF,O,sBANE,mCAAuF,mCAAvF,CAAuF,+BAAvF,CAAuF,0C,uBAqCzF,YACE,gFACF,Q,uHAlBA,0BACE,8BAGE,6EAAuC,uEAUzC,OACF,OACA,sB,sBAbI,2CAA4B,gDAA5B,CAA4B,8BAa5B,uC,wIAcJ,8BAGE,wEAcF,O,sBAfE,8BAAuB,+B,sCA6BzB,2BAKE,sEAIF,O,sBALE,6B,wHAmBF,uBAGE,uFAOF,OACA,iBACA,iB,sBAVE,6CAAsC,+B,sCAsBxC,oCAGE,wFAIF,O,sBALE,8CAAuC,2C,sCAiBzC,qCAME,kFAGF,O,sBARE,oCAA6B,oDAA7B,CAA6B,6BAA7B,CAA6B,oC,sCA+BvB,oCAGE,iFAIF,O,sBALE,uCAAgC,oC,4HAalC,4BAGE,qFASF,O,sBAVE,2CAAoC,mCAApC,CAAoC,+B,0BAnB1C,uBACE,6BAUF,OACA,uBAIE,6BAeF,Q,mBAjBE,gD,sCAvBN,oCAGE,6EAKA,6BAkCF,O,sBAxCE,mCAA4B,8BAA5B,CAA4B,sC,sCAgE1B,uBACE,uBAGE,mFAGD,OACD,YAAG,0EAA4D,OACjE,O,sBANI,kD,4GAfR,2BAIE,+EAOA,6BAYF,O,sBArBE,qCAA8B,yCAA9B,CAA8B,8CAA9B,CAA8B,+BAA9B,CAA8B,2BAA9B,CAA8B,+B,sCAiChC,uBAGE,kFAIF,O,sBALE,yC,sCAiBF,oCAGE,gFAIF,O,sBALE,sCAA+B,mC,sCAiBjC,2BAIE,sEAMF,O,sBAPE,6B,yBAoDJ,6C,2BAEE,0BAA2B,kB,yBAK7B,6C,2BAEE,0BAA2B,kB,sBAI7B,6C,sCA9XF,cACE,0NAGF,OAEA,wB,qBAOE,6BAaF,OAEA,wB,qBAUE,6BAqBF,OAEA,yB,sBAOE,8BAoBF,OAEA,yB,sBASE,8BAYF,OAEA,0B,sBASE,8BAeF,OAEA,2BAOE,8BAUF,OAEA,2BAOE,8BAYF,OAEA,2BAOE,8BA6CF,OAEA,2BAOE,8BA0BF,OAEA,2BAOE,8BAUF,OAEA,2BAOE,8BAUF,OAEA,2BAOE,8BAaF,OAEA,wCAGE,4EAAuC,yEAUzC,OAEA,sCAKE,+EAGF,OAEA,0BAQE,yEAGF,OAEA,6BAEA,4BACE,qDAOA,qDAMA,qDAIA,8BACA,8BACF,O,wLA7XE,sCAAuB,6FAyBvB,oMADA,+BA+BA,uCAAmC,4FAAnC,CAAmC,6BA6BnC,uCAA8B,6BAA9B,CAA8B,kGAuB9B,uCAA4B,6BAA5B,CAA4B,uGA0B5B,uCAAuC,8CAmBvC,uCAAmD,kCAAnD,CAAmD,gCAqBnD,uCAA0C,iCAsD1C,uCAAwC,2CAAxC,CAAwC,4CAmCxC,uCAA8C,4CAmB9C,uCAA6C,oCAmB7C,uCAAsC,+CAsBtC,sDAAuE,6BAAvE,CAAuE,iCAAvE,CAAuE,kCAAvE,CAAuE,qDAAvE,CAAuE,qBAAvE,CAAuE,iCAevE,kCAAqC,gCAArC,CAAqC,+CAWrC,mEAGC,gBAHD,CAGC,0BAHD,CAGC,gCAYE,yCAOA,yCAMA,2CCtWT,kBA8EE,WACUtkB,EACA4P,EACA4D,EACAwM,EACAjgB,EACR+kB,GALQ,KAAA9kB,sBACA,KAAA4P,eACA,KAAA4D,qBACA,KAAAwM,qBACA,KAAAjgB,UA7EH,KAAA3I,YAAa,EACb,KAAA0hB,aAAe,GAGf,KAAAjjB,UAAyB,KAMzB,KAAAkvB,8BAAgC,GAEhC,KAAAC,oBAA4B,IAAItxB,KAAK,KAAM,EAAG,GAK9C,KAAAuxB,kBAAoB,GACpB,KAAAC,mCAAoD7yB,EACpD,KAAA8yB,uBAAqD9yB,EACrD,KAAA+yB,oBAAsB,GAMtB,KAAAC,eAAgB,EAEP,KAAAC,6BAA+BxqB,EAC/B,KAAAyqB,kBAAoB1gB,GACpB,KAAA2gB,sBAAwBtgB,GAExB,KAAAugB,2BAA6B1qB,EAC7B,KAAA2qB,qBAAuB1qB,GA+CrChJ,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAC/Blc,KAAK2zB,iBAAmB3zB,KAAK4d,aAAanG,QAAQuC,eAElD,IAAML,EAAY3Z,KAAK4d,aAAanG,QAAQzD,OAAO2F,UACnD3Z,KAAK8mB,aAAenN,EAAYA,EAAU5I,MAAQ,GAElD/Q,KAAK4zB,kBACF5zB,KAAK2zB,kBAAoB,IAAIjyB,MAAW1B,KAAK4d,aAAanG,QAAQxL,UACrEjM,KAAKmf,gBAAkBnf,KAAKwhB,mBAAmBrC,kBAC/Cnf,KAAK2f,iCAAmC3f,KAAKwhB,mBAAmB7B,mCAChE3f,KAAK6f,+BAAiC7f,KAAKwhB,mBAAmB3B,iCAE9D7f,KAAK6zB,6BAA+Bf,EAAwBhpB,aAC5D9J,KAAKqzB,cAAgBrzB,KAAK8zB,iBAE1B9zB,KAAK+zB,sBAAwB,aAAU,IAAIryB,MAC3C1B,KAAK+zB,sBAAsBC,QAAQh0B,KAAK+zB,sBAAsBhV,UAAY,GAE1E/e,KAAKsF,QAAUsY,EAAanG,QAAQyC,cACpCla,KAAK6D,UAAY7D,KAAKwhB,mBAAmBtD,uBACrCN,EAAaxD,QAAQE,UACrB,KACJta,KAAKi0B,eAAiBj0B,KAAK4d,aAAanG,QAAQ0C,QAAUlI,GAAaE,GACvEnS,KAAKk0B,wBAA0Bl0B,KAAKwhB,mBAAmBrD,uBACvDne,KAAKqa,cAAgBuD,EAAaxD,QAAQC,cAC1Cra,KAAKga,eAAiB4D,EAAanG,QAAQuC,eAC3Cha,KAAKm0B,sBAAwB,aAAU,IAAIzyB,KAAK,KAAM,EAAG,IACzD1B,KAAKo0B,sBAAwB,aAAU,IAAI1yB,MAC3C1B,KAAKq0B,oB,OAzEP,sBAAW,oCAAqB,C,IAAhC,WACE,OACEr0B,KAAKwhB,mBAAmB5B,gCAAkC5f,KAAK6f,gC,gCAInE,sBAAW,kCAAmB,C,IAA9B,WACE,OAAO7f,KAAKwhB,mBAAmB/B,yB,gCAGjC,sBAAW,6CAA8B,C,IAAzC,WACE,OACEzf,KAAKwhB,mBAAmB1B,2BACxB9f,KAAKwhB,mBAAmBpC,qB,gCAI5B,sBAAW,wBAAS,C,IAApB,WACE,OAAOpf,KAAKwhB,mBAAmBzB,wC,gCAGjC,sBAAW,qCAAsB,C,IAAjC,WACE,OAAO/f,KAAKwhB,mBAAmBxB,4B,gCAGjC,sBAAW,gDAAiC,C,IAA5C,WACE,OAAOhgB,KAAKwhB,mBAAmBvB,uC,gCAGjC,sBAAW,4CAA6B,C,IAAxC,WACE,OAAOjgB,KAAKwhB,mBAAmBtB,mC,gCAGjC,sBAAW,0CAA2B,C,IAAtC,WACE,OAAOlgB,KAAKwhB,mBAAmBrB,iC,gCA0C1B,YAAAta,SAAP,WACE7F,KAAKoF,WAAapF,KAAKgO,oBAAoBG,QAC3CnO,KAAKs0B,2BACLt0B,KAAKu0B,6BAGA,YAAA7M,cAAP,SAAqBzlB,GACnBjC,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbyB,WAAU,KAIP,YAAAuyB,qBAAP,WACMx0B,KAAK4d,aAAaxD,QAAQnY,aAAejC,KAAKQ,MAAMyB,YACtDjC,KAAKguB,mBAAmBmC,WAAW,WAIhC,YAAAsE,SAAP,SAAgBrY,GACdpc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACb4b,MAAK,KAIF,YAAAsY,yBAAP,SAAgCvY,GAC9Bnc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACb2b,sBAAqB,KAIlB,YAAAwY,yBAAP,SAAgCpY,GAC9Bvc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACb+b,sBAAqB,IAGvBvc,KAAKs0B,2BACLt0B,KAAKu0B,4BACLv0B,KAAKq0B,qBAGA,YAAAO,qBAAP,SAA4BjY,GAC1B3c,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbmc,kBAAiB,KAId,YAAAkY,OAAP,SAAcvY,GACZtc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACb8b,IAAKA,EAAM,aAAoBA,GAAOA,KAInC,YAAAwY,wBAAP,SAA+BzY,GAC7Brc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACb6b,qBAAoB,IAGlBA,GACFrc,KAAKguB,mBAAmBmC,WAAW,WAIhC,YAAA4E,gBAAP,SAAuBnY,GACrB,IAAMoY,EAAuBh1B,KAAK6zB,6BAA6BnpB,MAC7D,SAACF,GAAM,OAAa,IAAbA,EAAEhK,OAAgBgK,EAAEhK,QAAUoc,KAEjCC,EAAmBmY,EAAuBA,EAAqBh0B,WAAQX,EAC7EL,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbqc,iBAAgB,EAChBD,aAAY,KAIT,YAAAqY,oBAAP,SAA2BpY,GACzB7c,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbqc,iBAAgB,KAIb,YAAAqY,mBAAP,SAA0BpY,GACxB9c,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbsc,gBAAe,KAIZ,YAAAqY,iBAAP,SAAwBpY,GACtB/c,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbuc,cAAa,IAGX/c,KAAKQ,MAAM+b,wBAA0BpU,EAAsBS,OAASmU,GACtE/c,KAAKguB,mBAAmBmC,WAAW,WAIhC,YAAAiF,gBAAP,SAAuBt1B,GACrBE,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbV,aAAY,KAIT,YAAAu1B,mBAAP,SAA0BrY,GACxBhd,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbwc,gBAAe,KAIZ,YAAAsY,cAAP,SAAqB9Y,GACnBxc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbgc,WAAU,IAGZxc,KAAKqzB,cAAgBrzB,KAAK8zB,kBAGrB,YAAAyB,kBAAP,SAAyB9Y,GACvBzc,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbic,eAAc,KAIX,YAAA+Y,sBAAP,SAA6B9Y,GAC3B1c,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbkc,mBAAkB,KAIf,YAAA+Y,WAAP,SAAkBxY,GAChBjd,KAAKQ,MAAQR,KAAK4d,aAAa1B,eAAiB,YAAH,eACxClc,KAAKQ,OAAK,CACbyc,QAAO,KAIJ,YAAAyY,gBAAP,SAAuBl1B,IACO,IAAxBR,KAAKi0B,iBACPj0B,KAAK4d,aAAanG,QAAQyC,cAAgB,YAAH,eAClC1Z,GAAK,CACRkD,KAAM,KAGR1D,KAAK+N,QAAQe,SAAS,CAAC,OAInB,YAAAwlB,yBAAR,WAGE,GAFAt0B,KAAKizB,kBAAoB,4CACzBjzB,KAAKozB,oBAAsB,qBACvBpzB,KAAKwhB,mBAAmB5B,+BAAgC,CAC1D,IAAM+V,EAAQ31B,KAAKQ,MAAM+b,wBAA0BpU,EAAsBO,IACzE1I,KAAKizB,mBAAqB,uCACxB0C,EAAQ,aAAe,SAAO,IAG5BA,IACF31B,KAAKozB,oBAAsB,2BAG7BpzB,KAAKozB,oBAAsB,qBAC3BpzB,KAAKizB,mBACH,6FAIE,YAAAsB,0BAAR,WACE,IAAMhY,EAAwBvc,KAAKQ,MAAM+b,sBAEvCvc,KAAKwhB,mBAAmB5B,qCACEvf,IAA1Bkc,GACAA,IAA0BpU,EAAsBS,MAE5C2T,IAA0BpU,EAAsBQ,OAClD3I,KAAKkzB,8BAAgC,SACrClzB,KAAKmzB,kBAAoB,CACvB,CAAE5mB,MAAO,IAAKC,IAAK,IAAKgF,MAAO,UAC/B,CAAEjF,MAAO,IAAKC,IAAK,KACnB,CAAED,MAAO,IAAKC,IAAK,IAAKgF,MAAO,UAC/B,CAAEjF,MAAO,IAAKC,IAAK,KACnB,CAAED,MAAO,IAAKC,IAAK,QAGrBxM,KAAKkzB,8BAAgC,SACrClzB,KAAKmzB,kBAAoB,CACvB,CAAE5mB,MAAO,IAAKC,IAAK,KACnB,CAAED,MAAO,IAAKC,IAAK,IAAKgF,MAAO,UAC/B,CAAEjF,MAAO,IAAKC,IAAK,KACnB,CAAED,MAAO,IAAKC,IAAK,IAAKgF,MAAO,aAInCxR,KAAKkzB,8BAAgC,SACrClzB,KAAKmzB,kBAAoB,CACvB,CAAE5mB,MAAO,IAAKC,IAAK,KACnB,CAAED,MAAO,IAAKC,IAAK,KACnB,CAAED,MAAO,IAAKC,IAAK,QAKjB,YAAAsnB,eAAR,WACE,OAAO9zB,KAAKQ,MAAMgc,aAAe7J,GAAWI,MAGtC,YAAAshB,kBAAR,WACEr0B,KAAK+yB,8BAAgC,gCAAgC/yB,KAAK41B,iCAAgC,gBAGpG,YAAAA,+BAAR,WACU,IAAAne,EAAYzX,KAAK4d,aAAY,QAErC,OAAInG,EAAQuC,gBAAkBha,KAAKwhB,mBAAmBzB,uCAC7C,yBAIoB,IAA3BtI,EAAQuC,gBACRha,KAAKwhB,mBAAmBzB,uCAEjB,mCAGL/f,KAAKwhB,mBAAmBpC,oBACnB,uDAEF,yBAGT,sBAAW,gCAAiB,C,IAA5B,WACU,IAAAlD,EAAmBlc,KAAK4d,aAAY,eACxCiY,EAAe,GACnB,GAAI3Z,EAAeU,aAAc,CAC/B,IAAMkZ,EAAiB91B,KAAK6zB,6BAA6BnpB,MACvD,SAACC,GAAW,OAACuR,EAAeU,eAAmBjS,EAAOnK,SAExDq1B,EAAeC,EAAiBA,EAAe90B,MAAQ,GAEzD,OAAO60B,G,gCAGT,sBAAW,6BAAc,C,IAAzB,WACE,OAAO71B,KAAKwhB,mBAAmBnC,kB,sEAhXtB0W,GAAuB,2D,uBAAvBA,EAAuB,y6IDhCpC,mBACE,+BAuYF,S,4OC7WA,G,sCCvBQ,sBACE,YAAG,2FAA6E,OAChF,eACE,aACE,cAA+B,oEAC5B,8CAAmC,OAExC,OACF,OACF,Q,sCAkCI,aACE,cAA+B,iEAC5B,+EAAiE,OAEtE,Q,uBAGJ,YACE,gCACA,YAAG,qCAA0B,OAC7B,YAAI,yBAAa,OACjB,oBAAQ,YAAG,iCAAsB,OAAK,oEACxC,Q,uBACA,YACE,gCACA,YAAG,oCAAyB,OAAI,cAAG,YAAI,yBAAa,OAAK,qBAC3D,Q,sCA9CA,cAAgB,+EAAiE,OACjF,2BACE,YAAG,yEAA8D,OACjE,eACE,aACE,eACG,+BAAoB,OAEzB,OACA,aACE,gBACG,oCAAwB,OAE7B,OACA,cACE,gBACG,+CAAmC,OAExC,OACA,cACE,gBACG,kDAAsC,OAE3C,OACA,cACE,gBACG,oGACI,OAET,OACA,wBAKF,OACF,OACA,wBAMA,uBAIA,yBACE,mEAGD,O,sBA9CoC,+CAKA,iDAKA,sDAKA,+CAKA,0CAK5B,+BAOL,+BAMA,gCAMF,kC,uBAyBE,YACE,iBACG,iKACuE,OAE5E,Q,sCAtBA,YACE,2CACA,kBAA0C,0JAG5C,OACA,qCACE,+BAIE,4EAGD,OACH,OAEA,sB,sBAfQ,+CAQJ,iCAOA,wC,uBAnBR,uBACE,6BAyBF,Q,0BAhGJ,wBACE,+BAaA,gCAuDA,+BA6BF,OAEA,2BACE,4B,iBAIA,4BACF,Q,kBA1Ga,mCAA4B,mCAuGrC,sFClFR,mBAoBE,WACU7T,EACAC,EACAX,EACAwU,EACcC,EACtBhQ,EACAwK,EACArjB,GARF,MAUE,YAAMA,IAAS,K,OATP,EAAA8U,mBACA,EAAAC,0BACA,EAAAX,qBACA,EAAAwU,aATH,EAAA1oB,SAAW,SAGV,EAAA4oB,oBAAsB3H,GAAA,EAAaC,MAczC,EAAK5gB,QAAUqY,EAAkB3F,SAEjC,EAAK6V,qBAAuB1F,EAAoBG,YAChD,EAAKwF,mBAAqB3F,EAAoBK,yBAC9C,EAAKuF,mBAAqB5F,EAAoB6F,UAC9C,EAAKC,0BAA4B9F,EAAoB+F,2BACrD,EAAKC,cAAgBhG,EAAoBiG,gCAEzC,EAAKC,YAAc,aAAYV,G,SA1BG,iBA6B7B,YAAApwB,SAAP,sBACE,YAAMA,SAAQ,WACd7F,KAAK42B,eAEL52B,KAAK2N,cAAgB,6CACnB3N,KAAK4N,QAAU,IAAM,QAAM,mCAE3B5N,KAAK4N,QACD,iGACA,IAGF5N,KAAK22B,cACP32B,KAAKk2B,oBAAsBl2B,KAAKg2B,WAAWa,UAAUjwB,WAAU,SAACD,GAC9D,EAAKgH,cAAgB,EAAKC,QACtB,0EACEjH,EAAMvD,UAAS,IACbuD,EAAM1C,SAAQ,mIAElB,oHACE0C,EAAMvD,UAAS,IACbuD,EAAM1C,SAAQ,YACtB,EAAKgK,IAAIS,oBAKR,YAAAwgB,YAAP,WACElvB,KAAKk2B,oBAAoB/G,eAGpB,YAAAyH,aAAP,WACE52B,KAAKkiB,iBAAiB4U,qBAAqB92B,KAAKmiB,wBAAwBV,mBAG1E,sBAAW,6BAAc,C,IAAzB,WACE,OAAOzhB,KAAKwhB,mBAAmBnC,kB,sEAjEtB0X,GAAgB,6CAWjB,MAAY,8B,uBAXXA,EAAgB,+CAXZ,CACb,CACEp2B,QAAS,IACTC,YAAa,aAAW,WAAM,OAAAm2B,MAEhC,CACEp2B,QAAS,KACTC,YAAa,aAAW,WAAM,OAAAm2B,QAEjC,usBDnCH,mBACE,6BA6GF,S,iKCvFA,CAcsC,IC9BtC,eAEE,WACUpJ,EACA9P,EACAD,EACRxQ,GAJF,MAME,YAAMA,IAAS,K,OALP,EAAAugB,iBACA,EAAA9P,qBACA,EAAAD,e,SAJwB,iBAUxB,YAAAxM,SAAV,WACE,OAAOpR,KAAK2tB,eAAepE,mBAGnB,YAAAyN,uBAAV,WACU,IAAA/a,EAAUjc,KAAK4d,aAAY,MAEnC,OACE3B,EAAM3C,YAAcJ,GAAmBwW,qBACvBrvB,IAAhB4b,EAAM1C,OACN0C,EAAMvC,mBACoB,IAA1BuC,EAAM5C,iBAIA,YAAAnK,mBAAV,WACElP,KAAK6d,mBAAmBH,cAAe,EAGvC1d,KAAK4d,aAAa3B,MAAQ,YAAH,2BAClBjc,KAAK4d,aAAa3B,OAClB7C,IAAa,CAChBE,UAAWJ,GAAmB2W,eAEhC7vB,KAAK4d,aAAa1B,eAAee,QAAQsD,QAAU,K,sCAlC1C0W,GAAc,uC,yBAAdA,EAAc,QAAdA,EAAc,qBADD,S,EAA1B,CACoC,I,uBCL9B,0BACG,8EAAgE,Q,0BAEnE,0BACG,QAEwD,Q,kBAFxD,0M,uBAKH,YACE,0PAGF,Q,uBAmBE,aACE,uIAEF,Q,uBACA,aACE,2GAEF,Q,uBACA,aACE,0KAEF,Q,uBAEE,aACE,qLAEF,Q,uBACA,aACE,yGACF,Q,0BAPF,QACE,sBAIA,sBAGF,Q,kBAPO,uCAIA,qCCzCf,kBAYE,WACUnpB,EACRopB,EACAC,EACAlR,GAHQ,KAAAnY,kBAKR9N,KAAKga,eAAiBmd,EAAY1f,QAAQuC,eAC1Cha,KAAK0pB,SAAWwN,EAAgBxN,SAChC1pB,KAAKo3B,SAAWF,EAAgBG,WAChCr3B,KAAKF,aAAeq3B,EAAYjb,eAAepc,aAC/CE,KAAKs3B,WAAarR,EAAkB5G,iBACpCrf,KAAKu3B,QAAUL,EAAgBK,QAC/Bv3B,KAAK8oB,aAAeqO,EAAYjb,eAAeK,sB,OAGjD,sBAAW,2BAAY,C,IAAvB,WACE,OAAOvc,KAAKga,gBAAkBha,KAAK8oB,eAAiB3gB,EAAsBS,O,gCAGrE,YAAA4uB,aAAP,WACEx3B,KAAK8N,gBAAgB0pB,gB,sCA7BZC,GAAgB,wC,uBAAhBA,EAAgB,sRDd7B,sBACE,gBACE,gBACE,gCAGA,gCAMA,qBAMA,uBAAc,4BAAiB,OAE/B,YACE,gJAEF,OAEA,gBACE,cACE,eAA+B,gCAAS,EAAAD,kBAAgB,sCAA0B,OACpF,OACF,OAEA,0BAAwB,+BAAgB,OACxC,gBACE,cAAI,4DAA6C,OACjD,cAAI,sDAAuC,OAC3C,uBAIA,uBAIA,uBAIA,iCASF,OACA,2BACA,iCACA,iCACF,OACF,OACF,Q,MA3D+B,iCAGA,gCAMrB,iCAuBG,iCAIA,2CAIA,gCAIU,oC,sDCpCvB,GCIaE,GAAiB,aAAgC,CAC5D,CAAEC,KAAM,GAAIC,WAAY,gBAAiBC,UAAW,QACpD,CACEF,KAAM,eACNG,UAAW,GACXnxB,KAAM,CAAEzD,MAAO,eAAgB60B,UAAW,KAAUC,eAEtD,CACEL,KAAM,eACNG,UAAW,GACXnxB,KAAM,CAAEsxB,iBAAiB,EAAM/0B,MAAO,iBAExC,aAAiB,IACjB,CACEy0B,KAAM,wBACNG,UAAW,GACXpuB,QAAS,IACT/C,KAAM,CACJzD,MAAO,wBACP60B,UAAW,KAAUG,YACrBC,gBAAgB,IAGpB,CACER,KAAM,qBACNG,UAAW,GACXnxB,KAAM,CAAEzD,MAAO,uBAEjB,aAAmB,MCNrB,YAAmB,KAEnB,IAiBA,4B,8BAgCak1B,EAAS,WAFR,O,oDAEDA,IAAS,sBAjBfvtB,GAA6C,CAChD,CACElK,QAAS,IACTC,YAAa,IAEf,CACED,QAAS,IACT03B,SAAU,IAEZ,CACE13B,QAAS,IACT2B,SAAU,W,SAxBL,CACP,IACA,IACA,IAAcgT,QAAQG,IACtB,GAAiBH,UACjB,IACA,IACA,IAAaA,QAAQoiB,GAAQ,CAC3BY,mBAAoB,IACpBC,oBAAqB,e,EAX3B,GClDE,cAGF,MAAyBC,gBAAgB,K,mBCTzC,SAASC,EAAyBC,GAGjC,OAAOjvB,QAAQC,UAAUgpB,MAAK,WAC7B,IAAIloB,EAAI,IAAImuB,MAAM,uBAAyBD,EAAM,KAEjD,MADAluB,EAAEouB,KAAO,mBACHpuB,KAGRiuB,EAAyBj2B,KAAO,WAAa,MAAO,IACpDi2B,EAAyB/uB,QAAU+uB,EACnCI,EAAOC,QAAUL,EACjBA,EAAyBruB,GAAK,S","file":"main.2529ba3174e7d9a73c17.js","sourcesContent":["import { AbstractDataService, PersoenlicheDaten, Salutation } from '@web-lib-angular/hukde-tr';\n\nexport abstract class AbstractKfzDataService extends AbstractDataService {\n public abstract isInsuranceHolderNaturalPerson(): boolean | undefined;\n\n protected abstract _setInsuranceHolderNaturalPerson(naturalPerson: boolean | undefined): void;\n\n public setPersonalDataOfCustomer(personalData: PersoenlicheDaten) {\n super.setPersonalDataOfCustomer(personalData);\n\n if (personalData.vnAnrede != null && this.isInsuranceHolderNaturalPerson() == null) {\n this._setInsuranceHolderNaturalPerson(personalData.vnAnrede !== Salutation.Company);\n }\n }\n}\n","import { Directive, forwardRef, Input } from '@angular/core';\nimport { NG_VALIDATORS, AbstractControl } from '@angular/forms';\nimport { AbstractValidationDirective } from '@web-lib-angular/hukde-tr';\n\n@Directive({\n selector: '[hukCheckNotSelectedBoth][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CheckNotBothSelectedValidationDirective),\n multi: true,\n },\n ],\n})\nexport class CheckNotBothSelectedValidationDirective extends AbstractValidationDirective {\n @Input('hukCheckNotSelectedBoth') public checkValue: boolean | undefined = undefined;\n\n public validate(c: AbstractControl): { bothSelected: boolean } | null {\n return c.value === true && this.checkValue === c.value ? { bothSelected: true } : null;\n }\n}\n","import { AbstractValidationDirective } from '@web-lib-angular/hukde-tr';\nimport { AbstractControl, NG_VALIDATORS } from '@angular/forms';\nimport { Directive, forwardRef, Input } from '@angular/core';\n\n/** Forbid selection of HUK24 or HUK-COBURG as previous insurance company */\n@Directive({\n selector: 'huk-searchbox[hukForbidHuk]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ForbidHukSelectOptionValidationDirective),\n multi: true,\n },\n ],\n})\nexport class ForbidHukSelectOptionValidationDirective extends AbstractValidationDirective {\n @Input('hukForbidHuk') public active = false;\n @Input('hukForbidHukAll') public all = false;\n @Input('hukLabel') public label = '';\n\n private readonly _huk = 'HUK-C';\n private readonly _huk24 = 'HUK24';\n\n public validate(\n c: AbstractControl,\n ): {\n forbidden?: boolean;\n forbiddenHuk24?: boolean;\n forbiddenAll?: boolean;\n } | null {\n if (!this.active || !c.value) {\n return null;\n }\n if (!this.all) {\n switch (this.label.substring(0, 5)) {\n case this._huk24:\n return { forbiddenHuk24: true };\n case this._huk:\n return { forbidden: true };\n }\n } else {\n switch (this.label.substring(0, 5)) {\n case this._huk24:\n case this._huk:\n return { forbiddenAll: true };\n }\n }\n return null;\n }\n}\n","import { Directive, forwardRef, Input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors } from '@angular/forms';\nimport {\n AbstractValidationDirective,\n clearTime,\n DEFAULT_ERROR_MAPPING,\n resetDateDay,\n} from '@web-lib-angular/hukde-tr';\n\n@Directive({\n selector: '[hukKmFirstRegis]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => KilometersFirstRegistrationValidationDirective),\n multi: true,\n },\n {\n provide: DEFAULT_ERROR_MAPPING,\n useValue: {\n tooManyForNew: 'KRF036',\n tooLess: 'KRF037',\n tooManyForMonth: 'KRF038',\n },\n },\n ],\n})\nexport class KilometersFirstRegistrationValidationDirective extends AbstractValidationDirective {\n @Input('hukKmFirstRegis')\n public firstRegisDate: Date | undefined = undefined;\n\n private _currentDate = clearTime(resetDateDay(new Date()));\n private _currentDateMinus2Years: Date;\n private _currentDateMinus2Months: Date;\n\n constructor() {\n super();\n this._currentDateMinus2Years = new Date(this._currentDate);\n this._currentDateMinus2Years.setFullYear(this._currentDateMinus2Years.getFullYear() - 2);\n this._currentDateMinus2Months = new Date(this._currentDate);\n this._currentDateMinus2Months.setMonth(this._currentDateMinus2Months.getMonth() - 2);\n }\n\n public validate(c: AbstractControl): ValidationErrors | null {\n if (this.firstRegisDate && c.value != null) {\n const kilometers = +c.value;\n\n if (this.firstRegisDate > this._currentDate && kilometers > 1) {\n return { tooManyForNew: true };\n }\n if (this.firstRegisDate < this._currentDateMinus2Years && kilometers < 2) {\n return { tooLess: true };\n }\n if (this.firstRegisDate > this._currentDateMinus2Months && kilometers > 10) {\n return { tooManyForMonth: true };\n }\n }\n\n return null;\n }\n}\n","import {\n AbstractControl,\n FormGroup,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngModelGroup][hukRequireOne]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: RequireOneValidationDirective,\n multi: true,\n },\n ],\n})\nexport class RequireOneValidationDirective implements Validator {\n public validate(c: AbstractControl): ValidationErrors | null {\n const controls = (c as FormGroup).controls;\n const keys = Object.keys(controls);\n if (keys.length === 0) {\n return null;\n }\n let filled = false;\n for (const key of keys) {\n if (controls[key].value) {\n filled = true;\n break;\n }\n }\n return filled ? null : { required: true };\n }\n}\n","import { Directive, forwardRef, Input } from '@angular/core';\nimport { NG_VALIDATORS, ValidationErrors } from '@angular/forms';\nimport { AbstractValidationDirective } from '@web-lib-angular/hukde-tr';\n\n@Directive({\n selector: '[hukVehicleServiceErrors]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => VehicleResultDirective),\n multi: true,\n },\n ],\n})\nexport class VehicleResultDirective extends AbstractValidationDirective {\n @Input('hukVehicleServiceErrors') public checkValue: string[] = [];\n\n public validate(): ValidationErrors | null {\n return this.checkValue.length ? { vehicleServiceErrors: true } : null;\n }\n}\n","import { PhoneNumber, Salutation, SelectOption, ZipCity } from '@web-lib-angular/hukde-tr';\n\nexport interface PersonalData {\n salutation: Salutation | undefined;\n hasTitle: boolean | undefined;\n title: string | undefined;\n firstName: string | undefined;\n name: string;\n birthDate: Date | undefined;\n streetNumber: string;\n deliverNote: string | undefined;\n location: ZipCity;\n mail: string | undefined;\n mail1: string | undefined;\n phoneNumber: PhoneNumber | undefined;\n}\n\nexport interface PersonalDataKfz {\n parentPersonalData: PersonalData | undefined;\n}\n\nexport const DEFAULT_PERSONAL_DATA_OBJECT: Readonly = {\n hasTitle: undefined,\n title: undefined,\n salutation: undefined,\n firstName: undefined,\n name: '',\n streetNumber: '',\n deliverNote: undefined,\n location: {\n zip: '',\n city: '',\n },\n mail: undefined,\n mail1: undefined,\n birthDate: undefined,\n phoneNumber: undefined,\n};\n\nexport const NATURAL_PERSON_OPTIONS: SelectOption[] = [\n { value: true, label: 'Ich als Privatperson' },\n { value: false, label: 'Firma' },\n];\n","\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n

\n Die eingegebene Postleitzahl weicht von der im Angebot ({{ zipCity?.zip }}) ab. Ist die hier\n eingegebene Postleitzahl ({{ value.location.zip }}) korrekt?
Ihr Angebot wird dann\n nochmal neu berechnet.\n

\n \n \n \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 { PersonalData } from './personal-data';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport {\n isTrueProperty,\n SELECT_BUTTON_ARRAY_YES_NO,\n Salutation,\n SelectOption,\n ZipCity,\n ModalComponent,\n} from '@web-lib-angular/hukde-tr';\nimport { merge, of } from 'rxjs';\nimport { NgModel } from '@angular/forms';\nimport { filter } from 'rxjs/operators';\n\nexport type PartialRecord = {\n [P in K]?: T;\n};\nexport type PersonalDataInputLabelsKey =\n | 'salutation'\n | 'hasTitle'\n | 'title'\n | 'firstName'\n | 'lastName'\n | 'birthDate'\n | 'mail'\n | 'mail2'\n | 'address'\n | 'phone';\nexport type PersonalDataInputLabels = PartialRecord;\n\nexport const DEFAULT_LABELS: Readonly = {\n salutation: 'Wie lautet Ihre Anrede?',\n hasTitle: 'Tragen Sie einen Titel?',\n title: 'Welchen Titel tragen Sie?',\n firstName: 'Wie lautet Ihr Vorname?',\n lastName: 'Wie lautet Ihr Nachname?',\n birthDate: 'Wann sind Sie geboren?',\n mail: 'Wie lautet Ihre E-Mail-Adresse?',\n mail2: 'Wiederholen Sie bitte die Eingabe Ihrer E-Mail-Adresse:',\n address: 'Wie lautet Ihre Anschrift?',\n phone: 'Unter welcher Telefonnummer können wir Sie erreichen?',\n};\n\n@Component({\n selector: 'huk-personal-data-zm',\n templateUrl: 'zm-personal-data.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZmPersonalDataComponent implements OnInit, OnChanges, AfterViewChecked {\n public birthDateStart = new Date(1900, 0, 1);\n public birthDateEnd = new Date(1999, 11, 31);\n\n public readonly yesNoOptions = SELECT_BUTTON_ARRAY_YES_NO;\n public salutationOptions: SelectOption[] = [\n { value: Salutation.Woman, label: 'Frau' },\n { value: Salutation.Man, label: 'Herr' },\n ];\n\n public showMail = true;\n public showPhone = true;\n public showBirthDate = true;\n public showSalutation = true;\n public showTitle = true;\n public isNaturalPerson = true;\n public isCompanyAvailable = false;\n public companyDisallowedValue: undefined | Salutation = undefined;\n public companyDisallowedError = '';\n\n @Input('disabled') public isDisabled = false;\n @Input() public value: Readonly;\n @Input() public inputLabels = DEFAULT_LABELS;\n @Input() public zipCity: ZipCity | undefined = undefined;\n\n @Output() public valueChange = new EventEmitter();\n @Output() public zipCityUpdate = new EventEmitter();\n\n @ViewChild(ModalComponent, { static: true })\n public modal: ModalComponent;\n @ViewChild('zipCityModel')\n public zipCityModel: NgModel;\n\n private _tempZipCity: ZipCity | undefined = undefined;\n private _zipCheck: string | undefined = undefined;\n private _initialized = false;\n\n @Input()\n public set hideMail(v: boolean) {\n this.showMail = !isTrueProperty(v);\n }\n\n @Input()\n public set hidePhone(v: boolean) {\n this.showPhone = !isTrueProperty(v);\n }\n\n @Input()\n public set hideBirthDate(v: boolean) {\n this.showBirthDate = !isTrueProperty(v);\n }\n\n @Input()\n public set hideSalutation(v: boolean) {\n this.showSalutation = !isTrueProperty(v);\n }\n\n @Input()\n public set hideTitle(v: boolean) {\n this.showTitle = !isTrueProperty(v);\n }\n\n @Input()\n public set commercial(v: boolean) {\n this.isNaturalPerson = !isTrueProperty(v);\n }\n\n @Input()\n public set companyAvailable(v: boolean) {\n this.isCompanyAvailable = isTrueProperty(v);\n }\n\n @Input()\n public set disallowCompany(v: string | undefined) {\n if (v) {\n this.companyDisallowedValue = Salutation.Company;\n this.companyDisallowedError = v;\n } else {\n this.companyDisallowedValue = undefined;\n this.companyDisallowedError = '';\n }\n }\n\n public ngOnInit() {\n if (this.isNaturalPerson === false) {\n this.inputLabels = {\n ...this.inputLabels,\n lastName: 'Wie heißt die Firma?',\n };\n }\n if (this.isCompanyAvailable === true) {\n this.salutationOptions.push({\n value: Salutation.Company,\n label: 'Firma',\n });\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n // reset zip check if value is changed\n if (changes.zipCity && changes.zipCity.currentValue != null) {\n this._zipCheck = undefined;\n }\n // preset location in personal data if no customer available\n if (!this.value.location.zip && changes.zipCity) {\n this.valueChange.emit({\n ...this.value,\n location: { ...this.zipCity! },\n });\n }\n }\n\n public ngAfterViewChecked(): void {\n // wait until model group has its control\n if (!this._initialized && this.zipCityModel.control != null) {\n this._initialized = true;\n merge(\n this.zipCityModel.control.statusChanges,\n // if value is set force check, zip-input does not fire if locService is offline\n of(this.value && this.value.location && this.value.location.zip ? 'VALID' : 'INVALID'),\n )\n .pipe(\n // if an external zipCity is set, the user entered a valid zipCity and it is different open the modal\n filter(\n (data) =>\n !this.isDisabled && this.zipCity != null && data === 'VALID' && !this._zipCheck,\n ),\n )\n .subscribe(() => this._checkZipDifference());\n }\n }\n\n private get _isSalutationCompanySelected(): boolean {\n return this.value.salutation === Salutation.Company;\n }\n\n public get isTitleVisible(): boolean {\n return (\n this.showTitle &&\n ((this.isNaturalPerson && !this.isCompanyAvailable) || !this._isSalutationCompanySelected)\n );\n }\n\n public get isFirstNameVisible(): boolean {\n return this.isNaturalPerson && !this._isSalutationCompanySelected;\n }\n\n public setSalutation(salutation: PersonalData['salutation']) {\n this.value = {\n ...this.value,\n salutation,\n };\n this.valueChange.emit(this.value);\n }\n\n public setHasTitle(hasTitle: PersonalData['hasTitle']) {\n this.value = {\n ...this.value,\n hasTitle,\n };\n this.valueChange.emit(this.value);\n }\n\n public setTitle(title: PersonalData['title']) {\n this.value = {\n ...this.value,\n title,\n };\n this.valueChange.emit(this.value);\n }\n\n public setFirstName(firstName: PersonalData['firstName']) {\n this.value = {\n ...this.value,\n firstName,\n };\n this.valueChange.emit(this.value);\n }\n\n public setLastName(name: PersonalData['name']) {\n this.value = {\n ...this.value,\n name,\n };\n this.valueChange.emit(this.value);\n }\n\n public setBirthDate(birthDate: PersonalData['birthDate']) {\n this.value = {\n ...this.value,\n birthDate,\n };\n this.valueChange.emit(this.value);\n }\n\n public setStreetNumber(streetNumber: PersonalData['streetNumber']) {\n this.value = {\n ...this.value,\n streetNumber,\n };\n this.valueChange.emit(this.value);\n }\n\n public setDeliverNote(deliverNote: PersonalData['deliverNote']) {\n this.value = {\n ...this.value,\n deliverNote,\n };\n this.valueChange.emit(this.value);\n }\n\n public setMail(mail: PersonalData['mail']) {\n this.value = {\n ...this.value,\n mail,\n };\n this.valueChange.emit(this.value);\n }\n\n public setMail1(mail1: PersonalData['mail1']) {\n this.value = {\n ...this.value,\n mail1,\n };\n this.valueChange.emit(this.value);\n }\n\n public setPhoneNumber(phoneNumber: PersonalData['phoneNumber']) {\n this.value = {\n ...this.value,\n phoneNumber,\n };\n this.valueChange.emit(this.value);\n }\n\n public setLocation(zipCity: PersonalData['location'], found: boolean) {\n if (this.zipCity && this._zipCheck !== zipCity.zip && found) {\n this._zipCheck = undefined;\n }\n this.valueChange.emit({\n ...this.value,\n location: zipCity,\n });\n }\n\n public closeModal(useCustomerValue: boolean) {\n this.modal.close(true);\n const value = {\n ...this.value,\n location: useCustomerValue ? this._tempZipCity! : { zip: '', city: '' },\n };\n\n // user selects a different zip, fire an event to notify interested parties\n if (useCustomerValue && this.zipCity!.zip !== value.location.zip) {\n this.zipCityUpdate.emit({\n zip: value.location.zip,\n city: value.location.city,\n });\n }\n this.valueChange.emit(value);\n\n if (useCustomerValue) {\n this._zipCheck = this.value.location.zip;\n }\n this._tempZipCity = undefined;\n }\n\n private _checkZipDifference() {\n // external zipCity existence check is done by observable chain, vnPlz is set if group is valid\n if (\n this.value.location &&\n this.value.location.zip &&\n this.zipCity!.zip !== this.value.location.zip\n ) {\n this._tempZipCity = { ...this.value.location };\n if (!this.modal.isOpen) {\n this.modal.open();\n }\n }\n }\n}\n","\n \n \n \n \n \n \n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n isTrueProperty,\n SELECT_BUTTON_ARRAY_YES_NO,\n SelectOption,\n} from '@web-lib-angular/hukde-tr';\nimport { PersonalDataKfz } from './personal-data';\nimport { DEFAULT_LABELS } from './zm-personal-data.component';\n\n@Component({\n selector: 'huk-personal-data-kr',\n templateUrl: 'personal-data.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PersonalDataComponent {\n public isAlreadyCustomerVisible = false;\n public isParentVisible = false;\n\n @Input('disabled')\n public isDisabled = false;\n\n public readonly yesNoOptions: SelectOption[] = SELECT_BUTTON_ARRAY_YES_NO;\n public readonly labels = {\n ...DEFAULT_LABELS,\n firstName: 'Wie heißt Ihr Erziehungsberechtigter mit Vornamen?',\n lastName: 'Wie heißt Ihr Erziehungsberechtigter mit Nachnamen?',\n address: 'Welche Anschrift hat Ihr Erziehungsberechtigter?',\n };\n\n @Input() public value: Readonly;\n @Output() public valueChange = new EventEmitter();\n\n @Input()\n public set alreadyCustomer(v: boolean) {\n this.isAlreadyCustomerVisible = isTrueProperty(v);\n }\n\n @Input()\n public set parentVisible(v: boolean) {\n this.isParentVisible = isTrueProperty(v);\n }\n\n public setParentPersonalData(parentPersonalData: PersonalDataKfz['parentPersonalData']) {\n this.valueChange.emit({\n ...this.value,\n parentPersonalData,\n });\n }\n}\n","import { SelectOption } from '@web-lib-angular/hukde-tr';\n\n// tslint:disable\nexport namespace PriorInsuranceCompany {\n export type Huk = 'HUK';\n export type Huk24 = 'HUK24';\n export type Other = 'VU';\n export const Huk: Huk = 'HUK';\n export const Huk24: Huk24 = 'HUK24';\n export const Other: Other = 'VU';\n}\n// tslint:enable\nexport type PriorInsuranceCompany =\n | PriorInsuranceCompany.Huk\n | PriorInsuranceCompany.Huk24\n | PriorInsuranceCompany.Other;\n\nexport enum PartnerContractKind {\n Huk = 1,\n Other,\n None,\n}\n\nexport const PRIOR_INSURANCE_COMPANY_OPTIONS: SelectOption[] = [\n { value: PriorInsuranceCompany.Huk, label: 'HUK-COBURG' },\n { value: PriorInsuranceCompany.Huk24, label: 'HUK24' },\n { value: PriorInsuranceCompany.Other, label: 'Anderes Unternehmen' },\n];\n\nexport const INSURANCE_HOLDER_SELF_OPTIONS: SelectOption[] = [\n { value: true, label: 'Ich selbst' },\n { value: false, label: 'Eine andere Person' },\n];\n\nexport const SELF_CANCELLED_OPTIONS: SelectOption[] = [\n { value: true, label: 'Versicherungsnehmer' },\n { value: false, label: 'Versicherungsgesellschaft' },\n];\n\nexport type SelfCancelled = 'VN' | 'VU';\nexport function mapSelfCancelledOptions(value: boolean): SelfCancelled {\n return value === true ? 'VN' : 'VU';\n}\n\nexport const PARTNER_CONTRACT_OPTIONS: SelectOption[] = [\n {\n value: PartnerContractKind.Huk,\n label: 'Ja, bei der HUK-COBURG oder HUK24',\n },\n {\n value: PartnerContractKind.Other,\n label: 'Ja, bei einem anderen Unternehmen',\n },\n { value: PartnerContractKind.None, label: 'Nein' },\n];\n","import { APP_INITIALIZER, Inject, Injectable, InjectionToken } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Config, CONFIG_TOKEN, SelectOption } from '@web-lib-angular/hukde-tr';\nimport { map } from 'rxjs/operators';\n\ninterface OptionsPayload {\n id: number | undefined;\n name: string;\n nr: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PriorInsuranceHukdeOptionsService {\n private _options: SelectOption[] = [];\n private _rawOptions: OptionsPayload[];\n private readonly _url: string;\n\n constructor(private _http: HttpClient, @Inject(CONFIG_TOKEN) config: Config) {\n this._url = `${config.serviceOrigin}vorversicherer/api/1/list`;\n }\n\n public initData(): Promise {\n return new Promise((resolve, reject) => {\n this._loadOptionsFromServer((err?: {}) => {\n if (err === undefined) {\n resolve(true);\n }\n reject(err);\n });\n });\n }\n\n public getOptions(): SelectOption[] {\n return this._options;\n }\n\n private _loadOptionsFromServer(cb: (err?: {}) => void): void {\n this._http\n .get(this._url)\n .pipe(\n map((data: OptionsPayload[]) => {\n const options: SelectOption[] = [];\n // FE needs an additional item to trigger the \"Sonstige\" input-box.\n // For the case if the searched InsuranceCompany is not in the list.\n // Older version of API has this item.\n this._rawOptions = data = [...data, { id: -1, nr: '0000000', name: 'Sonstige' }];\n let index = 0;\n for (const entry of data) {\n options.push({ value: entry.id ?? index++, label: entry.name });\n }\n return options;\n }),\n )\n .subscribe(\n (options: SelectOption[]) => {\n this._options = options;\n cb();\n },\n (e: {}) => cb(e),\n );\n }\n\n public getVuNrByName(name: string | undefined): string | null {\n if (!name || !this._rawOptions.length) {\n return null;\n }\n return this._rawOptions.find((option: OptionsPayload) => option.name === name)?.nr || null;\n }\n}\n\nexport function insuranceOptionsFactory(service: PriorInsuranceHukdeOptionsService) {\n return (): Promise => service.initData();\n}\n\nexport const PROVIDE_PRIOR_INSURANCE_HUKDE_OPTIONS_SERVICE = [\n {\n provide: APP_INITIALIZER as InjectionToken<{}>,\n useFactory: insuranceOptionsFactory,\n deps: [PriorInsuranceHukdeOptionsService],\n multi: true,\n },\n PriorInsuranceHukdeOptionsService,\n];\n","export const DEFAULT_PUBLIC_JOB_OBJECT: Readonly = {\n oedNoed: undefined,\n official: undefined,\n engineer: undefined,\n};\n\nexport interface PublicJob {\n oedNoed: number | undefined;\n official: number | undefined;\n engineer: number | undefined;\n}\n\nexport function mapPublicJob(publicJob: PublicJob): PublicJob {\n return {\n oedNoed: publicJob.oedNoed,\n official: publicJob.oedNoed === 1 ? publicJob.official : undefined,\n engineer: publicJob.oedNoed === 2 ? publicJob.engineer : undefined,\n };\n}\n","\n \n \n

Als Rentner bzw. Pensionär machen Sie bitte Angaben zu Ihrer letzten Beschäftigung.

\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n
\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PublicJob, DEFAULT_PUBLIC_JOB_OBJECT } from './public-job';\n\n@Component({\n selector: 'huk-public-job',\n templateUrl: './public-job.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PublicJobComponent {\n @Input() public disabled = false;\n @Input() public value: Readonly = DEFAULT_PUBLIC_JOB_OBJECT;\n @Output() public valueChange = new EventEmitter();\n\n public oedNoedOptions = [\n { value: 1, label: 'Ja' },\n { value: 2, label: 'Nein' },\n ];\n\n public officialOptions = [\n { value: 1, label: 'Ja' },\n { value: 2, label: 'Nein' },\n ];\n\n public engineerOptions = [\n { value: 1, label: 'Ja' },\n { value: 2, label: 'Nein' },\n ];\n\n public setOedNoed(oedNoed: PublicJob['oedNoed']) {\n this.valueChange.emit({\n ...this.value,\n oedNoed,\n });\n }\n\n public setOfficial(official: PublicJob['official']) {\n this.valueChange.emit({\n ...this.value,\n official,\n });\n }\n\n public setEngineer(engineer: PublicJob['engineer']) {\n this.valueChange.emit({\n ...this.value,\n engineer,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, OnChanges } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport {\n DEFAULT_ERROR_MAPPING,\n SelectOption,\n ValueAccessorDirective,\n} from '@web-lib-angular/hukde-tr';\n\nexport enum VehicleLicensePlateType {\n Normal = 1,\n Seasonal,\n}\n\nexport interface VehicleLicensePlate {\n type: VehicleLicensePlateType | undefined;\n seasonalStart: number | undefined;\n seasonalEnd: number | undefined;\n}\n\nexport const VEHICLE_LICENSE_PLATE_TYPE_OPTIONS: SelectOption[] = [\n { value: VehicleLicensePlateType.Normal, label: 'Normales Kennzeichen' },\n { value: VehicleLicensePlateType.Seasonal, label: 'Saisonkennzeichen' },\n];\n\nexport interface SaisonKz {\n beginn: number;\n ende: number;\n}\n\nexport function mapSeasonalLicensePlate(licensePlate: VehicleLicensePlate): SaisonKz {\n return {\n beginn: licensePlate.seasonalStart! + 1,\n ende: licensePlate.seasonalEnd! + 1,\n };\n}\n\n@Component({\n selector: 'huk-seasonal-time',\n templateUrl: 'seasonal-time.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SeasonalTimeComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SeasonalTimeComponent),\n multi: true,\n },\n {\n provide: DEFAULT_ERROR_MAPPING,\n useValue: { invalid: 'KRF013' },\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeasonalTimeComponent\n extends ValueAccessorDirective\n implements Validator, OnChanges {\n // TODO: add explicit constructor\n\n @Input() public startDate: Date | undefined = undefined;\n\n public seasonalOptions = [\n { label: 'Januar', value: 0 },\n { label: 'Februar', value: 1 },\n { label: 'März', value: 2 },\n { label: 'April', value: 3 },\n { label: 'Mai', value: 4 },\n { label: 'Juni', value: 5 },\n { label: 'Juli', value: 6 },\n { label: 'August', value: 7 },\n { label: 'September', value: 8 },\n { label: 'Oktober', value: 9 },\n { label: 'November', value: 10 },\n { label: 'Dezember', value: 11 },\n ];\n public seasonalOptionsEnd: SelectOption[] = [];\n\n private _onValidatorChange = () => {};\n\n public ngOnChanges(): void {\n this._onValidatorChange();\n }\n\n public validate(): ValidationErrors | null {\n const value = { ...this.value! };\n if (this.startDate == null || value.seasonalStart == null || value.seasonalEnd == null) {\n return null;\n }\n\n return validateSeasonalTime(value, this.startDate);\n }\n\n public registerOnValidatorChange(fn: () => void) {\n this._onValidatorChange = fn;\n }\n\n public writeValue(value: VehicleLicensePlate | null) {\n super.writeValue(value);\n\n if (this.value && this.value.seasonalStart != null) {\n this._updateEndOptions();\n }\n }\n\n public updateSeasonalStart(seasonalStart?: number) {\n this.value = {\n ...this.value!,\n seasonalStart,\n };\n\n if (seasonalStart != null) {\n this._updateEndOptions();\n }\n }\n\n public updateSeasonalEnd(seasonalEnd: number) {\n this.value = {\n ...this.value!,\n seasonalEnd,\n };\n }\n\n private _updateEndOptions() {\n const seasonalStart = this.value!.seasonalStart!;\n this.seasonalOptionsEnd = this.seasonalOptions\n // skip 1 month length && disallow 12 month selection\n .filter((value) => value.value > seasonalStart && value.value - seasonalStart < 11)\n // disallow 12 month selection\n .concat(this.seasonalOptions.filter((value) => value.value < seasonalStart - 1));\n }\n}\n\nexport function validateSeasonalTime(\n value: Readonly,\n startDate: Date,\n): ValidationErrors | null {\n const start = value.seasonalStart!;\n const end = value.seasonalEnd!;\n const insuranceStart = startDate.getMonth();\n const valid =\n (end < start && (end >= insuranceStart || start <= insuranceStart)) ||\n (start <= insuranceStart && insuranceStart <= end);\n // return start <= date && date <= end ? null : {invalid: true};\n return valid ? null : { invalid: true };\n}\n","\n Für welchen Zeitraum benötigen Sie das Saisonkennzeichen?\n \n \n \n \n\n","import {\n AbstractSummaryService,\n BeforeNextStep,\n DisableStepService,\n OnNextStep,\n SummaryDataService,\n} from '@web-lib-angular/hukde-tr';\nimport { ChangeDetectorRef, Injector, OnInit, Directive } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Directive()\nexport abstract class AbstractSummaryDirective implements BeforeNextStep, OnInit, OnNextStep {\n public amount = 0;\n public avbColor = 'white';\n public avbClicked = false;\n public avbLoading = false;\n public agreed = false;\n public summaryDisabled = true;\n public documentsText = '';\n\n public hasSepa = false;\n public hasSolvencyInformation = false;\n public downloadProductPdf: string | undefined;\n public downloadConditionPdf: string | undefined;\n public downloadPrivacyPdf: string | undefined;\n public downloadEGPdf: string | undefined;\n public downloadSustainabilityPdf: string | undefined;\n public downloadCreditWorthiness: string | undefined;\n\n protected _summaryService: AbstractSummaryService<{}>;\n protected _router: Router;\n protected _disableStepService: DisableStepService;\n protected _cd: ChangeDetectorRef;\n\n constructor(injector: Injector) {\n this._summaryService = injector.get>(AbstractSummaryService);\n this._router = injector.get(Router);\n this._disableStepService = injector.get(DisableStepService);\n this._cd = injector.get(ChangeDetectorRef);\n const summaryDataService = injector.get(SummaryDataService);\n\n this.amount = summaryDataService.amount || 0;\n }\n\n public ngOnInit() {\n this.summaryDisabled = this._disableStepService.disable;\n }\n\n public showSummaryPdf() {\n this._summaryService.showOrderSummaryFile();\n }\n\n public showSepaPdf() {\n this._summaryService.showSepaFile();\n }\n\n public downloadAvb() {\n if (!this.avbLoading) {\n this.avbLoading = true;\n this.avbColor = 'petrol';\n\n this._summaryService.showAvbFile(\n () => {\n this.avbClicked = true;\n this.avbLoading = false;\n this._cd.markForCheck();\n },\n () => {\n this.avbLoading = false;\n this.avbColor = 'white';\n },\n );\n }\n }\n\n public beforeNextStep() {\n return this._summaryService.order();\n }\n\n public onNextStep() {\n this._router.navigate(['quittung']);\n }\n\n public updateAgreed(agreed: boolean) {\n this.agreed = agreed;\n }\n}\n","import { AbstractSummaryService as BaseAbstractSummaryService } from '@web-lib-angular/hukde-tr';\nimport { Observable } from 'rxjs';\nimport { Injector } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\n\nexport abstract class AbstractSummaryService extends BaseAbstractSummaryService {\n private _router: Router;\n protected _continueOnCreditError = false;\n\n constructor(injector: Injector) {\n super(injector);\n\n this._router = injector.get(Router);\n }\n\n public order(): Observable {\n return super.order().pipe(\n map((value) => {\n // TODO disabled until credit check is changed in backend\n // if solvency check fails and offer needs to be updated, jump back to the offer page\n // if (!value && this._isJumpToOfferRequired()) {\n if (!value) {\n this._handleCreditError();\n this._router.navigate(['unser-angebot']);\n return false;\n }\n return true;\n }),\n );\n }\n\n protected abstract _handleCreditError(): void;\n\n protected abstract _isJumpToOfferRequired(): boolean;\n}\n","import { OldVehicle, OldVehicleSale } from '../vehicle/vehicle';\nimport {\n BaseCustomer,\n Customer,\n CustomerAddress,\n formatIsoDate,\n mapBaseCustomer,\n PersoenlicheDaten,\n Salutation,\n Zahlart,\n ConsentService,\n} from '@web-lib-angular/hukde-tr';\nimport { PersonalData } from '../personal-data/personal-data';\n\nexport interface DefaultPerson {\n firstName: string | undefined;\n lastName: string;\n salutationId: number;\n titel: string | undefined;\n}\n\nexport interface Erziehungsberechtigter extends DefaultPerson {\n firstName: string;\n address: CustomerAddress | undefined;\n}\n\nexport function mapErziehungsberechtigter(data: PersonalData): Erziehungsberechtigter {\n const person = mapDefaultPerson(data);\n return {\n ...person,\n firstName: person.firstName!,\n address: mapAddress(data),\n };\n}\n\nexport interface Verbleib {\n verbleib: number;\n kaeufer: number | undefined;\n verkaufDatum: string | undefined;\n}\n\nexport function mapVerbleib(typ: OldVehicle, buyer?: OldVehicleSale, buyDate?: Date): Verbleib {\n return {\n verbleib: typ,\n kaeufer: buyer,\n verkaufDatum: buyDate ? formatIsoDate(buyDate) : undefined,\n };\n}\n\nexport interface Wohneigentum {\n art: number | undefined;\n versichert: boolean | undefined;\n}\n\nexport interface Halter {\n typ: number | undefined;\n halterAddress?: CustomerAddress;\n}\n\nexport interface HalterForClaim extends Halter, DefaultPerson {\n typ: number;\n halterAddress: CustomerAddress;\n}\n\nexport function mapAddress(data: PersonalData): CustomerAddress {\n return {\n street: data.streetNumber,\n deliveryNote: data.deliverNote,\n city: data.location.city,\n postalCode: data.location.zip,\n };\n}\n\nexport function mapDefaultPerson(data: PersonalData): DefaultPerson {\n const isCompany = data.salutation === Salutation.Company;\n return {\n firstName: !isCompany ? data.firstName! : undefined,\n lastName: data.name!,\n salutationId: data.salutation!,\n titel: !isCompany && data.hasTitle ? data.title : undefined,\n };\n}\n\nexport interface Payment {\n iban: string;\n bic: string;\n}\n\nexport function mapPayment(data: Zahlart): Payment {\n return {\n iban: data.bankIban,\n bic: data.bankBic,\n };\n}\n\nexport interface KfzCustomer extends BaseCustomer {\n hasHukContract: boolean | undefined;\n}\n\nexport function mapCustomer(\n persData: PersoenlicheDaten,\n consent: ConsentService,\n isCompany: boolean,\n customer: Customer | undefined,\n): KfzCustomer {\n return {\n ...mapBaseCustomer(persData, consent, isCompany),\n hasHukContract: customer ? customer.hukContract : undefined,\n };\n}\n","import { Injectable } from '@angular/core';\n\nexport interface Kfz {\n geschaeft?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AbstractTrackingMappingService {\n private _startDate: Date;\n\n constructor() {}\n\n public mapDataGeschaeft(startDate: Date): Kfz {\n this._startDate = startDate;\n return {\n geschaeft: this._ermittleGeschaeft(),\n };\n }\n\n private _ermittleGeschaeft() {\n const nextyear = new Date().getFullYear() + 1;\n let result = '';\n if (this._startDate) {\n result = this._startDate.getFullYear() >= nextyear ? 'JW-Geschaeft' : 'Unterjaehrig';\n }\n return result;\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { Config, CONFIG_TOKEN } from '@web-lib-angular/hukde-tr';\n\nexport const DEFAULT_CERTIFICATE = {\n mkn: '',\n tkn: '',\n};\n\nexport const DEFAULT_VEHICLE_RESULT = {\n brand: '',\n certificate: DEFAULT_CERTIFICATE,\n label: '',\n wert: 0,\n};\n\nexport interface VehicleRegistrationCertificate {\n mkn: string;\n tkn: string;\n}\n\nexport interface VehicleSearchResult {\n brand: string;\n certificate: VehicleRegistrationCertificate;\n label: string;\n wert: number | undefined;\n}\n\nexport interface VehicleData {\n brand: string;\n label: string;\n producerNumber: string;\n typeNumber: string;\n wert: number | undefined;\n}\n\n@Injectable({ providedIn: 'root' })\nexport abstract class AbstractVehicleService {\n protected readonly _baseUrl: string;\n\n constructor(protected _http: HttpClient, @Inject(CONFIG_TOKEN) config: Config) {\n this._baseUrl = `${config.serviceOrigin}${config.product}/api/`;\n }\n\n protected _mapData(data: VehicleData): VehicleSearchResult {\n return {\n brand: data.brand,\n certificate: {\n mkn: data.producerNumber,\n tkn: data.typeNumber,\n },\n label: data.label,\n wert: data.wert,\n };\n }\n\n protected _handleError(error: HttpErrorResponse): Observable {\n if (error.status === 404) {\n return throwError(error.status);\n }\n return throwError('Unhandled error');\n }\n\n protected _escapeUrl(strings: TemplateStringsArray, ...values: string[]) {\n let result = values[0]; // The first value is our base URL\n for (let i = 1; i < values.length; i++) {\n result += strings[i] + encodeURIComponent(values[i] as string);\n }\n return result;\n }\n}\n","import { assertNever, SelectOption } from '@web-lib-angular/hukde-tr';\nimport { PersonalDataInputLabels } from '../personal-data/zm-personal-data.component';\n\nexport enum VehicleOwner {\n Me = 0,\n Spouse = 1,\n LifePartner = 6,\n Child = 2,\n Other = 11,\n}\n\nexport const OWNER_OPTIONS: SelectOption[] = [\n { value: VehicleOwner.Me, label: 'Ich, als Versicherungsnehmer' },\n { value: VehicleOwner.Spouse, label: 'Mein Ehepartner' },\n {\n value: VehicleOwner.LifePartner,\n label: 'Mein Lebenspartner im gemeinsamen Haushalt',\n },\n { value: VehicleOwner.Child, label: 'Mein Kind' },\n { value: VehicleOwner.Other, label: 'Eine andere Person' },\n];\n\nexport function generateOwnerPersonalDataLabels(\n owner: VehicleOwner | undefined,\n): PersonalDataInputLabels {\n if (owner === undefined || owner === VehicleOwner.Me) {\n return {};\n }\n\n let value: [string, string] = ['', ''];\n switch (owner) {\n case VehicleOwner.Spouse:\n value = ['Ihres Ehepartners', 'Ihr Ehepartner'];\n break;\n case VehicleOwner.LifePartner:\n value = ['Ihres Lebenspartners', 'Ihr Lebenspartner'];\n break;\n case VehicleOwner.Child:\n value = ['Ihres Kindes', 'Ihr Kind'];\n break;\n case VehicleOwner.Other:\n value = ['des Halters', 'der Halter'];\n break;\n default:\n assertNever(owner);\n }\n\n return {\n salutation: `Wie ist die Anrede ${value[0]}?`,\n firstName: `Wie heißt ${value[1]} mit Vornamen?`,\n lastName: `Wie heißt ${value[1]} mit Nachnamen?`,\n address: `Welche Anschrift hat ${value[1]}?`,\n };\n}\n\nexport const FIRST_REGISTRATION_OPTIONS: SelectOption[] = [\n { value: true, label: 'Ja' },\n { value: false, label: 'Nein, es ist ein Neufahrzeug' },\n];\n\nexport enum VehiclePowerUnit {\n Ps,\n Kw,\n}\n\nexport const POWER_UNIT_OPTIONS: SelectOption[] = [\n { value: VehiclePowerUnit.Kw, label: 'kW' },\n { value: VehiclePowerUnit.Ps, label: 'PS' },\n];\n\nexport enum OldVehicle {\n WillBeSold = 1,\n Sold,\n ShutDown,\n Keep,\n}\n\nexport enum OldVehicleSale {\n Private = 1,\n Commercial,\n}\n\nexport const OLD_VEHICLE_OPTIONS: SelectOption[] = [\n {\n value: OldVehicle.WillBeSold,\n label: 'Wird in den nächsten 2 Monaten verkauft',\n },\n { value: OldVehicle.Sold, label: 'Wurde verkauft' },\n {\n value: OldVehicle.ShutDown,\n label: 'Wurde bzw. wird außer Betrieb gesetzt',\n },\n {\n value: OldVehicle.Keep,\n label: 'Bleibt auf den bisherigen Halter zugelassen',\n },\n];\n\nexport const OLD_VEHICLE_SALE_OPTIONS: SelectOption[] = [\n { value: OldVehicleSale.Private, label: 'Verkauft an Privatperson' },\n { value: OldVehicleSale.Commercial, label: 'Verkauft an Kfz-Händler' },\n];\n\nexport enum Location {\n None = 0,\n Garage = 1,\n CarPark = 3,\n Carport = 4,\n}\n\nexport const PARKING_OPTIONS: SelectOption[] = [\n { value: Location.Garage, label: 'Einzel-/Doppelgarage' },\n {\n value: Location.CarPark,\n label: 'Reservierter Stellplatz in Tief- oder Sammelgarage',\n },\n { value: Location.Carport, label: 'Carport' },\n { value: Location.None, label: 'Sonstiger Stellplatz' },\n];\n\nexport enum Property {\n House = 3,\n Apartment = 4,\n}\n\nexport const PROPERTY_OPTIONS: SelectOption[] = [\n { value: Property.House, label: 'Hauseigentum' },\n { value: Property.Apartment, label: 'Eigentumswohnung' },\n];\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Config, CONFIG_TOKEN } from '@web-lib-angular/hukde-tr';\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n AbstractVehicleService,\n VehicleData,\n VehicleRegistrationCertificate,\n VehicleSearchResult,\n} from './abstract-vehicle.service';\n\n@Injectable({ providedIn: 'root' })\nexport class VehicleSearchService extends AbstractVehicleService {\n public errors: string[] = [];\n\n constructor(http: HttpClient, @Inject(CONFIG_TOKEN) config: Config) {\n super(http, config);\n }\n\n public search(certificate: VehicleRegistrationCertificate): Observable {\n return this._http\n .get(\n this._baseUrl + `vehicles?producerNumber=${certificate.mkn}&typeNumber=${certificate.tkn}`,\n )\n .pipe(\n map((res: VehicleData) => {\n if (!res) {\n // We need to fake an error here if no response exists because backend returns 204 status\n throw new HttpErrorResponse({ status: 404 });\n }\n return this._mapData(res);\n }),\n catchError((err) => this._handleError(err)),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n AfterViewChecked,\n} from '@angular/core';\nimport { VehicleRegistrationCertificate, VehicleSearchResult } from './abstract-vehicle.service';\nimport { NgModelGroup } from '@angular/forms';\nimport { VehicleSearchService } from './vehicle-search.service';\n\n@Component({\n providers: [VehicleSearchService],\n selector: 'huk-vehicle-search-certificate',\n templateUrl: 'vehicle-search-certificate.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VehicleSearchCertificateComponent implements AfterViewChecked {\n @Input()\n public certificate: VehicleRegistrationCertificate = { mkn: '', tkn: '' };\n @Output()\n public certificateChange: EventEmitter = new EventEmitter();\n @Input()\n public result: VehicleSearchResult | undefined = undefined;\n @Output()\n public resultChange: EventEmitter = new EventEmitter();\n @Input()\n public hukVehicleServiceErrors: string[];\n\n @Input()\n public image = '';\n @Input()\n public previewImage = '';\n @Input()\n public notFoundError = 'KRF004';\n @Input()\n public equalError = 'KRF004';\n public expensiveCarError = 'KRF048';\n\n @ViewChild(NgModelGroup, { static: true })\n public group: NgModelGroup | undefined = undefined;\n\n public loading = false;\n public errors: string[] = [];\n private _initCall = true;\n\n constructor(public vehicleService: VehicleSearchService) {}\n\n public ngAfterViewChecked() {\n if (this._initCall) {\n this.searchVehicle();\n }\n }\n\n public setMkn(mkn: string) {\n this._resetSearch();\n this.certificate = {\n ...this.certificate,\n mkn,\n };\n this.certificateChange.emit(this.certificate);\n this.searchVehicle();\n }\n\n public setTkn(tkn: string) {\n this._resetSearch();\n this.certificate = {\n ...this.certificate,\n tkn,\n };\n this.certificateChange.emit(this.certificate);\n this.searchVehicle();\n }\n\n public searchVehicle() {\n if (this.group!.valid) {\n this._initCall = false;\n this.loading = true;\n this.vehicleService.search(this.certificate).subscribe(\n (result: VehicleSearchResult) => {\n if (result.wert === 3) {\n this.vehicleService.errors = [this.expensiveCarError];\n this._updateResult(undefined);\n } else {\n this._updateResult(result);\n }\n },\n (error: number) => {\n this.vehicleService.errors = [error === 404 ? this.notFoundError : 'TEC001'];\n this._updateResult(undefined);\n },\n );\n }\n }\n\n private _resetSearch() {\n this.vehicleService.errors = [];\n }\n\n private _updateResult(value: VehicleSearchResult | undefined) {\n this.loading = false;\n this.resultChange.emit(value);\n }\n}\n","\n \n
\n
\n Herstellerschlüssel-Nummer (HSN)\n \n \n Typschlüssel-Nummer (TSN)\n \n \n \n
\n
\n \n
\n
\n
\n
\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CommonsModule } from '@web-lib-angular/hukde-tr';\nimport { FormsModule } from '@angular/forms';\nimport { PublicJobComponent } from './public-job/public-job.component';\nimport { ZmPersonalDataComponent } from './personal-data/zm-personal-data.component';\nimport { PersonalDataComponent } from './personal-data/personal-data.component';\nimport { KilometersFirstRegistrationValidationDirective } from './directives/kilometers-first-registration-validation.directive';\nimport { ForbidHukSelectOptionValidationDirective } from './directives/forbid-huk-select-option-validation.directive';\nimport { CheckEqualMonthYearValidationDirective } from './directives/check-equal-month-year-validation.directive';\nimport { RequireOneValidationDirective } from './directives/require-one-validation.directive';\nimport { SeasonalTimeComponent } from './seasonal-time/seasonal-time.component';\nimport { VehicleSearchCertificateComponent } from './vehicle/vehicle-search-certificate.component';\nimport { CheckNotBothSelectedValidationDirective } from './directives/check-not-selected-both-validation.directive';\nimport { VehicleResultDirective } from './directives/vehicle-result-validation.directive';\n\nconst COMPONENTS = [\n PublicJobComponent,\n PersonalDataComponent,\n ZmPersonalDataComponent,\n SeasonalTimeComponent,\n VehicleSearchCertificateComponent,\n];\n\nconst DIRECTIVES = [\n VehicleResultDirective,\n KilometersFirstRegistrationValidationDirective,\n ForbidHukSelectOptionValidationDirective,\n CheckEqualMonthYearValidationDirective,\n CheckNotBothSelectedValidationDirective,\n RequireOneValidationDirective,\n];\n\n@NgModule({\n imports: [CommonModule, CommonsModule, FormsModule],\n declarations: [...COMPONENTS, ...DIRECTIVES],\n exports: [...COMPONENTS, ...DIRECTIVES],\n entryComponents: [],\n})\nexport class CommonsKfzModule {\n public static forRoot(): ModuleWithProviders {\n return {\n ngModule: CommonsKfzModule,\n };\n }\n}\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`.\n// If you need a different environment for `ng build --env=prod` copy this file to\n// `environment.prod.ts` and change the mapping in `.angular-cli.json`.\n\nexport const environment = {\n serviceOrigin: '/',\n category: 'kr',\n pageTitle: 'Tarifrechner Motorradversicherung | HUK-COBURG',\n title: 'Ihre Motorradversicherung – damit Sie das Freiheitsgefühl unbeschwert genießen können',\n product: 'krad',\n avatar: 'KRA010',\n};\n","import { ZipCity } from '@web-lib-angular/hukde-tr';\nimport {\n VehicleLicensePlate,\n VehicleOwner,\n VehiclePowerUnit,\n VehicleRegistrationCertificate,\n VehicleSearchResult,\n} from '@web-app-kfz/hukde-tr-commons';\n\nexport enum VehicleFinancing {\n Leasing = 2,\n Credit = 1,\n Own = 0,\n}\n\nexport interface Vehicle {\n search: VehicleSearchData;\n financing: VehicleFinancing | undefined;\n alreadyInsured: boolean | undefined;\n owner: VehicleOwner | undefined;\n startDate: Date | null;\n ownerLocation: ZipCity;\n licensePlate: VehicleLicensePlate;\n customPower: boolean | undefined;\n customPowerValue: number | undefined;\n customPowerValueUnit: VehiclePowerUnit | undefined;\n}\n\nexport interface VehicleSearchData {\n type: boolean | undefined;\n certificate: VehicleRegistrationCertificate | undefined;\n specification: VehicleSpecification | undefined;\n result: VehicleSearchResult | undefined;\n typeClass: VehicleTypeClass | undefined;\n}\n\nexport interface VehicleSpecification {\n [key: string]: string | null;\n manufacturer: string | null;\n model: string | null;\n capacity: string | null;\n power: string | null;\n}\n\nexport const DEFAULT_VEHICLE_SPECIFICATION_OBJECT: Readonly = {\n manufacturer: null,\n model: null,\n capacity: null,\n power: null,\n};\n\nexport interface VehicleSearchResultHolder {\n vehicles: VehicleSearchResult[];\n foundMore: boolean;\n}\n\nexport interface VehicleTypeClass {\n brand: string;\n ccm: number;\n type: string;\n wkz: string;\n power: {\n ps: number;\n kw: number;\n };\n}\n","import { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { assertNever, Config, CONFIG_TOKEN } from '@web-lib-angular/hukde-tr';\nimport { Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { VehicleSearchResultHolder, VehicleSpecification } from '../model/vehicle';\nimport { AbstractVehicleService, VehicleSearchResult } from '@web-app-kfz/hukde-tr-commons';\n\nexport type VehicleGeniusSearchType = keyof VehicleGeniusSearchData;\n\nexport interface VehicleGeniusSearchData {\n manufacturer: string[];\n capacity: string[];\n power: string[];\n vehicle: VehicleSearchResult[];\n}\n\nexport interface VehicleSearchDataResult {\n numberOfFoundResults: number;\n vehicles: VehicleResult[];\n}\n\nexport interface VehicleResult {\n producerNumber: string;\n typeNumber: string;\n label: string;\n brand: string;\n wert: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class VehicleGeniusSearchService extends AbstractVehicleService {\n private readonly _maxResults = 300;\n // tslint:disable-next-line:no-object-literal-type-assertion\n private _searchData: VehicleGeniusSearchData = {} as VehicleGeniusSearchData;\n\n constructor(http: HttpClient, @Inject(CONFIG_TOKEN) config: Config) {\n super(http, config);\n }\n\n public clearSearchData(what: VehicleGeniusSearchType) {\n if (this._searchData.hasOwnProperty(what)) {\n // use evil operation\n delete this._searchData[what];\n }\n }\n\n private _mapAndCacheData(what: VehicleGeniusSearchType, response: string[]) {\n switch (what) {\n case 'manufacturer':\n case 'capacity':\n case 'power': {\n this._searchData[what] = response as string[];\n return this._searchData[what];\n }\n default:\n return [];\n }\n }\n\n public searchGenius(\n what: T,\n spec: VehicleSpecification,\n ): Observable {\n const realWhat: VehicleGeniusSearchType = what as VehicleGeniusSearchType;\n const baseUrl = this._baseUrl + 'comfortsearch/';\n let urlCall = '';\n\n if (realWhat === 'manufacturer') {\n urlCall = baseUrl + 'manufacturers';\n return this._http.get(urlCall).pipe(\n map((res: string[]) => this._mapAndCacheData(what, res)),\n catchError((err) => this._handleError(err)),\n );\n }\n if (realWhat === 'capacity') {\n let params: HttpParams = new HttpParams();\n params = params.append('manufacturer', spec.manufacturer!);\n urlCall = baseUrl + 'capacities';\n return this._http\n .get(urlCall, { params })\n .pipe(\n map((res: string[]) => this._mapAndCacheData(what, res)),\n catchError((err) => this._handleError(err)),\n );\n }\n if (realWhat === 'power') {\n let params: HttpParams = new HttpParams();\n params = params.append('manufacturer', spec.manufacturer!);\n params = params.append('capacity', spec.capacity!);\n urlCall = baseUrl + 'powers';\n return this._http\n .get(urlCall, { params })\n .pipe(\n map((res: string[]) => this._mapAndCacheData(what, res)),\n catchError((err) => this._handleError(err)),\n );\n }\n\n return assertNever<'vehicle'>(realWhat);\n }\n\n public searchVehicles(spec: VehicleSpecification): Observable {\n const baseUrl = this._baseUrl + 'comfortsearch/';\n return this._http\n .get(\n this._escapeUrl`${baseUrl}vehicles?manufacturer=${spec.manufacturer!}\n&model=${\n spec.model ? spec.model : ''\n }\\&capacity=${spec.capacity!}&power=${spec.power!}&maxResults=${this._maxResults.toString()}`,\n )\n .pipe(\n map((res: VehicleSearchDataResult) => {\n if (res) {\n return {\n vehicles: res.vehicles.map(this._mapData),\n foundMore: res.numberOfFoundResults > this._maxResults,\n };\n }\n // Throw 404 if we do not get any results because backend gives 204 status\n throw new HttpErrorResponse({ status: 404 });\n }),\n catchError((err) => this._handleError(err)),\n );\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n

\n {{ vehicles[0] }}\n

\n
\n
\n 1\" nested>\n \n \n \n \n \n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n OnInit,\n} from '@angular/core';\nimport {\n DEFAULT_VEHICLE_SPECIFICATION_OBJECT,\n VehicleSpecification,\n VehicleSearchResultHolder,\n} from '../model/vehicle';\nimport {\n VehicleGeniusSearchData,\n VehicleGeniusSearchService,\n VehicleGeniusSearchType,\n} from '../service/vehicle-genius-search.service';\nimport { NgModelGroup } from '@angular/forms';\nimport { VehicleSearchResult } from '@web-app-kfz/hukde-tr-commons';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'huk-vehicle-genius-search',\n templateUrl: './vehicle-genius-search.component.html',\n})\nexport class VehicleGeniusSearchComponent implements OnInit {\n @Input() public specification: VehicleSpecification = DEFAULT_VEHICLE_SPECIFICATION_OBJECT;\n @Output() public specificationChange: EventEmitter = new EventEmitter();\n @Input() public result: VehicleSearchResult | undefined = undefined;\n @Output() public resultChange: EventEmitter<\n VehicleSearchResult | undefined | {}\n > = new EventEmitter();\n @ViewChild('group', { static: true }) public group: NgModelGroup | undefined = undefined;\n\n public errors: string[] = [];\n\n private _searchResultData: VehicleGeniusSearchData & { vehicleLabel: string[] } = {\n manufacturer: [],\n capacity: [],\n power: [],\n vehicle: [],\n vehicleLabel: [],\n };\n\n private _loading = false;\n\n public get loading() {\n return this._loading;\n }\n\n public get manufacturers(): string[] {\n return this._searchResultData.manufacturer;\n }\n\n public get capacities(): string[] {\n return this._searchResultData.capacity;\n }\n\n public get powers(): string[] {\n return this._searchResultData.power;\n }\n\n public get vehicles(): string[] {\n return this._searchResultData.vehicleLabel;\n }\n\n public get vehicle(): string | undefined {\n return !this.result ? undefined : this.result.label;\n }\n\n constructor(\n private _vehicleService: VehicleGeniusSearchService,\n private _cd: ChangeDetectorRef,\n ) {}\n\n public ngOnInit() {\n this._search('manufacturer', () => this._cd.markForCheck());\n if (this.specification.manufacturer) {\n this._search('capacity', () => this._cd.markForCheck());\n if (this.specification.capacity) {\n this._search('power', () => this._cd.markForCheck());\n if (this.specification.power) {\n this._searchVehicles(() => this._cd.markForCheck());\n }\n }\n }\n }\n\n private _search(what: VehicleGeniusSearchType, done?: () => void) {\n this.errors = [];\n this._loading = true;\n this._vehicleService.searchGenius(what, this.specification).subscribe(\n (data) => {\n this._loading = false;\n if (!data) {\n data = [];\n }\n switch (what) {\n case 'manufacturer':\n case 'capacity':\n case 'power': {\n this._searchResultData[what] = data as string[];\n break;\n }\n case 'vehicle': {\n this._searchResultData[what] = data as VehicleSearchResult[];\n }\n }\n if (done) {\n done();\n }\n this._cd.markForCheck();\n },\n () => {\n this._loading = false;\n },\n );\n }\n\n private _searchVehicles(done?: () => void) {\n this.errors = [];\n this._loading = true;\n this._vehicleService.searchVehicles(this.specification).subscribe(\n (data: VehicleSearchResultHolder) => {\n this._loading = false;\n if (data.foundMore) {\n this.errors = ['KRF044'];\n } else {\n this._searchResultData.vehicle = data.vehicles;\n this._searchResultData.vehicleLabel = data.vehicles.map((value) => value.label);\n\n if (this._searchResultData.vehicle.length === 1) {\n this.result = this._searchResultData.vehicle[0];\n this.resultChange.emit(this.result);\n }\n\n if (done) {\n done();\n }\n }\n },\n (status: number) => {\n this._loading = false;\n this.errors = status === 204 || status === 404 ? ['KRF046'] : ['TEC001'];\n this.resultChange.emit(undefined);\n this._cd.markForCheck();\n },\n );\n }\n\n public updateManufacturer(manufacturer: string | null) {\n this._resetVehicles();\n this._resetPowerCapacity();\n this._resetVehicles();\n\n this.specification = {\n ...this.specification,\n manufacturer,\n capacity: null,\n power: null,\n model: null,\n vehicle: null,\n };\n this.specificationChange.emit(this.specification);\n\n if (manufacturer != null) {\n this._search('capacity', () => {\n this._cd.markForCheck();\n\n if (this._searchResultData.capacity.length === 1) {\n this.updateCapacity(this._searchResultData.capacity[0]);\n }\n });\n }\n }\n\n public updateModel(model: string) {\n this._resetVehicles();\n this.specification = {\n ...this.specification,\n model,\n };\n if (\n this.specification.capacity &&\n this.specification.power &&\n this.specification.manufacturer\n ) {\n this._searchVehicles(() => this._cd.markForCheck());\n }\n this.specificationChange.emit(this.specification);\n }\n\n public updateCapacity(capacity: string | null) {\n this._resetVehicles();\n this.specification = {\n ...this.specification,\n capacity,\n };\n if (capacity != null) {\n this._search('power', () => {\n this._cd.markForCheck();\n\n if (this._searchResultData.power.length === 1) {\n this.updatePower(this._searchResultData.power[0]);\n }\n });\n }\n\n this.specificationChange.emit(this.specification);\n }\n\n public updatePower(power: string | null) {\n this._resetVehicles();\n this.specification = {\n ...this.specification,\n power,\n };\n if (power != null) {\n this._searchVehicles(() => this._cd.markForCheck());\n }\n this.specificationChange.emit(this.specification);\n }\n\n public updateVehicle(selection: string | null) {\n this.result = selection\n ? this._searchResultData.vehicle.find((value) => value.label === selection)\n : undefined;\n this.resultChange.emit(this.result);\n }\n\n private _resetPowerCapacity() {\n this._vehicleService.clearSearchData('capacity');\n this._vehicleService.clearSearchData('power');\n this._searchResultData.capacity = [];\n this._searchResultData.power = [];\n this._cd.markForCheck();\n }\n\n private _resetVehicles() {\n this._vehicleService.clearSearchData('vehicle');\n this._searchResultData.vehicle = [];\n this._searchResultData.vehicleLabel = [];\n this._cd.markForCheck();\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Config, CONFIG_TOKEN } from '@web-lib-angular/hukde-tr';\nimport { VehicleTypeClass } from '../model/vehicle';\nimport { Observable, throwError } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { VehicleRegistrationCertificate } from '@web-app-kfz/hukde-tr-commons';\n\ninterface VehicleTypeData {\n hersteller: string;\n typ: string;\n wkz: string;\n ccm: number;\n leistungs: {\n PS: number;\n KW: number;\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class VehicleTypeClassService {\n private readonly _baseUrl: string;\n\n constructor(private _http: HttpClient, @Inject(CONFIG_TOKEN) config: Config) {\n this._baseUrl = `${config.serviceOrigin}krad/api/`;\n }\n\n public search(certificate: VehicleRegistrationCertificate): Observable {\n return this._http\n .get(\n this._baseUrl +\n `vehicles/typeclass?producerNumber=${certificate.mkn}&typeNumber=${certificate.tkn}`,\n )\n .pipe(\n map((res: VehicleTypeData) => this._mapData(res)),\n catchError((err: HttpErrorResponse) => this._handleError(err)),\n );\n }\n\n protected _mapData(data: VehicleTypeData): VehicleTypeClass {\n return {\n brand: data.hersteller,\n type: data.typ,\n ccm: data.ccm,\n wkz: data.wkz,\n power: {\n kw: data.leistungs.KW,\n ps: data.leistungs.PS,\n },\n };\n }\n\n protected _handleError(error: HttpErrorResponse) {\n if (error.status === 404) {\n return throwError(error.status);\n }\n\n return throwError('Unhandled error');\n }\n}\n","export interface Offer {\n paymentInterval: number;\n liability: LiabilityInsurance | undefined;\n cover: CoverInsurance | undefined;\n fullCoverSb: number;\n semiCoverSb: number;\n foreignProtection: boolean;\n}\n\nexport enum LiabilityInsurance {\n WithProtection = 1,\n NoProtection = 7,\n}\n\nexport enum CoverInsurance {\n Full = 1,\n Semi,\n}\n\nexport const DEFAULT_OFFER: Readonly = {\n paymentInterval: 1,\n liability: undefined,\n cover: undefined,\n fullCoverSb: 36,\n semiCoverSb: 6,\n foreignProtection: false,\n};\n","import { DEFAULT_OFFER, Offer } from '../model/offer';\nimport { DEFAULT_VEHICLE_SPECIFICATION_OBJECT, Vehicle } from '../model/vehicle';\nimport { Details } from '../model/details';\nimport { FurtherDetails } from '../model/further-details';\nimport {\n AbstractKfzDataService,\n DEFAULT_PERSONAL_DATA_OBJECT,\n DEFAULT_PUBLIC_JOB_OBJECT,\n DEFAULT_CERTIFICATE,\n DEFAULT_VEHICLE_RESULT,\n} from '@web-app-kfz/hukde-tr-commons';\nimport {\n DEFAULT_AKZ_OBJECT,\n DEFAULT_POLICY_NUMBER_OBJECT_FOUR,\n DEFAULT_ZAHLART_OBJECT,\n PERSOENLICHE_DATEN_DEFAULT,\n PersoenlicheDaten,\n} from '@web-lib-angular/hukde-tr';\nimport { Injectable } from '@angular/core';\nimport { APP_VERSION } from '../../version';\n\n@Injectable({ providedIn: 'root' })\nexport class DataService extends AbstractKfzDataService {\n public vehicle: Vehicle = {\n search: {\n certificate: DEFAULT_CERTIFICATE,\n result: DEFAULT_VEHICLE_RESULT,\n specification: DEFAULT_VEHICLE_SPECIFICATION_OBJECT,\n type: undefined,\n typeClass: undefined,\n },\n customPower: undefined,\n customPowerValue: undefined,\n customPowerValueUnit: undefined,\n financing: undefined,\n alreadyInsured: undefined,\n startDate: null,\n licensePlate: {\n type: undefined,\n seasonalEnd: undefined,\n seasonalStart: undefined,\n },\n ownerLocation: {\n zip: '',\n city: '',\n },\n owner: undefined,\n };\n\n public details: Details = {\n naturalPerson: undefined,\n birthdate: null,\n publicJob: DEFAULT_PUBLIC_JOB_OBJECT,\n kilometers: undefined,\n parking: undefined,\n homeOwnership: undefined,\n property: undefined,\n propertyInsurance: undefined,\n additionalDrivers: undefined,\n drivers: {\n spouse: false,\n lifePartner: false,\n children: false,\n others: false,\n },\n accompaniedDriving: undefined,\n sdp: undefined,\n sdpParticipation: undefined,\n sdpScore: undefined,\n priorInsurance: undefined,\n entitledPerson: undefined,\n sf: {\n liability: undefined,\n cover: undefined,\n },\n newZwn: undefined,\n hukZwnKrad: undefined,\n driversLicenseDate: null,\n minAge: {\n all25: undefined,\n youngestDriver: {\n birthdate: null,\n age: undefined,\n },\n },\n vmAgreement: false,\n };\n\n public offer: Offer = DEFAULT_OFFER;\n\n public furtherDetails: FurtherDetails = {\n firstRegistrationDate: null,\n kilometers: undefined,\n worth: undefined,\n identificationNumber: undefined,\n akz: DEFAULT_AKZ_OBJECT,\n priorInsuranceCompany: undefined,\n oldVehicle: undefined,\n oldVehicleSale: undefined,\n oldVehicleSaleDate: null,\n priorInsuranceVnr: DEFAULT_POLICY_NUMBER_OBJECT_FOUR,\n otherCompany: undefined,\n otherCompanyName: undefined,\n otherCompanyVnr: undefined,\n selfCancelled: undefined,\n personalData: PERSOENLICHE_DATEN_DEFAULT,\n personalDataKfz: {\n parentPersonalData: DEFAULT_PERSONAL_DATA_OBJECT,\n },\n payment: DEFAULT_ZAHLART_OBJECT,\n };\n\n public getPersonalData(): PersoenlicheDaten {\n return this.furtherDetails.personalData;\n }\n\n protected _setPersonalData(personalData: PersoenlicheDaten): void {\n this.furtherDetails.personalData = personalData;\n }\n\n public getInsuranceStartDate(): Date {\n return this.vehicle.startDate!;\n }\n\n protected _setInsuranceStartDate(startDate: Date): void {\n this.vehicle.startDate = startDate!;\n }\n\n public getInsuranceHolderBirthDate(): Date | null {\n return this.details.birthdate;\n }\n\n protected _setInsuranceHolderBirthDate(birthDate: Date | null): void {\n this.details.birthdate = birthDate;\n }\n\n public isInsuranceHolderNaturalPerson(): boolean | undefined {\n return this.details.naturalPerson;\n }\n\n protected _setInsuranceHolderNaturalPerson(naturalPerson: boolean | undefined): void {\n this.details.naturalPerson = naturalPerson;\n }\n\n public getVersion(): string {\n return APP_VERSION;\n }\n}\n","export const APP_VERSION = '23.4.3';\n","import { Injectable } from '@angular/core';\n@Injectable({ providedIn: 'root' })\nexport class TariffDataService {\n public creditFailed = false;\n}\n","import { DataService } from './data.service';\nimport { Injectable } from '@angular/core';\nimport {\n OldVehicle,\n PartnerContractKind,\n PriorInsuranceCompany,\n Property,\n VehicleLicensePlateType,\n VehicleOwner,\n} from '@web-app-kfz/hukde-tr-commons';\nimport { calculateAge, hasReachedAge } from '@web-lib-angular/hukde-tr';\nimport { TariffDataService } from './tariff-data.service';\nimport { YoungestDriver } from '../model/details';\n\n@Injectable({ providedIn: 'root' })\nexport class CrossFieldService {\n constructor(private _dataService: DataService, private _tariffDataService: TariffDataService) {}\n\n public isOldTariff() {\n return this._dataService.vehicle.startDate! < new Date(2024, 2, 1);\n }\n\n /*************** Vehicle *****************/\n\n public isFirstRegistrationAvailable(): boolean {\n return this._dataService.vehicle.alreadyInsured === false;\n }\n\n public isFirstRegistrationDateAvailable(): boolean {\n const { vehicle } = this._dataService;\n return vehicle.alreadyInsured || this.isFirstRegistrationAvailable();\n }\n\n public isSeasonalRangeAvailable() {\n return this._dataService.vehicle.licensePlate.type === VehicleLicensePlateType.Seasonal;\n }\n\n /*************** Details *****************/\n\n public isBirthdateAvailable(): boolean {\n return this._dataService.details.naturalPerson === true;\n }\n\n public isOwnerSelfOrPartner(): boolean {\n return (\n this._dataService.vehicle.owner === VehicleOwner.Me ||\n this._dataService.vehicle.owner === VehicleOwner.LifePartner ||\n this._dataService.vehicle.owner === VehicleOwner.Spouse\n );\n }\n\n public isPropertyAvailable(): boolean {\n return this._dataService.details.homeOwnership === true;\n }\n\n public isPropertyInsuranceAvailable(): boolean {\n const {\n details: { property },\n } = this._dataService;\n return this.isPropertyAvailable() && property === Property.House;\n }\n\n public isDriversAvailable(): boolean {\n return this._dataService.details.additionalDrivers === true;\n }\n\n private _hasReached2411(): boolean {\n const { details, vehicle } = this._dataService;\n return (\n details.birthdate != null && hasReachedAge(details.birthdate, vehicle.startDate!, 24, 11)\n );\n }\n\n public isMinAgedDriversAvailable(): boolean {\n const { details } = this._dataService;\n return (\n details.naturalPerson === false ||\n (details.additionalDrivers === true && this._hasReached2411())\n );\n }\n\n public isYoungestDriverAvailable(): boolean {\n const { details } = this._dataService;\n const naturalTooYoung = details.naturalPerson === true && !this._hasReached2411();\n\n return (\n (this.isMinAgedDriversAvailable() && (naturalTooYoung || details.minAge.all25 === false)) ||\n (naturalTooYoung && details.additionalDrivers === true)\n );\n }\n\n public isYoungestDriverAgeAvailable(): boolean {\n const { details } = this._dataService;\n return details.additionalDrivers === true && details.drivers.others;\n }\n\n private _areAllYoungestDrivers2211(): boolean {\n const ageAvailable = this.isYoungestDriverAgeAvailable();\n const minAge = this._dataService.details.minAge;\n return this._isYoungestDriver2211(minAge.youngestDriver, ageAvailable);\n }\n\n private _isYoungestDriver2211(youngestDriver: YoungestDriver, ageAvailable: boolean): boolean {\n const start = this._dataService.vehicle.startDate!;\n if (youngestDriver.birthdate != null) {\n return (\n youngestDriver.birthdate <=\n new Date(start.getFullYear() - 22, start.getMonth() - 11, start.getDate())\n );\n }\n return ageAvailable && youngestDriver.age !== undefined && youngestDriver.age > 22;\n }\n\n public isPriorInsuranceAvailable(): boolean {\n return this._dataService.vehicle.alreadyInsured === false;\n }\n\n public isSfAvailable(): boolean {\n const { vehicle, details } = this._dataService;\n return vehicle.alreadyInsured! || details.priorInsurance!;\n }\n\n public isNewZwnAvailable(): boolean {\n const details = this._dataService.details;\n return (\n this.isPriorInsuranceAvailable() &&\n details.priorInsurance === false &&\n this.isBikeQuadTrike() &&\n details.naturalPerson === true &&\n this._hasReached2411() &&\n (!this.isMinAgedDriversAvailable() ||\n details.minAge.all25 ||\n this._areAllYoungestDrivers2211())\n );\n }\n\n public newZwnEpAvailable() {\n const { vehicle, details } = this._dataService;\n return (\n vehicle.alreadyInsured === false &&\n details.priorInsurance === false &&\n details.newZwn === 2 &&\n (details.hukZwnKrad === 1 || details.hukZwnKrad === 2)\n );\n }\n\n /*************** Offer *****************/\n\n public isCreditWorthy(): boolean {\n return !this._tariffDataService.creditFailed;\n }\n\n public isForeignProtectionAvailable(): boolean {\n return this.isCreditWorthy() && this.isBikeQuadTrike();\n }\n\n public isPaymentAvailable(): boolean {\n return this.isCreditWorthy() && !this.isSeasonalRangeAvailable();\n }\n\n public isOldVehicle(): boolean {\n return this._dataService.furtherDetails.firstRegistrationDate\n ? this._dataService.furtherDetails.firstRegistrationDate?.getFullYear() < 1950\n : false;\n }\n\n /*********** Further Details *************/\n\n public isBikeQuadTrike(): boolean {\n const typeClass = this._dataService.vehicle.search.typeClass;\n return typeClass\n ? typeClass.wkz === '003' || typeClass.wkz === '030' || typeClass.wkz === '031'\n : false;\n }\n\n public isOldVehicleAvailable(): boolean {\n return (\n !this._dataService.vehicle.alreadyInsured &&\n this.isPriorInsuranceAvailable() &&\n this._dataService.details.priorInsurance! &&\n this._dataService.furtherDetails.priorInsuranceCompany !== PriorInsuranceCompany.Other\n );\n }\n\n public isOldVehicleSaleAvailable(): boolean {\n return (\n this.isOldVehicleAvailable() &&\n this._dataService.furtherDetails.oldVehicle === OldVehicle.Sold\n );\n }\n\n public isPriorInsuranceCompanyAvailable(): boolean {\n return this._dataService.vehicle.alreadyInsured || this._dataService.details.priorInsurance!;\n }\n\n public isPriorInsuranceVnrAvailable(): boolean {\n const { furtherDetails } = this._dataService;\n return (\n this.isPriorInsuranceCompanyAvailable() &&\n (furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk ||\n furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk24)\n );\n }\n\n public isPartnerInsuranceVnrAvailable(): boolean {\n const { details } = this._dataService;\n return (\n !this._dataService.vehicle.alreadyInsured &&\n !details.priorInsurance &&\n details.newZwn === PartnerContractKind.Huk\n );\n }\n\n public isOtherCompanyAvailable(): boolean {\n const { details, furtherDetails } = this._dataService;\n return (\n (this.isPriorInsuranceCompanyAvailable() &&\n furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Other) ||\n (!details.naturalPerson &&\n this.isNewZwnAvailable() &&\n details.newZwn === PartnerContractKind.Other)\n );\n }\n\n public isPriorInsuranceCompanyOtherSelected(): boolean {\n return (\n this.isPriorInsuranceCompanyAvailable() &&\n this._dataService.furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Other\n );\n }\n\n public isSelfCancelledAvailable(): boolean {\n return (\n this.isPriorInsuranceCompanyOtherSelected() &&\n (this._dataService.vehicle.alreadyInsured || this.isOldVehicleAvailable())\n );\n }\n\n public isLicensePlatePriorVehicleAvailable(): boolean {\n return (\n this._dataService.vehicle.alreadyInsured === false &&\n this.isPriorInsuranceCompanyOtherSelected()\n );\n }\n\n public isContractCancellationAvailable(): boolean {\n return this.isPriorInsuranceCompanyOtherSelected();\n }\n\n public isParentPersonalDataAvailable(): boolean {\n const birthDate = this._dataService.furtherDetails.personalData.vnGebdat;\n return birthDate != null && calculateAge(birthDate, new Date()) < 18;\n }\n\n public isKaskoSelected(): boolean {\n return this._dataService.offer.cover !== undefined;\n }\n\n /*************** Summary *****************/\n\n public isSepa(): boolean {\n return this._dataService.furtherDetails.payment.zahlArt === 'E';\n }\n\n /*************** Tracking *****************/\n\n public isInsuredAtHuk24(): boolean {\n return (\n this._dataService.vehicle.alreadyInsured === true &&\n this.isPriorInsuranceCompanyAvailable() &&\n this._dataService.furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk24\n );\n }\n\n public isInsuredAtHuk(): boolean {\n return (\n this._dataService.vehicle.alreadyInsured === true &&\n this.isPriorInsuranceCompanyAvailable() &&\n this._dataService.furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk\n );\n }\n\n public isNotInsuredPriorInsuranceAtHuk(): boolean {\n const prior =\n this.isPriorInsuranceCompanyAvailable() &&\n this._dataService.furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk;\n return this.isFirstRegistrationAvailable() && prior;\n }\n\n public isNotInsuredPriorInsuranceAtHuk24(): boolean {\n const prior =\n this.isPriorInsuranceCompanyAvailable() &&\n this._dataService.furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk24;\n return this.isFirstRegistrationAvailable() && prior;\n }\n\n public isNotInsuredPriorInsuranceAtOther(): boolean {\n const prior =\n this.isPriorInsuranceCompanyAvailable() &&\n this._dataService.furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Other;\n return this._dataService.vehicle.alreadyInsured === true && prior;\n }\n\n public isNeuzulassung(): boolean {\n const { furtherDetails, vehicle } = this._dataService;\n if (\n vehicle.alreadyInsured === false &&\n this._dataService.getInsuranceStartDate != null &&\n furtherDetails.firstRegistrationDate != null &&\n furtherDetails.firstRegistrationDate.getUTCMonth() + 1 >=\n this._dataService.getInsuranceStartDate().getUTCMonth() &&\n furtherDetails.firstRegistrationDate.getUTCFullYear() >=\n this._dataService.getInsuranceStartDate().getUTCFullYear()\n ) {\n return true;\n }\n return false;\n }\n\n public isUmschreibung(): boolean {\n const { furtherDetails, vehicle } = this._dataService;\n if (\n vehicle.alreadyInsured === false &&\n this._dataService.getInsuranceStartDate != null &&\n furtherDetails.firstRegistrationDate != null &&\n (furtherDetails.firstRegistrationDate.getUTCMonth() + 1 <\n this._dataService.getInsuranceStartDate().getUTCMonth() ||\n furtherDetails.firstRegistrationDate.getUTCFullYear() <\n this._dataService.getInsuranceStartDate().getUTCFullYear())\n ) {\n return true;\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractTrackingMappingService } from '@web-app-kfz/hukde-tr-commons';\nimport { CrossFieldService } from '../service/cross-field.service';\n\nexport interface Kfz {\n ag: string;\n vorgang: string;\n zulassung: string;\n}\n\nconst AG11 = 'AG11';\nconst AG12 = 'AG12';\nconst AG39 = 'AG39';\nconst AG49 = 'AG49';\nconst AG1249 = 'AG1249';\n\n@Injectable({ providedIn: 'root' })\nexport class TrackingMappingService extends AbstractTrackingMappingService {\n constructor(private _crossFieldService: CrossFieldService) {\n super();\n }\n\n public mapDataVorgang(): Kfz {\n return {\n ag: this._ermittleAg(),\n vorgang: this._ermittleAntragsArt(),\n zulassung: this._ermittleZulassung(),\n };\n }\n\n private _ermittleAg() {\n let agResult = '';\n if (this._crossFieldService.isInsuredAtHuk24()) {\n agResult = AG12;\n } else if (this._crossFieldService.isInsuredAtHuk()) {\n agResult = AG39;\n } else if (this._crossFieldService.isNotInsuredPriorInsuranceAtHuk()) {\n agResult = AG49;\n } else if (this._crossFieldService.isNotInsuredPriorInsuranceAtHuk24()) {\n agResult = AG1249;\n } else if (\n this._crossFieldService.isPriorInsuranceCompanyAvailable() !== undefined &&\n this._crossFieldService.isFirstRegistrationAvailable()\n ) {\n agResult = AG11;\n }\n return agResult;\n }\n\n private _ermittleAntragsArt() {\n if (this._crossFieldService.isNotInsuredPriorInsuranceAtOther()) {\n return 'Versichererwechsel';\n }\n switch (this._ermittleAg()) {\n case AG11:\n return 'Neugeschaeft';\n case AG1249:\n case AG49:\n return 'Fahrzeugwechsel';\n case AG12:\n return 'Gesellschaftswechsel';\n case AG39:\n return 'Tarifumstellung';\n default:\n return '';\n }\n }\n\n private _ermittleZulassung() {\n let result = '';\n if (this._crossFieldService.isNeuzulassung()) {\n result = 'Neuzulassung';\n } else if (this._crossFieldService.isUmschreibung()) {\n result = 'Umschreibung';\n }\n return result;\n }\n}\n","\n \n

\n Wir benötigen einige Angaben zu Ihrer Maschine und zu deren Nutzung. Wenn möglich, legen Sie\n Ihren Fahrzeugschein heraus. Alle Fragen sind Pflichtangaben und schalten sich der Reihe nach\n frei.\n

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

{{ vehicle.search?.result?.label }}

\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n \n\n \n \n \n \n \n Leistungwert\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n

\n {{ vehicle.search?.typeClass?.brand }} - {{ vehicle.search?.typeClass?.type }}\n ,\n \n \n {{ vehicle.customPowerValue }} {{ isCustomPowerUnitKw ? 'KW' : 'PS' }}\n \n \n {{ vehicle.search?.typeClass?.power.ps }} PS ({{\n vehicle.search?.typeClass?.power.kw\n }}\n kW)\n \n \n

\n
\n \n\n \n \n \n \n\n \n \n \n \n\n \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 {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n ViewChild,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { DataService } from '../service/data.service';\nimport { Vehicle, VehicleTypeClass } from '../model/vehicle';\nimport {\n clearTime,\n GroupComponent,\n SELECT_BUTTON_ARRAY_YES_NO,\n TrackingService,\n} from '@web-lib-angular/hukde-tr';\nimport { TrackingMappingService } from '../service/tracking-mapping.service';\nimport { VehicleTypeClassService } from '../service/vehicle-type.service';\nimport {\n OWNER_OPTIONS,\n POWER_UNIT_OPTIONS,\n VEHICLE_LICENSE_PLATE_TYPE_OPTIONS,\n VehicleLicensePlateType,\n VehiclePowerUnit,\n DEFAULT_VEHICLE_RESULT,\n} from '@web-app-kfz/hukde-tr-commons';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [VehicleTypeClassService],\n selector: 'huk-vehicle',\n templateUrl: 'vehicle.component.html',\n})\nexport class VehicleComponent implements OnInit {\n public readonly powerUnitOptions = POWER_UNIT_OPTIONS;\n public readonly yesNoOptions = SELECT_BUTTON_ARRAY_YES_NO;\n public readonly licensePlateTypeOptions = VEHICLE_LICENSE_PLATE_TYPE_OPTIONS;\n public readonly ownerOptions = OWNER_OPTIONS;\n\n public vehicle: Vehicle;\n public insuranceDateErrorMessages = {\n invalidDate: 'ALF001',\n rangeStart: 'ALF027',\n rangeEnd: 'ALF038',\n };\n public minCustomerPowerValue = 2;\n public minCustomerPowerValueError = 'KRF047';\n public maxCustomerPowerValue = 250;\n public maxCustomerPowerValueError = 'KRF047';\n\n public isSeasonalLicensePlate = false;\n public isCustomPowerUnitKw = false;\n\n public insuranceDateRangeStart = clearTime(new Date(2022, 5, 20));\n public insuranceDateRangeEnd: Date = clearTime(new Date());\n\n @ViewChild('vehBlock')\n public group: GroupComponent;\n\n constructor(\n private _dataService: DataService,\n private _trackingService: TrackingService,\n private _trackingMappingService: TrackingMappingService,\n private _vehicleTypeService: VehicleTypeClassService,\n private _cd: ChangeDetectorRef,\n ) {\n this.vehicle = this._dataService.vehicle;\n }\n\n public ngOnInit() {\n this.insuranceDateRangeEnd = clearTime(new Date());\n if (this.insuranceDateRangeStart < clearTime(new Date())) {\n this.insuranceDateRangeStart = clearTime(new Date());\n }\n this.insuranceDateRangeEnd.setFullYear(this.insuranceDateRangeEnd.getFullYear() + 1);\n\n this.isSeasonalLicensePlate = this._isSeasonalLicensePlate();\n this.isCustomPowerUnitKw = !!(\n this.vehicle.customPower && this.vehicle.customPowerValueUnit === VehiclePowerUnit.Kw\n );\n this._updateMaxCustomerPowerValue();\n }\n\n public setSearchType(type: Vehicle['search']['type']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n search: {\n ...this.vehicle.search,\n type,\n },\n };\n }\n\n public setSearchResult(result: Vehicle['search']['result']) {\n if (!result) {\n result = DEFAULT_VEHICLE_RESULT;\n this._setTypeClass(undefined);\n } else {\n this._searchTypeClass(result);\n }\n\n let search = {\n ...this.vehicle.search,\n result,\n };\n\n if (result && !search.type) {\n // certificate should be automatically updated by genius search\n search = {\n ...search,\n certificate: result.certificate,\n };\n }\n\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n search,\n };\n this._cd.markForCheck();\n }\n\n public setCertificate(certificate: Vehicle['search']['certificate']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n search: {\n ...this.vehicle.search,\n certificate,\n },\n };\n }\n\n public updateSpecification(specification: Vehicle['search']['specification']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n search: {\n ...this.vehicle.search,\n specification,\n },\n };\n }\n\n public updateCustomPower(customPower: Vehicle['customPower']) {\n const value = {\n ...this.vehicle,\n customPower,\n };\n this._dataService.vehicle = this.vehicle = value;\n }\n\n public updateCustomPowerValue(customPowerValue: Vehicle['customPowerValue']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n customPowerValue,\n };\n }\n\n public updateCustomPowerValueUnit(customPowerValueUnit: Vehicle['customPowerValueUnit']) {\n this.isCustomPowerUnitKw = customPowerValueUnit === VehiclePowerUnit.Kw;\n\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n customPowerValueUnit,\n };\n\n this._updateMaxCustomerPowerValue();\n }\n\n public updateAlreadyInsured(alreadyInsured: Vehicle['alreadyInsured']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n alreadyInsured,\n };\n }\n\n public updateOwner(owner: Vehicle['owner']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n owner,\n };\n }\n\n public updateInsuranceStartDate(startDate: Vehicle['startDate']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n startDate,\n };\n if (startDate) {\n this.trackGeschaeft(startDate);\n }\n }\n\n public updateOwnerLocation(ownerLocation: Vehicle['ownerLocation']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n ownerLocation,\n };\n }\n\n public updateLicensePlateType(seasonal: Vehicle['licensePlate']['type']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n licensePlate: {\n ...this.vehicle.licensePlate,\n type: seasonal,\n },\n };\n\n this.isSeasonalLicensePlate = this._isSeasonalLicensePlate();\n }\n\n public updateLicensePlate(licensePlate: Vehicle['licensePlate']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n licensePlate,\n };\n }\n\n private _isSeasonalLicensePlate() {\n return this.vehicle.licensePlate.type === VehicleLicensePlateType.Seasonal;\n }\n\n private _updateMaxCustomerPowerValue() {\n if (this.vehicle.customPower === true && this.vehicle.customPowerValueUnit === undefined) {\n return;\n }\n\n if (this.vehicle.customPower === true && this.vehicle.search.typeClass) {\n const typeClass = this.vehicle.search.typeClass;\n\n if (typeClass.wkz === '003' && typeClass.ccm === 125) {\n this.minCustomerPowerValue = this.isCustomPowerUnitKw ? 12 : 16;\n this.minCustomerPowerValueError = 'KRF048';\n this.maxCustomerPowerValue = 250;\n this.maxCustomerPowerValueError = 'KRF047';\n return;\n }\n if (typeClass.wkz === '014' || typeClass.wkz === '024') {\n this.minCustomerPowerValue = 2;\n this.minCustomerPowerValueError = 'KRF047';\n this.maxCustomerPowerValue = this.isCustomPowerUnitKw ? 11 : 15;\n this.maxCustomerPowerValueError = 'KRF048';\n return;\n }\n }\n\n this.minCustomerPowerValue = 2;\n this.maxCustomerPowerValue = 250;\n this.minCustomerPowerValueError = this.maxCustomerPowerValueError = 'KRF047';\n }\n\n private _searchTypeClass(result: Vehicle['search']['result']) {\n this._vehicleTypeService\n .search(result!.certificate)\n .subscribe((typeClass: VehicleTypeClass) => {\n this._setTypeClass(typeClass);\n });\n }\n\n private _setTypeClass(typeClass: Vehicle['search']['typeClass']) {\n this._dataService.vehicle = this.vehicle = {\n ...this.vehicle,\n search: {\n ...this.vehicle.search,\n typeClass,\n },\n };\n this._updateMaxCustomerPowerValue();\n }\n\n public trackGeschaeft(startDate: Date) {\n this._trackingService.prepareTrackingOrderWithoutSendOutside(\n this._trackingMappingService.mapDataGeschaeft(startDate),\n );\n }\n\n public get vehicleBrand(): string {\n const typeClass = this._dataService.vehicle.search.typeClass;\n return typeClass ? typeClass.brand : '';\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { YoungestDriver } from '../model/details';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n} from '@angular/core';\nimport { calculateAge, hasReachedAge } from '@web-lib-angular/hukde-tr';\n\n@Component({\n selector: 'huk-youngest-driver',\n templateUrl: './youngest-driver.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YoungestDriverComponent implements OnChanges, OnInit {\n @Input() public second = false;\n @Input() public value: YoungestDriver;\n @Input() public showAge = false;\n @Input() public startDate: Date;\n @Input() public vnBirthdate: Date | null = null;\n @Input() public visible = true;\n\n @Output() public valueChange = new EventEmitter();\n\n public headline = '';\n public prefix = '';\n public maxDate = new Date();\n public minDate = new Date();\n public ageMismatchMsgid = 'KRF053';\n public minDateMsgid = 'KRF087';\n public maxAge = 24;\n public maxAgeMsgid = 'KRF087';\n\n public ngOnInit() {\n const d = new Date(this.startDate);\n d.setFullYear(d.getFullYear() - 15);\n this.maxDate = d;\n }\n\n public ngOnChanges() {\n if (this.second) {\n this.prefix = 'zweit';\n this.ageMismatchMsgid = 'KRF023';\n }\n this.headline = `Wie alt ist der ${this.prefix}jüngste Fahrer?`;\n const minDate = new Date(this.startDate);\n minDate.setFullYear(minDate.getFullYear() - 24, minDate.getMonth() - 11);\n\n if (this.vnBirthdate) {\n this.minDate = this.vnBirthdate;\n this.maxAge = calculateAge(this.vnBirthdate, this.startDate);\n if (this.maxAge > 24) {\n this.maxAge = 24;\n this.minDate = minDate;\n }\n if (!hasReachedAge(this.vnBirthdate, this.startDate, 24, 11)) {\n this.maxAgeMsgid = this.minDateMsgid = 'KRF019';\n }\n } else {\n this.minDate = minDate;\n this.maxAgeMsgid = this.minDateMsgid = 'KRF087';\n this.maxAge = 24;\n }\n }\n\n public setAge(age: YoungestDriver['age']) {\n this.valueChange.emit({\n ...this.value,\n age,\n });\n }\n\n public setBirthdate(birthdate: YoungestDriver['birthdate']) {\n this.valueChange.emit({\n ...this.value,\n birthdate,\n });\n }\n\n public getAge(): number | undefined {\n if (!this.value.birthdate || !this.startDate) {\n return undefined;\n }\n return calculateAge(this.value.birthdate, this.startDate);\n }\n}\n","\n \n \n \n \n \n \n \n\n","import { MinAge } from '../model/details';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SELECT_BUTTON_ARRAY_YES_NO } from '@web-lib-angular/hukde-tr';\n\n@Component({\n selector: 'huk-min-age',\n templateUrl: './min-age.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MinAgeComponent {\n @Input() public value: MinAge;\n @Input() public showAge = false;\n @Input() public startDate: Date;\n @Input() public vehicle = '';\n @Input() public visible = true;\n @Input() public vnBirthdate: Date | null = null;\n @Input() public showYoungestOnly = false;\n @Input() public showAll25: boolean;\n\n @Output() public valueChange = new EventEmitter();\n\n public readonly yesNoOptions = SELECT_BUTTON_ARRAY_YES_NO;\n\n public setAll25(all25: MinAge['all25']) {\n this.valueChange.emit({\n ...this.value,\n all25,\n });\n }\n\n public setYoungestDriver(youngestDriver: MinAge['youngestDriver']) {\n this.valueChange.emit({\n ...this.value,\n youngestDriver,\n });\n }\n}\n","\n \n \n \n \n \n \n \n \n \n

\n Bestand in den letzten 12 Monaten vor Vertragsbeginn keine Vollkasko, klicken Sie bitte\n \"keine anrechenbare Schadenfreiheitsklasse\" an. Auf der Angebotsseite können Sie Ihren\n Versicherungsumfang (z. B. Voll- oder Teilkasko) zusammenstellen.\n

\n
\n
\n
\n","import { Sf } from '../model/details';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { SelectOption } from '@web-lib-angular/hukde-tr';\nimport { CrossFieldService } from '../service/cross-field.service';\n\nconst LIABILITY_OPTIONS_FOR_BIKE_TRIKE_QUAD = [\n { value: '20', label: 'SF 20' },\n { value: '19', label: 'SF 19' },\n { value: '18', label: 'SF 18' },\n { value: '17', label: 'SF 17' },\n { value: '16', label: 'SF 16' },\n { value: '15', label: 'SF 15' },\n { value: '14', label: 'SF 14' },\n { value: '13', label: 'SF 13' },\n { value: '12', label: 'SF 12' },\n { value: '11', label: 'SF 11' },\n { value: '10', label: 'SF 10' },\n { value: '9', label: 'SF 9' },\n { value: '8', label: 'SF 8' },\n { value: '7', label: 'SF 7' },\n { value: '6', label: 'SF 6' },\n { value: '5', label: 'SF 5' },\n { value: '4', label: 'SF 4' },\n { value: '3', label: 'SF 3' },\n { value: '2', label: 'SF 2' },\n { value: '1', label: 'SF 1' },\n { value: '1/2', label: 'SF 1/2' },\n { value: '0', label: 'Klasse 0' },\n { value: 'M', label: 'Klasse M' },\n];\n\nconst LIABILITY_OPTIONS_FOR_OTHER: SelectOption[] = [\n { value: '3', label: 'SF 3' },\n { value: '2', label: 'SF 2' },\n { value: '1', label: 'SF 1' },\n { value: '1/2', label: 'SF 1/2' },\n { value: '0', label: 'Klasse 0' },\n];\n\n@Component({\n selector: 'huk-sf-selection',\n templateUrl: './sf-selection.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SfSelectionComponent implements OnInit {\n @Input() public value: Readonly;\n @Output() public valueChange = new EventEmitter();\n\n @Input() public transfer = false;\n @Input() public dateString = '';\n @Input() public disabled = false;\n @Input() public limit = false;\n\n public coverTitle = '';\n public liabilityTitle = '';\n\n public isBikeQuadTrike = false;\n\n public liabilityOptions: SelectOption[] = [];\n\n public coverOptions: SelectOption[] = [\n { value: '20', label: 'SF 20' },\n { value: '19', label: 'SF 19' },\n { value: '18', label: 'SF 18' },\n { value: '17', label: 'SF 17' },\n { value: '16', label: 'SF 16' },\n { value: '15', label: 'SF 15' },\n { value: '14', label: 'SF 14' },\n { value: '13', label: 'SF 13' },\n { value: '12', label: 'SF 12' },\n { value: '11', label: 'SF 11' },\n { value: '10', label: 'SF 10' },\n { value: '9', label: 'SF 9' },\n { value: '8', label: 'SF 8' },\n { value: '7', label: 'SF 7' },\n { value: '6', label: 'SF 6' },\n { value: '5', label: 'SF 5' },\n { value: '4', label: 'SF 4' },\n { value: '3', label: 'SF 3' },\n { value: '2', label: 'SF 2' },\n { value: '1', label: 'SF 1' },\n { value: '1/2', label: 'SF 1/2' },\n { value: '0', label: 'Klasse 0' },\n { value: 'M', label: 'Klasse M' },\n { value: 'NICHT_VORHANDEN', label: 'keine anrechenbare Schadenfreiheitsklasse' },\n ];\n\n constructor(crossFieldService: CrossFieldService) {\n this.isBikeQuadTrike = crossFieldService.isBikeQuadTrike();\n this.liabilityOptions = this.isBikeQuadTrike\n ? LIABILITY_OPTIONS_FOR_BIKE_TRIKE_QUAD\n : LIABILITY_OPTIONS_FOR_OTHER;\n }\n\n public ngOnInit() {\n if (this.limit) {\n this.coverOptions = this.coverOptions.slice(0, -3);\n this.liabilityOptions = this.liabilityOptions.slice(0, -3);\n }\n if (this.transfer) {\n this.coverTitle =\n 'Welchen Schadenfreiheitsklassekönnen Sie in der Vollkaskoversicherung für Ihren Vertrag übernehmen?';\n this.liabilityTitle =\n 'Welche Schadenfreiheitsklasse können Sie in der Kfz-Haftpflichtversicherung für Ihren Vertrag übernehmen?';\n } else {\n this.liabilityTitle = `In welche Schadenfreiheitsklasse ist Ihr bisheriger Vertrag in der Kfz-Haftpflichtversicherung ab ${this.dateString} eingestuft?`;\n this.coverTitle = `In welche Schadenfreiheitsklasse ist Ihr bisheriger Vertrag in der Vollkaskoversicherung ab ${this.dateString} eingestuft?`;\n }\n }\n\n public set(prop: keyof Sf, value: Sf[typeof prop]) {\n this.valueChange.emit({\n ...this.value,\n [prop]: value,\n });\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n\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 { Vehicle } from '../model/vehicle';\nimport { DataService } from '../service/data.service';\nimport {\n clearTime,\n DisableStepService,\n hasReachedAge,\n SELECT_BUTTON_ARRAY_YES_NO,\n SelectOption,\n} from '@web-lib-angular/hukde-tr';\nimport { Details } from '../model/details';\nimport { Component, OnInit } from '@angular/core';\nimport {\n NATURAL_PERSON_OPTIONS,\n PARKING_OPTIONS,\n PARTNER_CONTRACT_OPTIONS,\n Property,\n PROPERTY_OPTIONS,\n} from '@web-app-kfz/hukde-tr-commons';\nimport { CrossFieldService } from '../service/cross-field.service';\n\n@Component({\n selector: 'huk-details',\n templateUrl: 'details.component.html',\n})\nexport class DetailsComponent implements OnInit {\n public isDisabled = false;\n public vehicleBrand = '';\n public alreadyInsured: Vehicle['alreadyInsured'];\n public startDate: Vehicle['startDate'];\n public details: Details;\n\n public maxBirthdate: Date;\n public minBirthdate = new Date(1900, 0, 1);\n\n public isPropertyInsuranceVisible = false;\n\n public readonly yesNoOptions = SELECT_BUTTON_ARRAY_YES_NO;\n public readonly naturalPersonOptions = NATURAL_PERSON_OPTIONS;\n public readonly parkingOptions = PARKING_OPTIONS;\n public readonly propertyOptions = PROPERTY_OPTIONS;\n public readonly newZwnOptions = PARTNER_CONTRACT_OPTIONS;\n public readonly hukZwnKradOptions: SelectOption[] = [\n { value: 1, label: 'SF2 oder besser' },\n { value: 2, label: 'SF1' },\n { value: 3, label: 'SF 1/2, Klasse 0 oder M' },\n ];\n\n public get isMinAged(): boolean {\n return this._crossFieldService.isMinAgedDriversAvailable();\n }\n\n public get isNewZwnAvailable(): boolean {\n return this._crossFieldService.isNewZwnAvailable();\n }\n\n constructor(\n private _disableService: DisableStepService,\n private _dataService: DataService,\n private _crossFieldService: CrossFieldService,\n ) {\n const maxBirthdate = clearTime(new Date());\n maxBirthdate.setMonth(maxBirthdate.getMonth() - 11);\n maxBirthdate.setFullYear(maxBirthdate.getFullYear() - 15);\n this.maxBirthdate = maxBirthdate;\n this.details = this._dataService.details;\n this.startDate = this._dataService.vehicle.startDate;\n this.alreadyInsured = this._dataService.vehicle.alreadyInsured;\n\n const typeClass = this._dataService.vehicle.search.typeClass;\n this.vehicleBrand = typeClass ? typeClass.brand : '';\n this.isPropertyInsuranceVisible = this._isPropertyInsuranceVisible();\n }\n\n public ngOnInit() {\n this.isDisabled = this._disableService.disable;\n }\n\n public setNaturalPerson(naturalPerson: Details['naturalPerson']) {\n this.details = this._dataService.details = {\n ...this.details,\n naturalPerson,\n };\n }\n\n public setBirthdate(birthdate: Details['birthdate']) {\n this.details = this._dataService.details = {\n ...this.details,\n birthdate,\n };\n }\n\n public setPublicJob(publicJob: Details['publicJob']) {\n this.details = this._dataService.details = {\n ...this.details,\n publicJob,\n };\n }\n\n public setKilometers(kilometers: Details['kilometers']) {\n this.details = this._dataService.details = {\n ...this.details,\n kilometers,\n };\n }\n\n public setParking(parking: Details['parking']) {\n this.details = this._dataService.details = {\n ...this.details,\n parking,\n };\n }\n\n public setHomeOwnership(homeOwnership: Details['homeOwnership']) {\n this.details = this._dataService.details = {\n ...this.details,\n homeOwnership,\n };\n }\n\n public setProperty(property: Details['property']) {\n this.details = this._dataService.details = {\n ...this.details,\n property,\n };\n\n this.isPropertyInsuranceVisible = this._isPropertyInsuranceVisible();\n }\n\n public setPropertyInsurance(propertyInsurance: Details['propertyInsurance']) {\n this.details = this._dataService.details = {\n ...this.details,\n propertyInsurance,\n };\n }\n\n public setAdditionalDrivers(additionalDrivers: Details['additionalDrivers']) {\n this.details = this._dataService.details = {\n ...this.details,\n additionalDrivers,\n };\n\n if (\n additionalDrivers === false &&\n this.isVn2411() === false &&\n this._dataService.details.naturalPerson === true\n ) {\n this._dataService.details.minAge = {\n ...this._dataService.details.minAge,\n all25: false,\n youngestDriver: {\n ...this._dataService.details.minAge.youngestDriver,\n birthdate: this.details.birthdate,\n },\n };\n } else if (additionalDrivers === true && this.isVn2411() === false) {\n this._dataService.details.minAge = {\n ...this._dataService.details.minAge,\n all25: undefined,\n youngestDriver: {\n ...this._dataService.details.minAge.youngestDriver,\n birthdate: null,\n },\n };\n }\n }\n\n public setDrivers(prop: keyof Details['drivers'], value: Details['drivers'][typeof prop]) {\n this.details = this._dataService.details = {\n ...this.details,\n drivers: {\n ...this.details.drivers,\n [prop]: value,\n },\n };\n }\n\n public isVn2411(): boolean {\n return (\n this.details.naturalPerson === true &&\n hasReachedAge(this.details.birthdate!, this.startDate!, 24, 11)\n );\n }\n\n public setPriorInsurance(priorInsurance: Details['priorInsurance']) {\n this.details = this._dataService.details = {\n ...this.details,\n priorInsurance,\n };\n }\n\n public setSf(sf: Details['sf']) {\n this.details = this._dataService.details = {\n ...this.details,\n sf,\n };\n }\n\n public setNewZwn(newZwn: Details['newZwn']) {\n this.details = this._dataService.details = {\n ...this.details,\n newZwn,\n };\n }\n\n public get showHukZwnKrad() {\n return this.details.newZwn === 1 || this.details.newZwn === 2;\n }\n\n public setHukZwnKrad(hukZwnKrad: Details['hukZwnKrad']) {\n this.details = this._dataService.details = {\n ...this.details,\n hukZwnKrad,\n };\n }\n\n public setMinAge(minAge: Details['minAge']) {\n this.details = this._dataService.details = {\n ...this.details,\n minAge,\n };\n }\n\n private _isPropertyInsuranceVisible() {\n return this.details.property === Property.House;\n }\n\n public setVmAgreement(vmAgreement: Details['vmAgreement']) {\n this._dataService.details = this.details = {\n ...this.details,\n vmAgreement,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CrossFieldService } from './cross-field.service';\nimport { DataService } from './data.service';\nimport {\n convertAkzToString,\n convertPolicyNumberToString,\n CustomerService,\n formatIsoDate,\n ConsentService,\n} from '@web-lib-angular/hukde-tr';\nimport {\n Erziehungsberechtigter,\n Halter,\n KfzCustomer,\n mapCustomer,\n mapErziehungsberechtigter,\n mapPayment,\n mapSelfCancelledOptions,\n mapVerbleib,\n Payment,\n PriorInsuranceCompany,\n SaisonKz,\n SelfCancelled,\n VehiclePowerUnit,\n PublicJob,\n mapPublicJob,\n formatContractNumberOther,\n PriorInsuranceHukdeOptionsService,\n} from '@web-app-kfz/hukde-tr-commons';\nimport { CoverInsurance } from '../model/offer';\n\nexport interface Tariff {\n beitragGesamt?: number;\n beitragGesamtHkb?: number;\n beitragHaftpflichtMitSchutzbrief: number;\n beitragHaftpflichtOhneSchutzbrief: number;\n beitragVollkasko?: number;\n beitragTeilkasko?: number;\n beitragAuslandsschutz?: number;\n}\n\nexport interface TariffInput {\n berufGruppe?: PublicJob;\n begin: string;\n geschlecht: 1 | 2;\n dateOfBirth: string | undefined;\n vorgang: 1 | 2;\n produktlinie: 'C';\n zahlweise: number;\n haftpflicht: number;\n kasko: Kasko | undefined;\n optionen: ZusatzOptionen;\n fahrzeug: Fahrzeug;\n eigentum: Wohneigentum | undefined;\n sfKlasse: SfKlasse;\n}\n\ninterface Kasko {\n teilkaskoAuswahl: boolean;\n teilkaskoSelbstbeteiligung: number;\n vollkaskoAuswahl: boolean | undefined;\n vollkaskoSelbstbeteiligung: number | undefined;\n}\n\ninterface ZusatzOptionen {\n auslandsschutz: boolean;\n}\n\ninterface Fahrzeug {\n hsn: string;\n tsn: string;\n abwLeistung: Leistung | undefined;\n halter: Halter;\n saisonKz: SaisonKz | undefined;\n jaehrlFahrleistung: number;\n stellplatz: number;\n fahrertypes: string[] | undefined;\n fahrers: Fahrer[] | undefined;\n}\n\ninterface Leistung {\n value: number;\n type: 'KW' | 'PS';\n}\n\ninterface Wohneigentum {\n art: number | undefined;\n versichert: boolean | undefined;\n}\n\ninterface SfKlasse {\n vorversichert: boolean | undefined;\n klasseHaftpflicht: string | undefined;\n klasseKasko: string | undefined;\n neueZwn: number | undefined;\n hukZwnKrad: number | undefined;\n}\n\ninterface Fahrer {\n alter: number | undefined;\n dateOfBirth: string | undefined;\n}\n\ninterface Verbleib {\n verbleib: number | undefined;\n kaeufer: number | undefined;\n verkaufDatum: string | undefined;\n}\n\ninterface Vorversicherung {\n preInsurance: PriorInsuranceCompany;\n preInsuranceCompanyNumber: string | undefined;\n preInsuranceName: string | undefined;\n terminationMember: SelfCancelled | undefined;\n preVnrHuk: string | undefined;\n preVnrHuk24: string | undefined;\n preVnrVu: string | undefined;\n preKennzeichen: string | undefined;\n}\n\nexport interface TariffInputForClaim extends TariffInput {\n customer: KfzCustomer;\n vorversicherung: Vorversicherung | undefined;\n fahrzeug: FahrzeugForClaim;\n erziehungsberechtigter: Erziehungsberechtigter | undefined;\n payment: Payment | undefined;\n sfKlasse: SfKlasseForClaim;\n boniChecked: boolean;\n}\n\ninterface FahrzeugForClaim extends Fahrzeug {\n kmStand: number | undefined;\n fin: string | undefined;\n kennzeichen: string | undefined;\n verbleib: Verbleib | undefined;\n erstZulassung: string | undefined;\n wert: number | undefined;\n}\n\ninterface SfKlasseForClaim extends SfKlasse {\n rabatt:\n | {\n vnr: string;\n }\n | undefined;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TariffMappingService {\n constructor(\n private _crossFieldService: CrossFieldService,\n private _dataService: DataService,\n private _customerService: CustomerService,\n private _consentService: ConsentService,\n private _priorInsuranceService: PriorInsuranceHukdeOptionsService,\n ) {}\n\n private _mapPreinsurance(): Vorversicherung {\n const { furtherDetails } = this._dataService;\n\n return {\n preInsurance: furtherDetails.priorInsuranceCompany\n ? furtherDetails.priorInsuranceCompany!\n : PriorInsuranceCompany.Other,\n preVnrHuk:\n furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk\n ? convertPolicyNumberToString(furtherDetails.priorInsuranceVnr)!\n : undefined,\n preVnrHuk24:\n furtherDetails.priorInsuranceCompany === PriorInsuranceCompany.Huk24\n ? convertPolicyNumberToString(furtherDetails.priorInsuranceVnr)!\n : undefined,\n preVnrVu:\n this._crossFieldService.isOtherCompanyAvailable() ||\n this._crossFieldService.newZwnEpAvailable()\n ? furtherDetails.otherCompanyVnr\n : undefined,\n preInsuranceCompanyNumber:\n this._crossFieldService.isOtherCompanyAvailable() ||\n this._crossFieldService.newZwnEpAvailable()\n ? this._priorInsuranceService.getVuNrByName(furtherDetails.otherCompanyName) ?? undefined\n : undefined,\n preInsuranceName:\n this._crossFieldService.isOtherCompanyAvailable() ||\n this._crossFieldService.newZwnEpAvailable()\n ? formatContractNumberOther(furtherDetails.otherCompanyName!)\n : undefined,\n terminationMember: this._crossFieldService.isSelfCancelledAvailable()\n ? mapSelfCancelledOptions(furtherDetails.selfCancelled!)\n : undefined,\n preKennzeichen: this._crossFieldService.isLicensePlatePriorVehicleAvailable()\n ? convertAkzToString(furtherDetails.akz!)\n : undefined,\n };\n }\n\n public mapDataForClaim(): TariffInputForClaim {\n const base = this.mapData();\n const { details, furtherDetails, vehicle } = this._dataService;\n const customer = mapCustomer(\n furtherDetails.personalData,\n this._consentService,\n !details.naturalPerson,\n this._customerService.customer,\n );\n const hasPreinsurance =\n // not vertrag_partner (rabatt)\n (this._crossFieldService.isPriorInsuranceCompanyAvailable() &&\n !this._crossFieldService.isPartnerInsuranceVnrAvailable()) ||\n this._crossFieldService.isOtherCompanyAvailable() ||\n this._crossFieldService.newZwnEpAvailable();\n\n return {\n ...base,\n customer,\n fahrzeug: {\n ...base.fahrzeug,\n kennzeichen:\n vehicle.alreadyInsured === true ? convertAkzToString(furtherDetails.akz!) : undefined,\n kmStand: furtherDetails.kilometers,\n erstZulassung: this._crossFieldService.isFirstRegistrationDateAvailable()\n ? formatIsoDate(furtherDetails.firstRegistrationDate!)\n : undefined,\n fin: furtherDetails.identificationNumber,\n verbleib: this._crossFieldService.isOldVehicleAvailable()\n ? this._crossFieldService.isOldVehicleSaleAvailable()\n ? mapVerbleib(\n furtherDetails.oldVehicle!,\n furtherDetails.oldVehicleSale,\n furtherDetails.oldVehicleSaleDate!,\n )\n : mapVerbleib(furtherDetails.oldVehicle!)\n : undefined,\n wert: this._crossFieldService.isBikeQuadTrike() ? furtherDetails.worth : undefined,\n },\n sfKlasse: {\n ...base.sfKlasse,\n rabatt: this._crossFieldService.isPartnerInsuranceVnrAvailable()\n ? {\n vnr: convertPolicyNumberToString(furtherDetails.priorInsuranceVnr)!,\n }\n : undefined,\n },\n vorversicherung: hasPreinsurance ? this._mapPreinsurance() : undefined,\n payment: this._crossFieldService.isSepa() ? mapPayment(furtherDetails.payment) : undefined,\n erziehungsberechtigter: this._crossFieldService.isParentPersonalDataAvailable()\n ? mapErziehungsberechtigter(furtherDetails.personalDataKfz.parentPersonalData!)\n : undefined,\n boniChecked: !this._crossFieldService.isCreditWorthy(),\n };\n }\n\n public mapData(): TariffInput {\n const { vehicle, details, offer } = this._dataService;\n return {\n begin: formatIsoDate(vehicle.startDate!),\n dateOfBirth: this._crossFieldService.isBirthdateAvailable()\n ? formatIsoDate(details.birthdate!)\n : undefined,\n vorgang: vehicle.alreadyInsured ? 1 : 2,\n geschlecht: details.naturalPerson ? 1 : 2,\n zahlweise: this._crossFieldService.isPaymentAvailable() ? offer.paymentInterval : 1,\n produktlinie: 'C',\n haftpflicht: offer.liability!,\n kasko: this._mapKasko(),\n sfKlasse: this._mapSfKlasse(),\n eigentum: this._crossFieldService.isPropertyAvailable() ? this._mapEigentum() : undefined,\n fahrzeug: this._mapFahrzeug(),\n optionen: {\n auslandsschutz: this._crossFieldService.isForeignProtectionAvailable()\n ? offer.foreignProtection\n : false,\n },\n berufGruppe: mapPublicJob(details.publicJob),\n };\n }\n\n private _mapSfKlasse(): SfKlasse {\n const { details } = this._dataService;\n return {\n klasseHaftpflicht: this._crossFieldService.isSfAvailable() ? details.sf.liability : undefined,\n klasseKasko:\n this._crossFieldService.isSfAvailable() && this._crossFieldService.isBikeQuadTrike()\n ? details.sf.cover\n : undefined,\n vorversichert: this._crossFieldService.isPriorInsuranceAvailable()\n ? details.priorInsurance\n : undefined,\n neueZwn: this._crossFieldService.isNewZwnAvailable() ? details.newZwn : undefined,\n hukZwnKrad:\n this._crossFieldService.isNewZwnAvailable() &&\n (details.newZwn === 1 || details.newZwn === 2)\n ? details.hukZwnKrad\n : undefined,\n };\n }\n\n private _mapEigentum(): Wohneigentum {\n const { details } = this._dataService;\n return {\n art: this._crossFieldService.isPropertyAvailable() ? details.property : undefined,\n versichert: this._crossFieldService.isPropertyInsuranceAvailable()\n ? details.propertyInsurance\n : undefined,\n };\n }\n\n private _mapKasko(): Kasko {\n const { offer } = this._dataService;\n const isBikeQuadTrike = this._crossFieldService.isBikeQuadTrike();\n const isCreditWorthy = this._crossFieldService.isCreditWorthy();\n\n return {\n vollkaskoAuswahl:\n isCreditWorthy && isBikeQuadTrike ? offer.cover === CoverInsurance.Full : false,\n teilkaskoAuswahl: isCreditWorthy ? offer.cover === CoverInsurance.Semi : false,\n teilkaskoSelbstbeteiligung: offer.semiCoverSb,\n vollkaskoSelbstbeteiligung: isBikeQuadTrike ? offer.fullCoverSb : undefined,\n };\n }\n\n private _mapFahrzeug(): Fahrzeug {\n const { vehicle, details } = this._dataService;\n return {\n abwLeistung: vehicle.customPower\n ? {\n value: vehicle.customPowerValue!,\n type: vehicle.customPowerValueUnit === VehiclePowerUnit.Kw ? 'KW' : 'PS',\n }\n : undefined,\n hsn: vehicle.search.result!.certificate.mkn,\n tsn: vehicle.search.result!.certificate.tkn,\n halter: {\n typ: vehicle.owner!,\n halterAddress: {\n city: vehicle.ownerLocation.city,\n postalCode: vehicle.ownerLocation.zip,\n deliveryNote: undefined,\n street: undefined,\n },\n },\n jaehrlFahrleistung: details.kilometers!,\n stellplatz: details.parking!,\n saisonKz: this._crossFieldService.isSeasonalRangeAvailable()\n ? {\n beginn: vehicle.licensePlate.seasonalStart! + 1,\n ende: vehicle.licensePlate.seasonalEnd! + 1,\n }\n : undefined,\n fahrertypes: this._mapFahrer(),\n fahrers: this._mapYoungestDrivers(),\n };\n }\n\n private _mapFahrer(): string[] {\n const result = [];\n if (this._crossFieldService.isDriversAvailable()) {\n const {\n details: { drivers },\n } = this._dataService;\n if (drivers.spouse) {\n result.push('EP');\n }\n if (drivers.lifePartner) {\n result.push('LP');\n }\n if (drivers.children) {\n result.push('KIND');\n }\n if (drivers.others) {\n result.push('WEIT');\n }\n }\n return result;\n }\n\n private _mapYoungestDrivers(): Fahrer[] {\n if (!this._crossFieldService.isYoungestDriverAvailable()) {\n return [];\n }\n const result: Fahrer[] = [];\n\n const {\n details: {\n minAge: { youngestDriver },\n },\n } = this._dataService;\n\n result.push({\n dateOfBirth:\n youngestDriver.birthdate == null ? undefined : formatIsoDate(youngestDriver.birthdate),\n alter:\n this._crossFieldService.isYoungestDriverAgeAvailable() && youngestDriver.age\n ? youngestDriver.age\n : undefined,\n });\n\n return result;\n }\n}\n","/**\n * Format contract number for other insurance companies.\n */\nexport function formatContractNumberOther(contractNumber: string): string {\n // u2013 = en dash, u2014 = em dash\n return contractNumber.replace(/[\\u2013\\u2014]/g, '-');\n}\n\nexport function mapBooleanToNumberValues(value?: boolean, opt1?: number, opt2?: number) {\n return !!value ? (opt1 !== undefined ? opt1 : 1) : opt2 !== undefined ? opt2 : 2;\n}\n\nexport function mapBooleanToOptValues(value?: boolean): 1 | 2 {\n return !!value ? 1 : 2;\n}\n","import { AbstractTariffService } from '@web-lib-angular/hukde-tr';\nimport { Injectable, Injector } from '@angular/core';\nimport { Tariff, TariffInput, TariffMappingService } from '../service/tariff-mapping.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TariffService extends AbstractTariffService {\n constructor(private _tariffMapping: TariffMappingService, injector: Injector) {\n super(injector);\n }\n\n protected _mapData(): TariffInput {\n return this._tariffMapping.mapData();\n }\n}\n","\n \n Für Ihr Fahrzeug können wir Ihnen leider keine Kaskoversicherung anbieten.\n \n \n Kfz-Haftpflichtversicherung\n \n \n \n
    \n
  • 100 Mio. Versicherungssumme
  • \n
  • Mallorca Police
  • \n
  • Schutzbrief, Hilfe für unterwegs, z. B. bei Unfall und Panne
  • \n
\n
\n \n \n \n
    \n
  • 100 Mio. Versicherungssumme
  • \n
  • Mallorca Police
  • \n
\n
\n \n
\n\n \n \n \n Kaskoversicherung\n \n \n \n
    \n
  • Deckt alle Schäden im Rahmen der Teilkasko ab
  • \n
  • Alle Unfälle, egal, wer Verursacher ist
  • \n
  • Vandalismusschäden am Fahrzeug durch Dritte
  • \n
\n
\n \n \n \n \n \n \n \n

Die Teilkasko ersetzt Schäden z. B. bei

\n
    \n
  • Diebstahl
  • \n
  • Brand und Explosion
  • \n
  • Naturgewalten
  • \n
  • Zusammenstoß mit Tieren
  • \n
  • Kurzschluss
  • \n
\n
\n \n \n \n \n \n
\n
\n\n \n Weitere Empfehlung\n \n \n \n
    \n
  • Besonderer Schutz wenn Sie ins Ausland fahren
  • \n
\n
\n \n
\n
\n
\n
\n\n Gesamtbeitrag{{ paymentInterval ? ',' : '' }} {{ paymentInterval }}\"\n [priceTotal]=\"tariff?.beitragGesamt\"\n [data]=\"selectedProducts\"\n (removeItem)=\"removeProduct($event)\"\n >\n \n
\n","import { Subscription } from 'rxjs';\nimport { ControlContainer } from '@angular/forms';\nimport { TariffService } from './tariff.service';\nimport { Tariff } from '../service/tariff-mapping.service';\nimport { SelectOption, HukProduct, Logger, HelpcenterService } from '@web-lib-angular/hukde-tr';\nimport { Offer, CoverInsurance, LiabilityInsurance } from '../model/offer';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { CrossFieldService } from '../service/cross-field.service';\n\nconst HEADLINE_HAFTPLICHT_MIT_SCHUTZBRIEF = 'Kfz-Haftpflichtversicherung und Schutzbrief';\nconst HEADLINE_HAFTPFLICHT_OHNE_SCHUTZBRIEF = 'Kfz-Haftpflichtversicherung ohne Schutzbrief';\nconst HEADLINE_VOLLKASKO = 'Vollkasko';\nconst HEADLINE_TEILKASKO = 'Teilkasko';\nconst HEADLINE_AUSLAND_SCHADENSCHUTZ = 'Ausland-Schadenschutz';\n\n@Component({\n selector: 'huk-offer-details',\n templateUrl: './offer-details.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OfferDetailsComponent implements OnInit, OnDestroy {\n @Input() public paymentInterval = '';\n @Input() public value: Readonly;\n @Output() public valueChange = new EventEmitter();\n\n public tariff: Tariff | undefined = undefined;\n\n public selectedProducts: ReadonlyArray = [];\n\n public isBikeQuadTrike: boolean;\n public isForeignProtectionAvailable: boolean;\n public isOldVehicle: boolean;\n\n public readonly liability = LiabilityInsurance;\n public readonly cover = CoverInsurance;\n\n private _tariffSubscription = Subscription.EMPTY;\n private _tariffResultSubscription = Subscription.EMPTY;\n private _tariffErrorSubscription = Subscription.EMPTY;\n\n public fullCoverSbOptions: SelectOption[] = [\n { value: 28, label: 'Vollkasko 150 € / Teilkasko ohne' },\n { value: 26, label: 'Vollkasko 150 € / Teilkasko 150 €' },\n { value: 38, label: 'Vollkasko 300 € / Teilkasko ohne' },\n { value: 36, label: 'Vollkasko 300 € / Teilkasko 150 €' },\n { value: 33, label: 'Vollkasko 300 € / Teilkasko 300 €' },\n { value: 48, label: 'Vollkasko 500 € / Teilkasko ohne' },\n { value: 46, label: 'Vollkasko 500 € / Teilkasko 150 €' },\n { value: 44, label: 'Vollkasko 500 € / Teilkasko 500 €' },\n ];\n\n public semiCoverSbOptions: SelectOption[] = [\n { value: 8, label: 'Teilkasko ohne' },\n { value: 6, label: 'Teilkasko 150 €' },\n { value: 3, label: 'Teilkasko 300 €' },\n { value: 4, label: 'Teilkasko 500 €' },\n ];\n\n constructor(\n private _helpcenterService: HelpcenterService,\n public tariffService: TariffService,\n private _cd: ChangeDetectorRef,\n private _controlContainer: ControlContainer,\n private _logger: Logger,\n private _crossFieldService: CrossFieldService,\n ) {}\n\n public ngOnInit() {\n this.isBikeQuadTrike = this._crossFieldService.isBikeQuadTrike();\n this.isForeignProtectionAvailable = this._crossFieldService.isForeignProtectionAvailable();\n this.isOldVehicle = this._crossFieldService.isOldVehicle();\n if (this.isOldVehicle) {\n this.setCover(undefined);\n }\n this._tariffSubscription = this._controlContainer.valueChanges!.subscribe(this.tariffService);\n this._tariffResultSubscription = this.tariffService.result.subscribe((tariff) => {\n this.tariff = tariff;\n this._updateSelectedProducts();\n this._cd.markForCheck();\n });\n this._tariffErrorSubscription = this.tariffService.onError.subscribe((err) =>\n this._logger.error(err),\n );\n this._addAvatarMessage(this.value.liability);\n }\n\n public ngOnDestroy() {\n this._tariffSubscription.unsubscribe();\n this._tariffResultSubscription.unsubscribe();\n this._tariffErrorSubscription.unsubscribe();\n }\n\n public setLiability(liability: Offer['liability']) {\n this.valueChange.emit({\n ...this.value,\n liability,\n });\n this._addAvatarMessage(liability);\n }\n\n public setCover(cover: Offer['cover']) {\n this.valueChange.emit({\n ...this.value,\n cover,\n });\n }\n\n public setFullCoverSb(fullCoverSb: Offer['fullCoverSb']) {\n this.valueChange.emit({\n ...this.value,\n fullCoverSb,\n });\n }\n\n public setSemiCoverSb(semiCoverSb: Offer['semiCoverSb']) {\n this.valueChange.emit({\n ...this.value,\n semiCoverSb,\n });\n }\n\n public setForeignProtection(foreignProtection: Offer['foreignProtection']) {\n this.valueChange.emit({\n ...this.value,\n foreignProtection,\n });\n }\n\n public removeProduct(product: HukProduct) {\n switch (product.headline) {\n case HEADLINE_VOLLKASKO:\n this.setCover(undefined);\n break;\n case HEADLINE_TEILKASKO:\n this.setCover(undefined);\n break;\n case HEADLINE_AUSLAND_SCHADENSCHUTZ:\n this.setForeignProtection(false);\n }\n }\n\n private _updateSelectedProducts() {\n const tariff = this.tariff!;\n const products: HukProduct[] = (this.selectedProducts = []);\n if (this.value.liability === LiabilityInsurance.WithProtection) {\n products.push({\n headline: HEADLINE_HAFTPLICHT_MIT_SCHUTZBRIEF,\n price: tariff.beitragHaftpflichtMitSchutzbrief,\n });\n } else if (this.value.liability === LiabilityInsurance.NoProtection) {\n products.push({\n headline: HEADLINE_HAFTPFLICHT_OHNE_SCHUTZBRIEF,\n price: tariff.beitragHaftpflichtOhneSchutzbrief,\n });\n }\n if (this.value.cover === CoverInsurance.Full) {\n products.push({\n headline: HEADLINE_VOLLKASKO,\n price: tariff.beitragVollkasko,\n removable: true,\n });\n } else if (this.value.cover === CoverInsurance.Semi) {\n products.push({\n headline: HEADLINE_TEILKASKO,\n price: tariff.beitragTeilkasko,\n removable: true,\n });\n }\n if (this.isForeignProtectionAvailable && this.value.foreignProtection) {\n products.push({\n headline: HEADLINE_AUSLAND_SCHADENSCHUTZ,\n price: tariff.beitragAuslandsschutz,\n removable: true,\n });\n }\n }\n\n private _addAvatarMessage(liability: Offer['liability']) {\n if (liability !== undefined) {\n this._helpcenterService.addMessage('KRA009');\n }\n }\n\n public get isCreditWorthy() {\n return this._crossFieldService.isCreditWorthy();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CrossFieldService } from './cross-field.service';\nimport { PathService } from '@web-lib-angular/hukde-tr';\n\n@Injectable({ providedIn: 'root' })\nexport class MandatoryPdfService {\n constructor(private _crossFieldService: CrossFieldService, private _pathService: PathService) {}\n\n public get bedingungen() {\n return this._crossFieldService.isOldTariff()\n ? this._pathService.extractPath('kr.bedingungen.0124')\n : this._pathService.extractPath('kr.bedingungen.0324');\n }\n\n public get produktInformationsBlatt() {\n return this._crossFieldService.isOldTariff()\n ? this._pathService.extractPath('kr.pib.0123')\n : this._pathService.extractPath('kr.pib.0324');\n }\n\n public get umd() {\n return this._pathService.extractPath('kr.umd.0120');\n }\n\n public get infoDaten() {\n return this._pathService.extractPath('kr.info.daten');\n }\n\n public get nachhaltigkeitsinformation() {\n return this._pathService.extractPath('kr.nachhaltigkeitsinfo');\n }\n\n public get elektronischerGeschaeftsverkehr() {\n return this._pathService.extractPath('kr.312.info');\n }\n}\n","\n \n \n \n Der Antrag wurde nicht an die HUK-COBURG bzw. HUK-COBURG-Allgemeine geschickt. Das Ergebnis\n der Risikoprüfung führt dazu, dass wir unser bisheriges Angebot zurückziehen. Nachstehend\n unser neues Angebot mit eingeschränktem Versicherungsschutz. Bitte beachten Sie, dass wir\n Ihnen Versicherungsschutz nur nach bestätigter Vorkasse gewähren können.\n \n\n \n\n \n Zahlungsweise\n
\n
\n
\n

\n Sie sparen, wenn Sie jährlich im Voraus zahlen.
\n Die Beiträge sind inklusive Versicherungsteuer.\n

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

Alle Details zu diesem Angebot haben wir für Sie zum Download zusammengefasst

\n \n
\n \n \n \n
\n
\n\n \n \n \n \n \n
\n
\n","import { TariffService } from './tariff.service';\nimport { DataService } from '../service/data.service';\nimport { Offer } from '../model/offer';\nimport { Component, OnInit } from '@angular/core';\nimport { SelectOption, DisableStepService } from '@web-lib-angular/hukde-tr';\nimport { CrossFieldService } from '../service/cross-field.service';\nimport { MandatoryPdfService } from '../service/mandatory-pdf.service';\n\n@Component({\n selector: 'huk-offer',\n templateUrl: 'offer.component.html',\n})\nexport class OfferComponent implements OnInit {\n public offer: Offer;\n\n public isDisabled = true;\n public isPaymentAvailable: boolean;\n\n public paymentOptions: SelectOption[] = [\n { value: 1, label: 'jährlich' },\n { value: 2, label: '1/2-jährlich' },\n { value: 4, label: '1/4-jährlich' },\n ];\n\n public tocLink: string | undefined;\n public infoLink: string | undefined;\n\n constructor(\n private _dataService: DataService,\n private _disableStepService: DisableStepService,\n private _crossFieldService: CrossFieldService,\n private _tariffService: TariffService,\n crossFieldService: CrossFieldService,\n mandatoryPdfService: MandatoryPdfService,\n ) {\n this.offer = this._dataService.offer;\n this.isPaymentAvailable = crossFieldService.isPaymentAvailable();\n\n this.tocLink = mandatoryPdfService.bedingungen;\n this.infoLink = mandatoryPdfService.produktInformationsBlatt;\n }\n\n public ngOnInit() {\n this.isDisabled = this._disableStepService.disable;\n }\n\n public updateOffer(details: Offer) {\n this.offer = this._dataService.offer = {\n ...this.offer,\n ...details,\n };\n }\n\n public setPaymentInterval(paymentInterval: Offer['paymentInterval']) {\n this.offer = this._dataService.offer = {\n ...this.offer,\n paymentInterval,\n };\n }\n\n public get paymentIntervalText(): string {\n if (this.isPaymentAvailable) {\n return this.paymentOptions.find((option) => option.value === this.offer.paymentInterval)!\n .label;\n }\n\n return '';\n }\n\n public showPdf() {\n this._tariffService.showPdf();\n }\n\n public get isCreditWorthy() {\n return this._crossFieldService.isCreditWorthy();\n }\n}\n","import { ControlContainer } from '@angular/forms';\nimport {\n Component,\n OnInit,\n Host,\n Inject,\n InjectionToken,\n Input,\n Optional,\n ElementRef,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, debounceTime } from 'rxjs/operators';\n\nimport { CrossFieldService } from '../service/cross-field.service';\nimport { Router } from '@angular/router';\nimport {\n ConsentService,\n MainComponent,\n MissingConsent,\n ScrollService,\n StepChangeService,\n} from '@web-lib-angular/hukde-tr';\n\nexport type BeforeNextStepFn = () => void | boolean | Observable;\nexport interface BeforeNextStep {\n beforeNextStep: BeforeNextStepFn;\n}\nexport type OnNextStepFn = () => void;\nexport interface OnNextStep {\n onNextStep: OnNextStepFn;\n}\n\nexport type BeforeNext = BeforeNextStep | BeforeNextStepFn;\nexport type OnNext = OnNextStep | OnNextStepFn;\nexport const BEFORE_NEXT_STEP = new InjectionToken('BeforeNextStep');\nexport const ON_NEXT_STEP = new InjectionToken('OnNextStep');\n\n/** @dynamic */\n@Component({\n selector: 'huk-further-details-next-button',\n templateUrl: './further-details-next-button.component.html',\n})\nexport class FurtherDetailsNextButtonComponent implements OnInit {\n @Input() public text = 'weiter';\n @Input() public autoScroll = true;\n @Input() public size = 'small';\n @Input() public consent: MissingConsent;\n @Input() public color = 'yellow';\n @Input() public zustimmung = false;\n\n constructor(\n private _mainComponent: MainComponent,\n public form: ControlContainer,\n private _el: ElementRef,\n private _scrollService: ScrollService,\n private _stepChangeService: StepChangeService,\n private _consentService: ConsentService,\n private _crossFieldService: CrossFieldService,\n private _router: Router,\n @Host() @Optional() @Inject(BEFORE_NEXT_STEP) private _beforeNextStep?: BeforeNext,\n @Host() @Optional() @Inject(ON_NEXT_STEP) private _onNextStep?: OnNext,\n ) {}\n\n public ngOnInit(): void {\n if (this.autoScroll && this.form.statusChanges) {\n // trigger automatic scrolling to button element when form status changes to being valid\n this.form.statusChanges\n .pipe(\n filter(() => !this._stepChangeService.hasStepRecentlyChanged),\n debounceTime(100), // debounce changes, since status can be temporarily valid\n filter((status: string) => status === 'VALID'),\n )\n .subscribe(() => this.scrollToButton());\n }\n }\n\n public scrollToButton(): void {\n this._scrollService.scrollToElement(this._el.nativeElement as Element, 1000, 200, true, false);\n }\n\n public next(): void {\n if (this._crossFieldService.isOldVehicle() && this._crossFieldService.isKaskoSelected()) {\n this._router.navigateByUrl('unser-angebot');\n return;\n }\n\n if (this.consent) {\n // Wenn der Nextbutton mit einer Zustimmung befüllt wird, ändert er beim Seitenübergang den Zustimmungszustand\n this._consentService.changeConsent(this.consent, this.zustimmung);\n }\n this._beforeNext().then((result) => {\n if (result) {\n this._onNext();\n this._mainComponent.advanceToNextStep();\n }\n });\n }\n\n private _onNext(): void {\n if (this._onNextStep != null) {\n if (typeof this._onNextStep === 'function') {\n this._onNextStep();\n } else {\n this._onNextStep.onNextStep();\n }\n }\n }\n private _beforeNext(): Promise {\n return new Promise((resolve) => {\n if (this._beforeNextStep == null) {\n return resolve(true);\n }\n const result =\n typeof this._beforeNextStep === 'function'\n ? this._beforeNextStep()\n : this._beforeNextStep.beforeNextStep();\n if (typeof result === 'undefined') {\n return resolve(true);\n }\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n result.subscribe(resolve);\n });\n }\n}\n","\n","\n \n

\n Für die vollständige Angebotsausfertigung benötigen wir hier noch einige Details zu Ihrem\n Motorrad sowie Angaben zu Ihrer Person, Ihrem Wohnort und möglichen weiteren\n Versicherungsverträgen.\n

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

\n Eine Aktualisierung zum Versicherungsbeginn ist nicht erforderlich.\n

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

Geben Sie bitte den vollständigen Namen des Unternehmens an.

\n
\n
\n \n
\n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \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 { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport {\n clearTime,\n DisableStepService,\n PolicyNumberRange,\n SelectOption,\n ZipCity,\n stripAkzWhitespaces,\n HelpcenterService,\n} from '@web-lib-angular/hukde-tr';\nimport { DataService } from '../service/data.service';\nimport { Vehicle } from '../model/vehicle';\nimport { FurtherDetails } from '../model/further-details';\nimport { CrossFieldService } from '../service/cross-field.service';\nimport {\n INSURANCE_HOLDER_SELF_OPTIONS,\n OLD_VEHICLE_OPTIONS,\n OLD_VEHICLE_SALE_OPTIONS,\n OldVehicle,\n PRIOR_INSURANCE_COMPANY_OPTIONS,\n PriorInsuranceCompany,\n SELF_CANCELLED_OPTIONS,\n VehicleOwner,\n PriorInsuranceHukdeOptionsService,\n} from '@web-app-kfz/hukde-tr-commons';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'huk-further-details',\n templateUrl: 'further-details.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FurtherDetailsComponent implements OnInit {\n public isDisabled = false;\n public vehicleBrand = '';\n public isAlreadyInsured: Vehicle['alreadyInsured'];\n public value: FurtherDetails;\n public birthDate: Date | null = null;\n public naturalPerson: boolean | undefined;\n public isHolderMyself: boolean;\n public isHolderMyselfOrPartner: boolean;\n public zipCity: ZipCity | undefined;\n public alreadyInsured: boolean;\n public priorInsuranceCompanyHeadline = '';\n\n public firstRegisDateStart: Date = new Date(1935, 0, 1);\n public firstRegisDateEnd: Date | undefined;\n public isBikeQuadTrike: boolean;\n public isPriorInsuranceCompanyAvailable: boolean;\n public isPartnerInsuranceVnrAvailable: boolean;\n public insuranceVnrTitle = '';\n public insuranceVnrRangeErrorMessage: string | undefined = undefined;\n public insuranceVnrRange: PolicyNumberRange[] | undefined = undefined;\n public insuranceVnrExample = '';\n public holderCompanyAvailable: boolean;\n public driversLicenseDateMax: Date;\n public driversLicenseDateMin: Date;\n\n public oldVehicleSaleDateMax: Date;\n public isVehicleSold = false;\n\n public readonly priorInsuranceCompanyOptions = PRIOR_INSURANCE_COMPANY_OPTIONS;\n public readonly oldVehicleOptions = OLD_VEHICLE_OPTIONS;\n public readonly oldVehicleSaleOptions = OLD_VEHICLE_SALE_OPTIONS;\n public readonly otherInsuranceCompanyOptions: SelectOption[];\n public readonly insuranceHolderSelfOptions = INSURANCE_HOLDER_SELF_OPTIONS;\n public readonly selfCancelledOptions = SELF_CANCELLED_OPTIONS;\n\n public get insuranceVnrAvailable() {\n return (\n this._crossFieldService.isPriorInsuranceVnrAvailable() || this.isPartnerInsuranceVnrAvailable\n );\n }\n\n public get oldVehicleAvailable() {\n return this._crossFieldService.isOldVehicleAvailable();\n }\n\n public get otherInsuranceCompanyAvailable(): boolean {\n return (\n this._crossFieldService.isOtherCompanyAvailable() ||\n this._crossFieldService.newZwnEpAvailable()\n );\n }\n\n public get forbidHuk(): boolean {\n return this._crossFieldService.isPriorInsuranceCompanyOtherSelected();\n }\n\n public get selfCancelledAvailable() {\n return this._crossFieldService.isSelfCancelledAvailable();\n }\n\n public get licensePlatePriorVehicleAvailable() {\n return this._crossFieldService.isLicensePlatePriorVehicleAvailable();\n }\n\n public get contractCancellationAvailable() {\n return this._crossFieldService.isContractCancellationAvailable();\n }\n\n public get parentPersonalDataAvailable() {\n return this._crossFieldService.isParentPersonalDataAvailable();\n }\n\n constructor(\n private _disableStepService: DisableStepService,\n private _dataService: DataService,\n private _crossFieldService: CrossFieldService,\n private _helpcenterService: HelpcenterService,\n private _router: Router,\n insuranceOptionsService: PriorInsuranceHukdeOptionsService,\n ) {\n this.value = this._dataService.furtherDetails;\n this.isAlreadyInsured = this._dataService.vehicle.alreadyInsured;\n\n const typeClass = this._dataService.vehicle.search.typeClass;\n this.vehicleBrand = typeClass ? typeClass.brand : '';\n\n this.firstRegisDateEnd =\n (this.isAlreadyInsured && new Date()) || this._dataService.vehicle.startDate!;\n this.isBikeQuadTrike = this._crossFieldService.isBikeQuadTrike();\n this.isPriorInsuranceCompanyAvailable = this._crossFieldService.isPriorInsuranceCompanyAvailable();\n this.isPartnerInsuranceVnrAvailable = this._crossFieldService.isPartnerInsuranceVnrAvailable();\n\n this.otherInsuranceCompanyOptions = insuranceOptionsService.getOptions();\n this.isVehicleSold = this._isVehicleSold();\n\n this.oldVehicleSaleDateMax = clearTime(new Date());\n this.oldVehicleSaleDateMax.setDate(this.oldVehicleSaleDateMax.getDate() + 2);\n\n this.zipCity = _dataService.vehicle.ownerLocation;\n this.birthDate = this._crossFieldService.isBirthdateAvailable()\n ? _dataService.details.birthdate\n : null;\n this.isHolderMyself = this._dataService.vehicle.owner === VehicleOwner.Me;\n this.isHolderMyselfOrPartner = this._crossFieldService.isOwnerSelfOrPartner();\n this.naturalPerson = _dataService.details.naturalPerson;\n this.alreadyInsured = _dataService.vehicle.alreadyInsured!;\n this.driversLicenseDateMin = clearTime(new Date(1900, 0, 1));\n this.driversLicenseDateMax = clearTime(new Date());\n this._generateHeadline();\n }\n\n public ngOnInit() {\n this.isDisabled = this._disableStepService.disable;\n this._updateInsuranceVnrTitle();\n this._updateInsuranceVnrRanges();\n }\n\n public setKilometers(kilometers: FurtherDetails['kilometers']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n kilometers,\n };\n }\n\n public addKilometersMessage() {\n if (this._dataService.details.kilometers === this.value.kilometers) {\n this._helpcenterService.addMessage('KRA004');\n }\n }\n\n public setWorth(worth: FurtherDetails['worth']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n worth,\n };\n }\n\n public setFirstRegistrationDate(firstRegistrationDate: FurtherDetails['firstRegistrationDate']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n firstRegistrationDate,\n };\n }\n\n public setPriorInsuranceCompany(priorInsuranceCompany: FurtherDetails['priorInsuranceCompany']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n priorInsuranceCompany,\n };\n\n this._updateInsuranceVnrTitle();\n this._updateInsuranceVnrRanges();\n this._generateHeadline();\n }\n\n public setPriorInsuranceVnr(priorInsuranceVnr: FurtherDetails['priorInsuranceVnr']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n priorInsuranceVnr,\n };\n }\n\n public setAkz(akz: FurtherDetails['akz']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n akz: akz ? stripAkzWhitespaces(akz) : akz,\n };\n }\n\n public setIdentificationNumber(identificationNumber: FurtherDetails['identificationNumber']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n identificationNumber,\n };\n\n if (identificationNumber) {\n this._helpcenterService.addMessage('KRA005');\n }\n }\n\n public setOtherCompany(otherCompany: FurtherDetails['otherCompany']) {\n const selectedOtherCompany = this.otherInsuranceCompanyOptions.find(\n (e) => e.value !== -1 && e.value === otherCompany,\n );\n const otherCompanyName = selectedOtherCompany ? selectedOtherCompany.label : undefined;\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n otherCompanyName,\n otherCompany,\n };\n }\n\n public setOtherCompanyName(otherCompanyName: FurtherDetails['otherCompanyName']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n otherCompanyName,\n };\n }\n\n public setOtherCompanyVnr(otherCompanyVnr: FurtherDetails['otherCompanyVnr']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n otherCompanyVnr,\n };\n }\n\n public setSelfCancelled(selfCancelled: FurtherDetails['selfCancelled']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n selfCancelled,\n };\n\n if (this.value.priorInsuranceCompany === PriorInsuranceCompany.Other && selfCancelled) {\n this._helpcenterService.addMessage('KRA006');\n }\n }\n\n public setPersonalData(personalData: FurtherDetails['personalData']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n personalData,\n };\n }\n\n public setPersonalDataKfz(personalDataKfz: FurtherDetails['personalDataKfz']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n personalDataKfz,\n };\n }\n\n public setOldVehicle(oldVehicle: FurtherDetails['oldVehicle']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n oldVehicle,\n };\n\n this.isVehicleSold = this._isVehicleSold();\n }\n\n public setOldVehicleSale(oldVehicleSale: FurtherDetails['oldVehicleSale']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n oldVehicleSale,\n };\n }\n\n public setOldVehicleSaleDate(oldVehicleSaleDate: FurtherDetails['oldVehicleSaleDate']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n oldVehicleSaleDate,\n };\n }\n\n public setPayment(payment: FurtherDetails['payment']) {\n this.value = this._dataService.furtherDetails = {\n ...this.value,\n payment,\n };\n }\n\n public onZipCityUpdate(value: ZipCity) {\n if (this.isHolderMyself === true) {\n this._dataService.vehicle.ownerLocation = {\n ...value,\n city: '',\n };\n // user decided to use different zip, navigate to first step\n this._router.navigate(['']);\n }\n }\n\n private _updateInsuranceVnrTitle() {\n this.insuranceVnrTitle = 'Wie lautet die Versicherungsscheinnummer ';\n this.insuranceVnrExample = 'z. B. 660/123456-A';\n if (this._crossFieldService.isPriorInsuranceVnrAvailable()) {\n const isHuk = this.value.priorInsuranceCompany === PriorInsuranceCompany.Huk;\n this.insuranceVnrTitle += `Ihres bisherigen Fahrzeugs bei der ${\n isHuk ? 'HUK-COBURG' : 'HUK24'\n }?`;\n\n if (isHuk) {\n this.insuranceVnrExample = 'z. B. 638/123456-A';\n }\n } else {\n this.insuranceVnrExample = 'z. B. 638/123456-A';\n this.insuranceVnrTitle +=\n 'des Kfz-Vertrags, der bereits auf Ihren bzw. den Namen Ihres Ehe-/Lebenspartners besteht?';\n }\n }\n\n private _updateInsuranceVnrRanges() {\n const priorInsuranceCompany = this.value.priorInsuranceCompany;\n if (\n this._crossFieldService.isPriorInsuranceVnrAvailable() &&\n priorInsuranceCompany !== undefined &&\n priorInsuranceCompany !== PriorInsuranceCompany.Other\n ) {\n if (priorInsuranceCompany === PriorInsuranceCompany.Huk24) {\n this.insuranceVnrRangeErrorMessage = 'KRF078';\n this.insuranceVnrRange = [\n { start: 501, end: 559, error: 'KRF034' },\n { start: 560, end: 563 },\n { start: 601, end: 659, error: 'KRF034' },\n { start: 660, end: 663 },\n { start: 666, end: 667 },\n ];\n } else {\n this.insuranceVnrRangeErrorMessage = 'KRF078';\n this.insuranceVnrRange = [\n { start: 501, end: 559 },\n { start: 560, end: 563, error: 'KRF035' },\n { start: 601, end: 659 },\n { start: 660, end: 663, error: 'KRF035' },\n ];\n }\n } else {\n this.insuranceVnrRangeErrorMessage = 'KRF078';\n this.insuranceVnrRange = [\n { start: 501, end: 563 },\n { start: 601, end: 663 },\n { start: 666, end: 667 },\n ];\n }\n }\n\n private _isVehicleSold() {\n return this.value.oldVehicle === OldVehicle.Sold;\n }\n\n private _generateHeadline() {\n this.priorInsuranceCompanyHeadline = `Bei welcher Gesellschaft ist ${this._generatePriorInsuranceSnippet()} versichert?`;\n }\n\n private _generatePriorInsuranceSnippet() {\n const { vehicle } = this._dataService;\n\n if (vehicle.alreadyInsured && this._crossFieldService.isPriorInsuranceCompanyOtherSelected()) {\n return 'Ihr Motorrad momentan';\n }\n\n if (\n vehicle.alreadyInsured === false &&\n this._crossFieldService.isPriorInsuranceCompanyOtherSelected()\n ) {\n return 'oder war Ihr bisheriges Fahrzeug';\n }\n\n if (this._crossFieldService.newZwnEpAvailable()) {\n return 'Ihr bzw. das Fahrzeug Ihres Ehe- oder Lebenspartners';\n }\n return 'Ihr Motorrad momentan';\n }\n\n public get otherCompanyLabel() {\n const { furtherDetails } = this._dataService;\n let companyLabel = '';\n if (furtherDetails.otherCompany) {\n const selectedOption = this.otherInsuranceCompanyOptions.find(\n (option) => +furtherDetails.otherCompany! === +option.value,\n );\n companyLabel = selectedOption ? selectedOption.label : '';\n }\n return companyLabel;\n }\n\n public get isCreditWorthy() {\n return this._crossFieldService.isCreditWorthy();\n }\n}\n","\n \n \n \n \n

Alle Details zu Ihren Angaben haben wir für Sie zum Download zusammengefasst.

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

Laden Sie bitte zunächst die Dokumente herunter, um fortzufahren.

\n \n

Folgende Unterlagen sind Grundlage Ihres Versicherungsvertrags

\n
\n \n

\n Laden Sie bitte die\n Versicherungsbedingungen, \n Informationen\n und das SEPA-Lastschriftmandat für wiederkehrende SEPA-Basislastschriften herunter.\n

\n

\n Laden Sie bitte die\n Versicherungsbedingungen und Informationen herunter\n

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

\n Ich bestätige, dass ich die\n heruntergeladen und gelesen habe. Die darin\n enthaltenen Informationen habe ich zur Kenntnis genommen und erkläre mich damit\n einverstanden.\n

\n \n \n \n\n

\n Aufgrund der Vorkasse kommt es zu längeren Bearbeitungszeiten. Ihren\n Versicherungsschutz können wir Ihnen erst nach Zahlungseingang gewähren.\n

\n
\n
\n
\n \n\n \n \n \n \n \n\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n Injector,\n OnInit,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {\n BEFORE_NEXT_STEP,\n ON_NEXT_STEP,\n TrackingService,\n VmService,\n VMGS_CONTEXT,\n isVmContext,\n} from '@web-lib-angular/hukde-tr';\nimport { CrossFieldService } from '../service/cross-field.service';\nimport { TrackingMappingService } from '../service/tracking-mapping.service';\nimport { AbstractSummaryDirective } from '@web-app-kfz/hukde-tr-commons';\nimport { MandatoryPdfService } from '../service/mandatory-pdf.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: 'summary.component.html',\n viewProviders: [\n {\n provide: BEFORE_NEXT_STEP,\n useExisting: forwardRef(() => SummaryComponent),\n },\n {\n provide: ON_NEXT_STEP,\n useExisting: forwardRef(() => SummaryComponent),\n },\n ],\n})\nexport class SummaryComponent extends AbstractSummaryDirective implements OnInit, OnDestroy {\n public avbColor = 'yellow';\n\n public readonly isVmContext: boolean;\n private _vmDataSubscription = Subscription.EMPTY;\n\n constructor(\n private _trackingService: TrackingService,\n private _trackingMappingService: TrackingMappingService,\n private _crossFieldService: CrossFieldService,\n private _vmService: VmService,\n @Inject(VMGS_CONTEXT) vmgs: string,\n crossFieldService: CrossFieldService,\n mandatoryPdfService: MandatoryPdfService,\n injector: Injector,\n ) {\n super(injector);\n\n this.hasSepa = crossFieldService.isSepa();\n\n this.downloadConditionPdf = mandatoryPdfService.bedingungen;\n this.downloadProductPdf = mandatoryPdfService.produktInformationsBlatt;\n this.downloadPrivacyPdf = mandatoryPdfService.infoDaten;\n this.downloadSustainabilityPdf = mandatoryPdfService.nachhaltigkeitsinformation;\n this.downloadEGPdf = mandatoryPdfService.elektronischerGeschaeftsverkehr;\n\n this.isVmContext = isVmContext(vmgs);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n this.trackVorgang();\n\n this.documentsText = `Versicherungsbedingungen${\n this.hasSepa ? ',' : ' und'\n } Informationen${\n this.hasSepa\n ? ' und das SEPA-Lastschriftmandat für wiederkehrende SEPA-Basislastschriften'\n : ''\n }`;\n\n if (this.isVmContext) {\n this._vmDataSubscription = this._vmService.getData().subscribe((data) => {\n this.documentsText = this.hasSepa\n ? `Versicherungsbedingungen, Informationen, Erstinformationen von ${\n data!.firstName\n } ${data!.lastName}\n und das SEPA-Lastschriftmandat für wiederkehrende SEPA-Basislastschriften`\n : `Versicherungsbedingungen und Informationen sowie Erstinformationen von ${\n data!.firstName\n } ${data!.lastName}`;\n this._cd.markForCheck();\n });\n }\n }\n\n public ngOnDestroy() {\n this._vmDataSubscription.unsubscribe();\n }\n\n public trackVorgang() {\n this._trackingService.prepareTrackingOrder(this._trackingMappingService.mapDataVorgang());\n }\n\n public get isCreditWorthy() {\n return this._crossFieldService.isCreditWorthy();\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { AbstractSummaryService } from '@web-app-kfz/hukde-tr-commons';\nimport { TariffInputForClaim, TariffMappingService } from '../service/tariff-mapping.service';\nimport { DataService } from '../service/data.service';\nimport { TariffDataService } from '../service/tariff-data.service';\nimport { DEFAULT_OFFER, LiabilityInsurance } from '../model/offer';\n\n@Injectable({ providedIn: 'root' })\nexport class SummaryService extends AbstractSummaryService {\n constructor(\n private _tariffMapping: TariffMappingService,\n private _tariffDataService: TariffDataService,\n private _dataService: DataService,\n injector: Injector,\n ) {\n super(injector);\n }\n\n protected _mapData(): TariffInputForClaim {\n return this._tariffMapping.mapDataForClaim();\n }\n\n protected _isJumpToOfferRequired(): boolean {\n const { offer } = this._dataService;\n\n return (\n offer.liability === LiabilityInsurance.WithProtection ||\n offer.cover !== undefined ||\n offer.foreignProtection ||\n offer.paymentInterval !== 1\n );\n }\n\n protected _handleCreditError(): void {\n this._tariffDataService.creditFailed = true;\n\n // reset offer\n this._dataService.offer = {\n ...this._dataService.offer,\n ...DEFAULT_OFFER,\n liability: LiabilityInsurance.NoProtection,\n };\n this._dataService.furtherDetails.payment.zahlArt = '0';\n }\n}\n","\n
\n
\n Vielen Dank, dass Sie sich für die HUK-COBURG entschieden haben!\n Vielen Dank für Ihren Antrag, {{ personalData.vnAnredeVoll }}\n {{ personalData.vnTitel01 ? ' ' + personalData.vnTitel02 + ' ' : ''\n }}{{ personalData.vnVorname }} {{ personalData.vnName }}!\n\n

\n Mehr als 12 Millionen Kunden haben sich bereits für die HUK-COBURG entschieden. Und das aus\n gutem Grund. Schön, dass auch Sie einem der größten Versicherer für Privathaushalte in\n Deutschland vertrauen. Herzlich willkommen.\n

\n\n Ihre Antragskopie\n\n

\n Für Ihre Unterlagen stellen wir Ihnen eine Antragskopie als PDF zur Verfügung, die Sie\n abspeichern oder ausdrucken können.\n

\n\n
\n\n Nächste Schritte\n
    \n
  • Sie erhalten nun eine Bestätigung per E-Mail.
  • \n
  • Unsere Mitarbeiter prüfen Ihre Angaben.
  • \n
  • \n Die Versicherungsunterlagen erhalten Sie dann in Kürze (abhängig vom gewünschten\n Vertragsbeginn) auf dem Postweg.\n
  • \n
  • \n Ihre Versicherungsunterlagen stellen wir Ihnen im Postfach unter \"Meine HUK\" zur\n Verfügung.\n
  • \n
  • \n Sie haben die Möglichkeit, eine Kopie Ihres Antrags in Ihrem persönlichen Servicebereich\n \"Meine HUK\" unter dem jeweiligen Vertrag im Archiv einzusehen.\n
  • \n \n
  • \n Wir übersenden Ihnen zeitnah nach Antragseingang eine E-Mail mit der\n Versicherungsbestätigung. An Wochenenden und Feiertagen frühestens am nächsten Werktag.\n
  • \n
  • \n Die Versicherungsbestätigung übermitteln wir elektronisch an die Zulassungsbehörde.\n
  • \n
    \n
\n \n \n \n
\n
\n\n","import { PriorInsuranceCompany } from '@web-app-kfz/hukde-tr-commons';\nimport { Component } from '@angular/core';\nimport {\n AbstractSummaryService,\n Customer,\n CustomerService,\n PersoenlicheDaten,\n} from '@web-lib-angular/hukde-tr';\nimport { DataService } from '../service/data.service';\nimport { CrossFieldService } from '../service/cross-field.service';\n\n@Component({\n templateUrl: 'receipt.component.html',\n})\nexport class ReceiptComponent {\n public customer: Customer | undefined;\n public unlocked: boolean;\n public personalData: PersoenlicheDaten;\n public alreadyInsured: boolean;\n public isCreditOk: boolean;\n public hasEbox: boolean;\n public preInsurance: PriorInsuranceCompany | undefined;\n\n constructor(\n private _summaryService: AbstractSummaryService<{}>,\n customerService: CustomerService,\n dataService: DataService,\n crossFieldService: CrossFieldService,\n ) {\n this.alreadyInsured = dataService.vehicle.alreadyInsured!;\n this.customer = customerService.customer;\n this.unlocked = customerService.isUnlocked;\n this.personalData = dataService.furtherDetails.personalData;\n this.isCreditOk = crossFieldService.isCreditWorthy();\n this.hasEbox = customerService.hasEbox;\n this.preInsurance = dataService.furtherDetails.priorInsuranceCompany;\n }\n\n public get showTransfer() {\n return this.alreadyInsured && this.preInsurance === PriorInsuranceCompany.Other;\n }\n\n public showOrderPdf() {\n this._summaryService.showOrderPdf();\n }\n}\n","import { Routes } from '@angular/router';\nimport { VehicleComponent } from './1-vehicle/vehicle.component';\nimport { DetailsComponent } from './2-details/details.component';\nimport { OfferComponent } from './3-offer/offer.component';\nimport { FurtherDetailsComponent } from './5-further-details/further-details.component';\nimport { SummaryComponent } from './6-summary/summary.component';\nimport {\n createDataStorageEnhancedRoutes,\n createReceiptRoute,\n createOfferRoute,\n Milestone,\n LOGIN_RESOLVE,\n} from '@web-lib-angular/hukde-tr';\nimport { ReceiptComponent } from './7-receipt/receipt.component';\n\nexport const ROUTES: Routes = createDataStorageEnhancedRoutes([\n { path: '', redirectTo: '/ihr-fahrzeug', pathMatch: 'full' },\n {\n path: 'ihr-fahrzeug',\n component: VehicleComponent,\n data: { title: 'Ihr Fahrzeug', milestone: Milestone.AngebotStart },\n },\n {\n path: 'ihre-angaben',\n component: DetailsComponent,\n data: { insuranceHolder: true, title: 'Ihre Angaben' },\n },\n createOfferRoute(OfferComponent),\n {\n path: 'ihre-weiteren-angaben',\n component: FurtherDetailsComponent,\n resolve: LOGIN_RESOLVE,\n data: {\n title: 'Ihre weiteren Angaben',\n milestone: Milestone.AntragStart,\n isPersonalData: true,\n },\n },\n {\n path: 'das-kleingedruckte',\n component: SummaryComponent,\n data: { title: 'Das Kleingedruckte' },\n },\n createReceiptRoute(ReceiptComponent),\n]);\n","import { registerLocaleData } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport localeDe from '@angular/common/locales/de';\nimport { LOCALE_ID, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { PreloadAllModules, RouterModule } from '@angular/router';\nimport {\n CommonsKfzModule,\n PROVIDE_PRIOR_INSURANCE_HUKDE_OPTIONS_SERVICE,\n} from '@web-app-kfz/hukde-tr-commons';\nimport {\n AbstractDataService,\n AbstractSummaryService,\n CommonsModule,\n MainComponent,\n} from '@web-lib-angular/hukde-tr';\n\nimport { environment } from '../environments/environment';\nimport { VehicleGeniusSearchComponent } from './1-vehicle/vehicle-genius-search.component';\nimport { VehicleComponent } from './1-vehicle/vehicle.component';\nimport { DetailsComponent } from './2-details/details.component';\nimport { MinAgeComponent } from './2-details/min-age.component';\nimport { SfSelectionComponent } from './2-details/sf-selection.component';\nimport { YoungestDriverComponent } from './2-details/youngest-driver.component';\nimport { OfferDetailsComponent } from './3-offer/offer-details.component';\nimport { OfferComponent } from './3-offer/offer.component';\nimport { FurtherDetailsComponent } from './5-further-details/further-details.component';\nimport { SummaryComponent } from './6-summary/summary.component';\nimport { SummaryService } from './6-summary/summary.service';\nimport { ReceiptComponent } from './7-receipt/receipt.component';\nimport { YoungestDriverValidationDirective } from './directives/youngestDriverValidation.directive';\nimport { ROUTES } from './routes';\nimport { DataService } from './service/data.service';\nimport { FurtherDetailsNextButtonComponent } from './5-further-details/further-details-next-button.component';\n\nregisterLocaleData(localeDe);\n\nconst COMPONENTS = [\n VehicleComponent,\n DetailsComponent,\n OfferComponent,\n FurtherDetailsComponent,\n SummaryComponent,\n SfSelectionComponent,\n YoungestDriverComponent,\n MinAgeComponent,\n VehicleGeniusSearchComponent,\n OfferDetailsComponent,\n ReceiptComponent,\n FurtherDetailsNextButtonComponent,\n];\n\nconst DIRECTIVES = [YoungestDriverValidationDirective];\n\n@NgModule({\n declarations: [...COMPONENTS, ...DIRECTIVES],\n imports: [\n BrowserAnimationsModule,\n BrowserModule,\n CommonsModule.forRoot(environment),\n CommonsKfzModule.forRoot(),\n FormsModule,\n HttpClientModule,\n RouterModule.forRoot(ROUTES, {\n preloadingStrategy: PreloadAllModules,\n onSameUrlNavigation: 'reload',\n }),\n ],\n providers: [\n ...PROVIDE_PRIOR_INSURANCE_HUKDE_OPTIONS_SERVICE,\n {\n provide: AbstractDataService,\n useExisting: DataService,\n },\n {\n provide: AbstractSummaryService,\n useClass: SummaryService,\n },\n {\n provide: LOCALE_ID,\n useValue: 'de-DE',\n },\n ],\n entryComponents: [],\n bootstrap: [MainComponent],\n})\nexport class AppModule {}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app.module';\n\nif (process.env.NODE_ENV === 'production') {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"],"sourceRoot":"webpack:///"}