{"version":3,"file":"main.1b8cb71832913aca.js","mappings":"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AAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC4gL,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACp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AAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,SACV,OAAU,UAEd,YAA2BznR,IAEvB,OAAOA,GAAK30I,QAAQ,oBADL4nB,IAAMw0Y,GAAWx0Y,KAAMA,IAI1C,SACI7sB,YAAYsha,GAAWC,IACnBlha,KAAKiha,UAAYA,GACjBjha,KAAKkha,gBAAkBA,GACvBlha,KAAK04O,OAAS,GACd14O,KAAKmha,eAAiB,GACtBnha,KAAKoha,cAAe,EAEpB/wY,YACA,OAAOrwB,KAAK04O,OAEZ3pB,oBACA,OAAO/uN,KAAKmha,eAEZE,kBACA,OAAOrha,KAAKoha,aAEZt0M,oBACA,OAAO9sN,KAAKkha,gBAAgB3/Z,MAE5B+/Z,iBACA,OAAOtha,KAAKmha,eAAenha,KAAKoha,cAEhCG,sBACA,OAAOvha,KAAKiha,UAAUO,cAAgBxha,KAAK04O,OAAOj4O,SAAWT,KAAK8sN,cAAcrsN,OAEhFgha,uBACA,OAAOzha,KAAKiha,UAAUtN,UAAY3zZ,KAAKiha,UAAUS,kBAAoB1ha,KAAK8sN,cAAcrsN,OAExFkha,uBACA,IAAIr0Z,GAAItN,KAAK8sN,cAAcrsN,OAAS,EACpC,KAAO6M,IAAK,EAAGA,KAAK,CAChB,MAAMyM,GAAO/Z,KAAK8sN,cAAcx/M,IAChC,IAAKyM,GAAKwyC,SACN,OAAOxyC,GAGf,OAAO,KAEX6nZ,SAASvxY,IACLrwB,KAAK04O,OAASroN,GAAM5qB,IAAI,CAACsU,GAAMmT,KAAUltB,KAAK6ha,QAAQ9nZ,GAAMmT,KAC5DltB,KAASiha,UAAUxuR,SACfzyI,KAAK8ha,QAAU9ha,KAAK+ha,SAAS/ha,KAAK04O,OAAQ14O,KAAKiha,UAAUxuR,SACzDzyI,KAAK04O,OAAS14O,KAAKgia,SAAShia,KAAK8ha,WAGjC9ha,KAAK8ha,QAAU,IAAIx0Y,IACnBttB,KAAK8ha,QAAQxga,SAAI2B,EAAWjD,KAAK04O,SAErC14O,KAAKmha,eAAiB,IAAInha,KAAK04O,QAEnCn9M,OAAOxhB,IACH,GAAIA,GAAK4iJ,UAAY38J,KAAKyha,iBACtB,OAEJ,MAAM9N,GAAW3zZ,KAAKiha,UAAUtN,SAC3BA,IACD3zZ,KAAKiia,gBAETjia,KAAKkha,gBAAgB3lY,OAAOxhB,GAAM45Y,GAAU3zZ,KAAKiha,UAAUiB,wBACvDlia,KAAKiha,UAAUO,cACfxha,KAAKmia,cAAcpoZ,IAG3BwlZ,SAASxlZ,KACAA,GAAK4iJ,WAGV38J,KAAKkha,gBAAgB3B,SAASxlZ,GAAM/Z,KAAKiha,UAAUtN,UAC/C3zZ,KAAKiha,UAAUO,cAAgBvB,GAAUlmZ,GAAKmT,QAAUltB,KAAKiha,UAAUtN,UACvE3zZ,KAAKoia,cAAcroZ,KAG3BsoZ,SAAS9ga,IACL,IAAI+ga,GACJ,OACIA,GADAtia,KAAKiha,UAAUh5E,YACNluU,IAAQ/Z,KAAKiha,UAAUh5E,YAAYluU,GAAKxY,MAAOA,IAEvDvB,KAASiha,UAAUsB,UACXxoZ,KAASA,GAAK6kE,UAAY5+E,KAAKwia,cAAczoZ,GAAKxY,MAAOvB,KAAKiha,UAAUsB,aAAehha,GAGvFwY,IAAQA,GAAKxY,QAAUA,KAC3BwY,GAAK6kE,UAAY7kE,GAAKjX,OAASiX,GAAKjX,QAAU9C,KAAKwia,cAAcjha,GAAOvB,KAAKiha,UAAUwB,WAEzFzia,KAAK04O,OAAO7/N,KAAKkB,IAAQuoZ,GAAOvoZ,KAE3C2oZ,QAAQ3oZ,IACJ,MAAM0/Y,GAASz5Z,KAAK6ha,QAAQ9nZ,GAAM/Z,KAAK04O,OAAOj4O,QAC9C,YAAKi4O,OAAO9nO,KAAK6oZ,IACjBz5Z,KAAKmha,eAAevwZ,KAAK6oZ,IAClBA,GAEXwI,cAAcU,IAAe,GACzB3ia,KAAKkha,gBAAgB/8Z,MAAMw+Z,IAC3B3ia,KAAK04O,OAAO12N,QAAQjI,KAChBA,GAAK4iJ,SAAWgmQ,IAAgB5oZ,GAAK4iJ,UAAY5iJ,GAAKwyC,SACtDxyC,GAAK6oZ,QAAS,IAEd5ia,KAAKiha,UAAUO,cACfxha,KAAK6ia,qBAGbC,YAAY7D,IACRA,UAAO8D,GAAkB9D,IAAM+D,oBACxBhja,KAAK+uN,cAAcl2M,KAAKkB,IAEpBjX,GADyBiX,GAAKjX,OAAOkga,oBAC/BhqZ,OAAO,EAAGimZ,GAAKx+Z,UAAYw+Z,IAGhD7qZ,OAAO6qZ,IACH,IAAKA,GAED,YADAj/Z,KAAK6ia,qBAGT7ia,KAAKmha,eAAiB,GACtBlC,GAAOj/Z,KAAKiha,UAAUgC,SAAWhE,GAAO8D,GAAkB9D,IAAM+D,oBAChE,MAAMnhX,GAAQ7hD,KAAKiha,UAAUgC,UAAYjja,KAAKkja,iBACxC1B,GAAexha,KAAKiha,UAAUO,aACpC,UAAW3+Z,MAAO2C,MAAMotH,KAAK5yH,KAAK8ha,QAAQl2X,QAAS,CAC/C,MAAMu3X,GAAe,GACrB,UAAWppZ,MAAQ/Z,KAAK8ha,QAAQ1ga,IAAIyB,IAC5B2+Z,KAAiBznZ,GAAKgzE,QAAUhzE,GAAKgzE,OAAO4vE,UAAY5iJ,GAAK4iJ,WAI7D96G,GAAMo9W,GADSj/Z,KAAKiha,UAAUgC,SAAWlpZ,GAAKxY,MAAQwY,KAEtDopZ,GAAavyZ,KAAKmJ,IAG1B,GAAIopZ,GAAa1ia,OAAS,EAAG,CACzB,MAAO28C,IAAQ+lX,GAAav9Z,OAAM,GAClC,GAAIw3C,GAAK2vC,OAAQ,CACb,MAAMgJ,GAAO/1F,KAAK04O,OAAO7/N,KAAKjR,IAAKA,KAAMw1C,GAAK2vC,QAC9C/sF,KAAKmha,eAAevwZ,KAAKmlF,IAE7B/1F,KAAKmha,eAAevwZ,QAAQuyZ,MAIxCN,qBACQ7ia,KAAKmha,eAAe1ga,SAAWT,KAAK04O,OAAOj4O,SAI3CT,KAAKmha,eADLnha,KAAKiha,UAAUO,cAAgBxha,KAAK8sN,cAAcrsN,OAAS,EACrCT,KAAK04O,OAAOtkO,OAAOxM,KAAMA,GAAE+0J,UAG3B38J,KAAK04O,QAGnC0qL,aACIpja,KAAKoha,cAAe,EAExBiC,eACIrja,KAAKsja,YAAY,GAErBC,mBACIvja,KAAKsja,aAAY,GAErBE,SAASzpZ,IACL/Z,KAAKoha,aAAepha,KAAKmha,eAAe77Z,QAAQyU,IAEpD0pZ,sBAAsBC,IAClB,GAAmC,IAA/B1ja,KAAKmha,eAAe1ga,OACpB,OAEJ,MAAMkja,GAAkB3ja,KAAK4ja,sBAEzB5ja,KAAKoha,aADLuC,IAAkB,EACEA,GAGAD,GAAc1ja,KAAK+uN,cAAcz/K,UAAU1nC,KAAMA,GAAE2kD,WAAY,EAG3Fi2W,cAAc/I,GAAQ52Z,IAClB,IAAKy7L,GAASm7N,IACV,OAAOA,GAEX,IAAyB,IAArB52Z,GAAIyC,QAAQ,KACZ,OAAOm0Z,GAAO52Z,IAEb,CACD,MAAM+oC,GAAO/oC,GAAIoD,MAAM,KACvB,IAAI1E,GAAQk4Z,GACZ,QAASnsZ,GAAI,EAAG6nJ,GAAMvpH,GAAKnrC,OAAQ6M,GAAI6nJ,KAAO7nJ,GAAG,CAC7C,GAAa,MAAT/L,GACA,OAAO,KAEXA,GAAQA,GAAMqqC,GAAKt+B,KAEvB,OAAO/L,IAGfsga,QAAQ9nZ,GAAMmT,IACV,MAAMpqB,GAAQm9Z,GAAUlmZ,GAAK8pZ,gBAAkB9pZ,GAAK8pZ,eAAiB7ja,KAAKwia,cAAczoZ,GAAM/Z,KAAKiha,UAAUwB,WACvGlha,GAAQ0+Z,GAAUlmZ,GAAK+pZ,gBAAkB/pZ,GAAK+pZ,eAAiB/pZ,GACrE,MAAO,CACHmT,SACApqB,MAAOm9Z,GAAUn9Z,IAASA,GAAM7B,WAAa,GAC7CM,SACAgrD,SAAUxyC,GAAKwyC,SACfw3W,OAAS,GAAE/ja,KAAKiha,UAAU+C,cAAc92Y,MAGhD+2Y,mBACI,MAAMtQ,GAAW3zZ,KAAKiha,UAAUtN,SAChC,UAAWh3P,MAAY38J,KAAK8sN,cAAe,CACvC,MAAMvrN,GAAQvB,KAAKiha,UAAUsB,UAAYvia,KAAKwia,cAAc7lQ,GAASp7J,MAAOvB,KAAKiha,UAAUsB,WAAa5lQ,GAASp7J,MAC3GwY,GAAOkmZ,GAAU1+Z,IAASvB,KAAKqia,SAAS9ga,IAAS,KACvDvB,KAAKkha,gBAAgB3B,SAAS5iQ,GAAUg3P,IACxC3zZ,KAAKkha,gBAAgB3lY,OAAOxhB,IAAQ4iJ,GAAUg3P,GAAU3zZ,KAAKiha,UAAUiB,wBAEvElia,KAAKiha,UAAUO,eACfxha,KAAKmha,eAAiBnha,KAAK+uN,cAAc36M,OAAOxM,KAAuC,IAAlC5H,KAAK8sN,cAAcxnN,QAAQsC,MAGxFw6Z,cAAcroZ,IAEV,GADA/Z,KAAKmha,eAAevwZ,KAAKmJ,IACrBA,GAAKgzE,OAAQ,CACb,MAAMA,GAAShzE,GAAKgzE,OAEfm3U,KADqB/C,eAAetoZ,KAAKjR,IAAKA,KAAMmlF,KAErD/sF,KAAKmha,eAAevwZ,KAAKm8E,YAGxBhzE,GAAK6kE,SACV,UAAWs1C,MAASn6G,GAAK6kE,SACrBs1C,GAAMyoC,UAAW,EACjB38J,KAAKmha,eAAevwZ,KAAKsjH,IAGjCl0H,KAAKmha,eAAiB,IAAInha,KAAKmha,eAAe50Y,KAAK,CAACC,GAAGnD,KAAOmD,GAAEU,MAAQ7D,GAAE6D,QAE9Ei1Y,cAAcpoZ,IACV/Z,KAAKmha,eAAiBnha,KAAKmha,eAAe/sZ,OAAOxM,IAAKA,KAAMmS,IAC5D+oV,GAAS/1Q,OAEDnO,GADkBmO,OAAOnO,SAChB2jD,MAAM36H,IAAKA,GAAE+0J,YACtB38J,KAAKmha,eAAiBnha,KAAKmha,eAAe/sZ,OAAOxM,IAAKA,KAAMmS,GAAKgzE,SAGhEhzE,GAAK6kE,WACV5+E,KAAKmha,eAAiBnha,KAAK+uN,cAAc36M,OAAOxM,IAAKA,GAAEmlF,SAAWhzE,KAG1EmpZ,iBAAiBh6M,GAAQ6/H,IAErB,OAAOjmV,GADyBimV,GAAIjmV,OAAOkga,oBAC9B19Z,QAAQ4jN,KAAU,EAEnCi7M,kBAAkB9tL,IACd,OAAIA,GAAQ,EACAr2O,KAAKoha,cAAgBpha,KAAKmha,eAAe1ga,OAAS,EAAK,EAAKT,KAAKoha,aAAe,EAEpFpha,KAAKoha,cAAgB,EAAMpha,KAAKmha,eAAe1ga,OAAS,EAAMT,KAAKoha,aAAe,EAE9FkC,YAAYjtL,IAC2B,IAA/Br2O,KAAKmha,eAAe1ga,QAAgBT,KAAKmha,eAAe5+R,MAAM36H,IAAKA,GAAE2kD,YAGzEvsD,KAAKoha,aAAepha,KAAKmka,kBAAkB9tL,IACvCr2O,KAAKsha,WAAW/0W,UAChBvsD,KAAKsja,YAAYjtL,KAGzButL,sBAII,GAHI5ja,KAAKiha,UAAUO,cAGfxha,KAAKoha,cAAe,QAA0Bn+Z,IAApBjD,KAAKsha,WAC/B,OAAO,EAEX,MAAMplI,GAAgBl8R,KAAKmha,eAAe77Z,QAAQtF,KAAK2ha,kBACvD,OAAI3ha,KAAK2ha,kBAAoBzlI,GAAgB,GAClC,EAEJhkR,KAAKskC,IAAIx8C,KAAKqha,YAAanlI,IAEtC6lI,SAAS1xY,GAAOjW,IACZ,MAAMod,GAAS,IAAIlK,IACnB,GAAqB,IAAjB+C,GAAM5vB,OACN,OAAO+2B,GAGX,GAAIhyB,MAAM0L,QAAQmf,GAAM,GAAG9uB,MAAM6Y,KAAQ,CACrC,UAAWL,MAAQsW,GAAO,CACtB,MAAMuuD,IAAY7kE,GAAKxY,MAAM6Y,KAAS,IAAI3U,IAAI,CAACmC,GAAGslB,KAAUltB,KAAK6ha,QAAQj6Z,GAAGslB,KAC5EsK,GAAOl2B,IAAIyY,GAAM6kE,IAErB,OAAOpnD,GAEX,MAAM4sY,GAAU52R,GAAWxtI,KAAKiha,UAAUxuR,SACpCjV,GAASzjH,KACX,MAAMlX,GAAMuha,GAAUhqZ,GAAKL,GAAKxY,OAASwY,GAAKxY,MAAM6Y,IACpD,OAAO6lZ,GAAUp9Z,IAAOA,QAAMI,GAGlC,UAAW8W,MAAQsW,GAAO,CACtB,MAAMxtB,GAAM26H,GAAMzjH,IACZgV,GAAQyI,GAAOp2B,IAAIyB,IACrBksB,GACAA,GAAMne,KAAKmJ,IAGXyd,GAAOl2B,IAAIuB,GAAK,CAACkX,KAGzB,OAAOyd,GAEXwqY,SAASxqY,IACL,MAAM6sY,GAAc72R,GAAWxtI,KAAKiha,UAAUxuR,SACxCpiH,GAAQ,GACd,UAAWxtB,MAAO2C,MAAMotH,KAAKp7F,GAAOoU,QAAS,CACzC,IAAIt+B,GAAI+iB,GAAM5vB,OACd,QAAYwC,IAARJ,GAAmB,CACnB,MAAMyha,GAAe9sY,GAAOp2B,SAAI6B,IAAc,GAC9CotB,GAAMzf,QAAQ0zZ,GAAa7+Z,IAAImC,KAC3BA,GAAEslB,MAAQ5f,KACH1F,MAEX,SAEJ,MAAM28Z,GAAcjmO,GAASz7L,IACvBkqF,GAAS,CACXjqF,MAAOyha,GAAc,GAAKria,OAAOW,IACjC+7E,cAAU37E,EACV8pF,OAAQ,KACR7/D,MAAO5f,KACPi/C,UAAWvsD,KAAKiha,UAAUuD,gBAC1BT,OAAQU,MAENC,GAAWL,GAAcrka,KAAKiha,UAAUwB,UAAYzia,KAAKiha,UAAUxuR,QACnEkyR,GAAa3ka,KAAKiha,UAAU0D,YAAe,KACzCJ,GACO1ha,GAAItB,MAER,EAAGmja,IAAW7ha,KAEnB+7E,GAAWpnD,GAAOp2B,IAAIyB,IAAK4C,IAAImC,KACjCA,GAAEmlF,OAASA,GACXnlF,GAAEg3E,cAAW37E,EACb2E,GAAEslB,MAAQ5f,KACH1F,KAEXmlF,GAAOnO,SAAWA,GAClBmO,GAAOxrF,MAAQoja,GAAW9ha,GAAK+7E,GAASn5E,IAAImC,IAAKA,GAAErG,QACnD8uB,GAAMzf,KAAKm8E,IACX18D,GAAMzf,QAAQguE,IAElB,OAAOvuD,IAIf,IAAIu0Y,GAAO,MACV,OAAUA,GAQRA,KAAYA,GAAU,KAPbA,GAAQC,IAAS,GAAK,MAC9BD,GAAQA,GAAQE,MAAW,IAAM,QACjCF,GAAQA,GAAQ9oC,IAAS,IAAM,MAC/B8oC,GAAQA,GAAQG,MAAW,IAAM,QACjCH,GAAQA,GAAQI,QAAa,IAAM,UACnCJ,GAAQA,GAAQK,UAAe,IAAM,YACrCL,GAAQA,GAAQM,UAAe,GAAK,YARpCN,GACH,IAAUA,IADA,OAWLO,SAAN,SACIxla,cACIK,KAAKola,YAAc,CACfC,WAAY,EACZlwE,YAAa,EACbmwE,iBAAkB,GAGtBC,iBACA,OAAOvla,KAAKola,YAEhBI,eAAeC,GAAWC,GAAazga,IACnC,MAAMsvH,GAAIv0H,KAAKola,YACT31K,GAAel7H,GAAE8wS,WAAaK,GAE9BC,GAAmBzpU,KADF1/C,IAAI,EAAGipX,IACOh2K,GAAei2K,GACpD,IAAIttW,GAAMlgD,KAAKqkC,IAAImpX,GAAaxtZ,KAAKqyC,KAAKo7W,KAAqBpxS,GAAE+wS,iBAAmB,IAEpF,MAAMM,GAAW1tZ,KAAKskC,IAAI,EAAGqpX,GAActxS,GAAE+wS,kBAC7C,IAAI3xW,GAAQz7C,KAAKqkC,IAAIqpX,GAAU1tZ,KAAKC,MAAMwtZ,KACtCG,GAAavxS,GAAE8wS,WAAantZ,KAAKqyC,KAAKoJ,IAAU4gE,GAAE8wS,WAAantZ,KAAKqkC,IAAIoX,GAAO1uD,IACnF6ga,UAAapxX,MAAOoxX,IAA2B,EAAbA,GAClCnyW,GAAQjf,MAAOif,KAAiB,EAARA,GACxByE,GAAM1jB,MAAO0jB,KAAa,EAANA,GACpBzE,IAAS1uD,GACT0uD,GAAQz7C,KAAKskC,IAAI,EAAGmX,IACpByE,IAAOnzD,GACPmzD,GAAMlgD,KAAKqkC,IAAImpX,GAAattW,IACrB,CACH0tW,cACAr2K,gBACA97L,SACAyE,QAGR2tW,cAAcV,GAAYlwE,IACtB,MAAMmwE,GAAmBptZ,KAAKskC,IAAI,EAAGtkC,KAAKC,MAAMg9U,GAAckwE,KAC9Drla,KAAKola,YAAc,CACfC,cACAlwE,eACAmwE,qBAGRU,YAAYC,GAASZ,GAAYa,IAC7B,MAAQ/wE,gBAAgBn1V,KAAKula,WACvBY,GAAaF,GAAUZ,GAEvB56U,GADMy7U,GACS/wE,GACrB,OAAIA,IAAegxE,IAAcD,KAAeD,GACrC,KAEPE,GAAa17U,GALLy7U,GAMKC,GAAa17U,GAErBw7U,IARGC,GASDD,GAEJ,MAGfd,UAAuBn+Z,UAAvB,4BAAmHm+Z,KACnHA,GAAuBh+Z,WA/4CgFzG,MA+4CvG,OAAuHyka,GAAvHxka,QAAuHwka,GAAvH,YA7DMA,OAkEN,MAAMiB,GAAgB,CAAC,MAAO,QAAS,SAAU,QAC3CC,GAAoD,oBAA1BxqU,sBAAwCqoI,IAA0BW,QAC5FyhM,SAAN,SACI3ma,YAAYqhR,GAAWx1B,GAAO+6K,GAAe7hV,GAAaG,IACtD7kF,KAAKghR,UAAYA,GACjBhhR,KAAKwrP,MAAQA,GACbxrP,KAAKuma,cAAgBA,GACrBvma,KAAK6kF,UAAYA,GACjB7kF,KAAKqwB,MAAQ,GACbrwB,KAAKoxD,SAAW,OAChBpxD,KAAKwma,eAAgB,EACrBxma,KAAKyma,YAAc,KACnBzma,KAAK0qB,OAAS,IAAIy6D,MAClBnlF,KAAKsvP,OAAS,IAAInqK,MAClBnlF,KAAK6/Z,YAAc,IAAI16U,MACvBnlF,KAAK0ma,aAAe,IAAIvhV,MACxBnlF,KAAK2ma,UAAY,IAAIjja,IACrB1D,KAAK4ma,mBAAoB,EACzB5ma,KAAK6ma,qBAAsB,EAC3B7ma,KAAK8ma,oBAAsB,EAC3B9ma,KAAK+ma,UAAYriV,GAAYkB,cAE7Bq8K,sBACA,OAAOjiQ,KAAKgna,iBAEZtB,kBACA,OAAO1la,KAAKina,aAEZvB,gBAAYnka,IACRA,KAAUvB,KAAKina,eACfjna,KAAKina,aAAe1la,GACpBvB,KAAKkna,yBAGTC,mBACA,GAAInna,KAAKsha,WAAY,CACjB,MAAQ+D,cAAYlwE,gBAAgBn1V,KAAKuma,cAAchB,WACjD9yP,GAASzyK,KAAKsha,WAAWp0Y,MAAQm4Y,GACvC,OAAOlwE,GAAc1iL,GAAS,EAAIA,GAEtC,OAAO,EAEX51H,WACI78C,KAAKyoV,QAAUzoV,KAAK+ma,UAAUj3U,cAC9B9vF,KAAKona,gBAAkBpna,KAAKqna,kBAAkBzhV,cAC9C5lF,KAAKsna,iBAAmBtna,KAAKuna,iBAAiB3hV,cAC9C5lF,KAAKwna,cAAgBxna,KAAKyna,kBAAkB7hV,cAC5C5lF,KAAK0na,gBACL1na,KAAK2na,sBACL3na,KAAK4na,kBACL5na,KAAK6na,0BAETxtU,YAAYp9E,IACR,GAAIA,GAAQoT,MAAO,CACf,MAAMo/D,GAASxyE,GAAQoT,MACvBrwB,KAAK8na,eAAer4U,GAAOm7E,aAAcn7E,GAAOqpM,cAGxD5sR,cACIlM,KAAK2ma,UAAUzia,OACflE,KAAK2ma,UAAU1mV,WACfjgF,KAAK2ma,UAAUv6Z,cACXpM,KAAK+na,UACL/na,KAAKghR,UAAUsO,YAAYtvR,KAAK+ma,UAAUpoL,WAAY3+O,KAAK+ma,WAGnEhrU,SAAS09T,GAAQuO,IAAkB,GAC/B,IAAKvO,GACD,OAEJ,MAAMvsY,GAAQltB,KAAKqwB,MAAM/qB,QAAQm0Z,IACjC,GAAIvsY,GAAQ,GAAKA,IAASltB,KAAK0la,YAC3B,OAEJ,IAAI3pU,GACJ,GAAI/7F,KAAKwma,cAAe,CACpB,MAAMnB,GAAarla,KAAKuma,cAAchB,WAAWF,WACjDtpU,GAAW/7F,KAAKuma,cAAcP,YAAY94Y,GAAQm4Y,GAAYA,GAAYrla,KAAK8ma,yBAE9E,CACD,MAAM/sZ,GAAO/Z,KAAK+ma,UAAU1lV,cAAe,IAAGo4U,GAAOsK,UAErDhoU,GAAW/7F,KAAKuma,cAAcP,YAAYjsZ,GAAKkuZ,UAAWluZ,GAAKqiP,aAD5C4rK,GAAkBjuZ,GAAKkuZ,UAAYjoa,KAAK8ma,qBAG3D7G,GAAUlkU,MACV/7F,KAAKsna,iBAAiBprU,UAAYH,IAG1CmsU,cACI,MAAMC,GAAQnoa,KAAKsna,iBACnBa,GAAMjsU,UAAYisU,GAAM14K,aAAe04K,GAAM/rK,aAEjDgsK,iBACIpoa,KAAKqoa,mBAETC,0BACItoa,KAAKgna,iBAAmBhna,KAAKuoa,0BAA0Bvoa,KAAK+ma,WAC5DpoU,GAAkBl2F,SAASzI,KAAKgna,kBAC5Bhna,KAAKwoa,qBAAqBxoa,KAAKgna,kBAG/Bhna,KAAKwoa,qBAAqB,UAE1Bxoa,KAAK+na,UACL/na,KAAKqoa,mBAETroa,KAAK+ma,UAAU9iV,MAAMC,QAAU,IAEnCskV,qBAAqBvmK,IACjBmkK,GAAcpkZ,QAASovC,KACnB,MAAMq3W,GAAoB,aAAYr3W,KACtCpxD,KAAKghR,UAAUqB,YAAYriR,KAAK+ma,UAAW0B,IAC3Czoa,KAAKghR,UAAUqB,YAAYriR,KAAKyoV,QAASggF,MAE7C,MAAMC,GAAiB,aAAYzmK,KACnCjiQ,KAAKghR,UAAU7/L,SAASnhF,KAAK+ma,UAAW2B,IACxC1oa,KAAKghR,UAAU7/L,SAASnhF,KAAKyoV,QAASigF,IAE1ChB,gBACI1na,KAAKwrP,MAAMjlK,kBAAkB,MACzBs1D,OAAU77I,KAAKuna,iBAAiB3hV,cAAe,UAC1C96E,MAAK46O,OAAU1lP,KAAK2ma,YAAYngK,OAAU,EAAG6/J,KAC7C1+Z,UAAW8nC,KACZ,MAAM3xB,GAAO2xB,GAAE3xB,MAAS2xB,GAAEk0N,cAAgBl0N,GAAEk0N,eAE5C3jQ,KAAK2oa,mBADc7qZ,IAAwB,IAAhBA,GAAKrd,OAAoCqd,GAAK,GAAGo+E,UAA7BzsD,GAAEr+B,OAAO8qF,eAKpEyrU,uBACS3na,KAAK6kF,WAGV7kF,KAAKwrP,MAAMjlK,kBAAkB,MACzBlzC,QAAMwoG,OAAU77I,KAAK6kF,UAAW,aAAc,CAAE09E,SAAS,KAAS1mB,OAAU77I,KAAK6kF,UAAW,YAAa,CAAE09E,SAAS,KAASz3J,MAAK46O,OAAU1lP,KAAK2ma,YAC5Ih/Z,UAAU47C,IAAUvjD,KAAK4oa,cAAcrlX,OAGpDqlX,cAAcrlX,IACV,GAAIvjD,KAAKyoV,QAAQrhQ,SAAS7jC,GAAOnyC,SAAWpR,KAAK+ma,UAAU3/U,SAAS7jC,GAAOnyC,QACvE,OAEJ,MAAM0M,GAAOylC,GAAOzlC,MAASylC,GAAOogN,cAAgBpgN,GAAOogN,eACvDpgN,GAAOnyC,QAAUmyC,GAAOnyC,OAAOqyP,YAAc3lP,IAAQA,GAAK,IAAM9d,KAAKyoV,QAAQrhQ,SAAStpE,GAAK,KAG/F9d,KAAKwrP,MAAMn1J,IAAI,IAAMr2F,KAAK0ma,aAAa/4P,QAE3Cm6P,eAAez3Y,GAAOyoQ,IAClB94R,KAAKqwB,MAAQA,IAAS,GACtBrwB,KAAK4ma,mBAAoB,EACzB5ma,KAAK0la,YAAcr1Y,GAAM5vB,OACzBT,KAASwma,cACLxma,KAAK6oa,kBAAkB/vI,KAGvB94R,KAAK8oa,oBACL9oa,KAAK+oa,aAAajwI,KAG1BiwI,aAAajwI,IACT94R,KAAK0qB,OAAOijJ,KAAK3tK,KAAKqwB,QACF,IAAhByoQ,IAGJ94R,KAAKwrP,MAAMjlK,kBAAkB,KACzB3vD,QAAQC,UAAUT,KAAK,KAEnBp2B,KAAKuma,cAAcR,cAAc,EADb/la,KAAKsna,iBAAiBlrK,cAE1Cp8P,KAAKsoa,0BACLtoa,KAAK+7F,SAAS/7F,KAAKsha,WAAYxoI,QAI3C+vI,kBAAkB/vI,IACd94R,KAAKwrP,MAAMjlK,kBAAkB,KACzBvmF,KAAKgpa,qBAAqB5yY,KAAK,KACvB0iQ,IACA94R,KAAKipa,kBAAkBjpa,KAAKmna,cAC5Bnna,KAAKsoa,2BAGLtoa,KAAKipa,wBAKrBN,mBAAmBzsU,IACXl8F,KAAKwma,eACLxma,KAAKipa,kBAAkB/sU,IAE3Bl8F,KAAK8ma,oBAAsB5qU,GAC3Bl8F,KAAKkpa,iBAAiBhtU,IAE1BitU,qBAAqB9lV,IACbrjF,KAAK6ma,sBACL7ma,KAAKona,gBAAgBnjV,MAAMZ,OAAU,GAAEA,OACvCrjF,KAAK6ma,qBAAsB,GAGnCiC,qBACS9oa,KAAKona,kBAGVpna,KAAKona,gBAAgBnjV,MAAMZ,OAAU,OAEzC6jV,wBACIlna,KAAK6ma,qBAAsB,EAE/BoC,kBAAkB/sU,GAAY,MAC1B,GAAIA,IAAal8F,KAAK8ma,sBAAwB5qU,GAC1C,OAGJ,MAAMilE,GAAQnhK,KAAKuma,cAAcf,eADjCtpU,GAAYA,IAAal8F,KAAKsna,iBAAiBprU,UACYl8F,KAAK0la,YAAa1la,KAAKopa,cAClFppa,KAAKmpa,qBAAqBhoQ,GAAMsuF,cAChCzvP,KAAKwna,cAAcvjV,MAAME,UAAa,cAAag9E,GAAM2kQ,gBACzD9la,KAAKwrP,MAAMn1J,IAAI,KACXr2F,KAAK0qB,OAAOijJ,KAAK3tK,KAAKqwB,MAAMzqB,MAAMu7J,GAAMxtG,MAAOwtG,GAAM/oG,MACrDp4D,KAAKsvP,OAAO3hF,KAAK,CAAEh6G,MAAOwtG,GAAMxtG,MAAOyE,IAAK+oG,GAAM/oG,QAElD6nW,GAAU/jU,KAA2C,IAA7Bl8F,KAAK8ma,sBAC7B9ma,KAAKsna,iBAAiBprU,UAAYA,GAClCl8F,KAAK8ma,oBAAsB5qU,IAGnC8sU,qBACI,GAAIhpa,KAAKuma,cAAchB,WAAWF,WAAa,GAA0B,IAArBrla,KAAK0la,YACrD,OAAO9uY,QAAQC,QAAQ72B,KAAKuma,cAAchB,YAE9C,MAAOpoX,IAASn9C,KAAKqwB,MACrB,YAAK3F,OAAOijJ,KAAK,CAACxwH,KACXvmB,QAAQC,UAAUT,KAAK,KAE1B,MAAM6+T,GAAewkE,KADDsN,UAAU1lV,cAAe,IAAGlkC,GAAM4mX,UAC1B3nK,aAG5B,OAFAp8P,KAAKona,gBAAgBnjV,MAAMZ,OAAY4xQ,GAAej1V,KAAK0la,YAAtB,KAErC1la,KAAKuma,cAAcR,cAAc9wE,GADbj1V,KAAKsna,iBAAiBlrK,cAEnCp8P,KAAKuma,cAAchB,aAGlC2D,iBAAiBhtU,IACTl8F,KAAK4ma,mBAAmC,IAAd1qU,IAM1BA,GAAYl8F,KAAK+ma,UAAU3qK,eAHfp8P,KAAKwma,cACjBxma,KAAKona,gBACLpna,KAAKwna,eAC8CprK,aAAe,IAClEp8P,KAAKwrP,MAAMn1J,IAAI,IAAMr2F,KAAK6/Z,YAAYlyP,QACtC3tK,KAAK4ma,mBAAoB,GAGjC2B,0BAA0Bc,IACtB,GAAsB,SAAlBrpa,KAAKoxD,SACL,OAAOpxD,KAAKoxD,SAEhB,MAAMk4W,GAAatpa,KAAKyoV,QAAQlkL,wBAC1BroE,GAAY9a,SAASub,gBAAgBT,WAAa9a,SAAS7vC,KAAK2qD,UAItE,OAHkBotU,GAAW9+U,IAAMz0D,OAAOqzP,YAC3BkgJ,GAAWjmV,OACHgmV,GAAW9kQ,wBAAwBlhF,OAChB6Y,GAAY9a,SAASub,gBAAgBy/J,aACpE,MAGA,SAGfwrK,kBACI,GAAK5na,KAAK+na,SAIV,IADA/na,KAAKs8T,QAAUl7O,SAASC,cAAcrhF,KAAK+na,WACtC/na,KAAKs8T,QACN,MAAM,IAAIz3T,MAAO,qBAAoB7E,KAAK+na,6CAE9C/na,KAAKupa,mBACLvpa,KAAKs8T,QAAQvkO,YAAY/3F,KAAK+ma,YAElCwC,mBACI,MAAMhuY,GAASv7B,KAAKyoV,QAAQlkL,wBACtBx3E,GAAS/sF,KAAKs8T,QAAQ/3J,wBAE5BvkK,KAAK+ma,UAAU9iV,MAAMmG,KADF7uD,GAAO6uD,KAAO2C,GAAO3C,KACC,KACzCpqF,KAAK+ma,UAAU9iV,MAAMb,MAAQ7nD,GAAO6nD,MAAQ,KAC5CpjF,KAAK+ma,UAAU9iV,MAAMmK,SAAW7yD,GAAO6nD,MAAQ,KAEnDilV,mBACI,MAAM9sY,GAASv7B,KAAKyoV,QAAQlkL,wBACtBx3E,GAAS/sF,KAAKs8T,QAAQ/3J,wBACtBqqE,GAAQrzM,GAAO8nD,OACS,QAA1BrjF,KAAKgna,kBAELhna,KAAK+ma,UAAU9iV,MAAMwG,OADAsC,GAAOtC,OAASlvD,GAAOkvD,OACCmkJ,GAAQ,KACrD5uO,KAAK+ma,UAAU9iV,MAAMuG,IAAM,QAEI,WAA1BxqF,KAAKgna,mBAEVhna,KAAK+ma,UAAU9iV,MAAMuG,IADHjvD,GAAOivD,IAAMuC,GAAOvC,IACCokJ,GAAQ,KAC/C5uO,KAAK+ma,UAAU9iV,MAAMwG,OAAS,QAGtCo9U,0BACI7na,KAAKwrP,MAAMjlK,kBAAkB,MACzBs1D,OAAU77I,KAAK+ma,UAAW,aACrBj8Z,MAAK46O,OAAU1lP,KAAK2ma,YACpBh/Z,UAAW2tB,KAEW,UAAnBlkB,GADiBA,OACVg6R,SAGX91Q,GAAMkuB,sBAKtB8iX,UAAyBt/Z,UAAzB,4BAAqHs/Z,IAjtDd5la,MAitDwDA,OAjtDxDA,MAitDiFA,OAjtDjFA,MAitDuGyka,IAjtDvGzka,MAitD0IA,OAjtD1IA,MAitDoK6mF,KAA3Q,KACA++U,GAAyBl+U,UAltD8E1nF,MAktDvG,MAAyG4la,GAAzGxpX,sEAltDuGp8C,KAktDvGkH,IAA8nB0/O,OAltDvhB5mP,KAktDvGywC,IAA2vBm2M,OAltDppB5mP,KAktDvGulO,IAA03BqhB,QAA13B,aAltDuG5mP,MAktDvG8oa,GAltDuG9oa,WAktDvG+oa,+BAltDuG/oa,MAktDvG8oa,GAltDuG9oa,WAktDvG+oa,8BAltDuG/oa,MAktDvG8oa,GAltDuG9oa,WAktDvG+oa,sXAltDuG/oa,OAktDvG+kL,wVAltDuG/kL,cAmtD/F,kBAntD+FA,MAstD/F,aAttD+FA,MAutD3F,gBAvtD2FA,MAwtD3F,gBAxtD2FA,MAytDvF,GAztDuFA,gBA4tD/F,kBAVR,OAltDuGA,MAmtDzF,0BAntDyFA,MAutD7E,GAvtD6EA,MAutD7E,kCAvtD6EA,MAwtD7E,GAxtD6EA,MAwtD7E,wDAxtD6EA,MA4tDzF,GA5tDyFA,MA4tDzF,4BAVdg8D,YAa4C4tS,KAAiFA,MAb7HzkL,oCA5TMygP,OA2YAoD,SAAN,SACI/pa,YAAYq1F,IACRh1F,KAAKg1F,WAAaA,GAClBh1F,KAAK2pa,aAAe,IAAIjma,IACxB1D,KAAKkuP,WAAY,EAEjB3hM,eAAa,OAAOvsD,KAAKkuP,UACzB3hM,aAAShrD,IAASvB,KAAKkuP,UAAYluP,KAAK4pa,YAAYroa,IACpDuB,YACA,OAAQ9C,KAAKg1F,WAAWpP,cAAciS,aAAe,IAAI31B,OAE7Dm4B,YAAYp9E,IACJA,GAAQsvC,UACRvsD,KAAK2pa,aAAazla,KAAK,CACnB3C,MAAOvB,KAAKuB,MACZgrD,SAAUvsD,KAAKkuP,YAI3B6uC,qBACQ/8R,KAAK8C,QAAU9C,KAAK6pa,iBACpB7pa,KAAK6pa,eAAiB7pa,KAAK8C,MAC3B9C,KAAK2pa,aAAazla,KAAK,CACnB3C,MAAOvB,KAAKuB,MACZgrD,SAAUvsD,KAAKkuP,UACfprP,MAAO9C,KAAKg1F,WAAWpP,cAAcigF,aAIjD35J,cACIlM,KAAK2pa,aAAa1pV,WAEtB2pV,YAAYroa,IACR,OAAgB,MAATA,IAAgC,SAAd,GAAEA,MAGnCmoa,UAAkB1ia,UAAlB,4BAA8G0ia,IAr0DPhpa,MAq0D0CA,SACjJgpa,GAAkBthV,UAt0DqF1nF,MAs0DvG,MAAkGgpa,GAAlG5sX,+EAt0DuGp8C,OAs0DvG+kL,oEAt0DuG/kL,cAs0DqI,KAA5OmlL,oCArCM6jP,OAmDAI,SAAN,SACInqa,cACIK,KAAK+pa,aAAe,iBACpB/pa,KAAKgqa,iBAAmB,iBACxBhqa,KAAKiqa,WAAa,WAClBjqa,KAAKkqa,YAAc,aACnBlqa,KAAKmqa,aAAe,YACpBnqa,KAAKoqa,sBAAuB,EAC5Bpqa,KAAKqqa,aAAc,EACnBrqa,KAAKsqa,WAAa,aAG1BR,UAAe9ia,UAAf,4BAA2G8ia,KAC3GA,GAAe3ia,WAj2DwFzG,MAi2DvG,OAA+Gopa,GAA/Gnpa,QAA+Gmpa,GAA/G,qBAA2I,SAbrIA,OAmBAS,SAAN,SACIlqa,KAAKP,IACDyJ,QAAQlJ,KAAKP,KAGrByqa,UAAevja,UAAf,4BAA2Guja,KAC3GA,GAAepja,WA72DwFzG,MA62DvG,OAA+G6pa,GAA/G5pa,QAA+G4pa,GAA/G,qBAA2I,SANrIA,OAYN,MAAMC,GAA0B,IAAInma,MAAe,iCAC7Coma,SAAN,SACI9qa,YAAY++C,GAASglC,GAAWn/E,GAAQmma,GAAmBhmV,GAAa82P,GAAK3tC,IACzE7tS,KAAK0+C,QAAUA,GACf1+C,KAAK0jF,UAAYA,GACjB1jF,KAAKuE,OAASA,GACdvE,KAAKw7U,IAAMA,GACXx7U,KAAK6tS,SAAWA,GAChB7tS,KAAK2qa,WAAY,EACjB3qa,KAAK4qa,iBAAmB,OACxB5qa,KAAKihD,SAAU,EACfjhD,KAAK6qa,eAAgB,EACrB7qa,KAAKwha,cAAe,EACpBxha,KAAK8qa,aAAc,EACnB9qa,KAAKopa,aAAe,EACpBppa,KAAKwka,iBAAkB,EACvBxka,KAAKkia,wBAAyB,EAC9Blia,KAAKija,SAAW,KAChBjja,KAAK89I,UAAY,KACjB99I,KAAK+qa,kBAAmB,EACxB/qa,KAAKgra,WAAa,KAClBhra,KAAKira,WAAa,GAClBjra,KAAKo+Z,UAAW,EAChBp+Z,KAAKkra,sBAAuB,EAC5Blra,KAAKmra,cAAgB,EACrBnra,KAAKora,oBAAqB,EAC1Bpra,KAAKqra,UAAan3Z,KAAM,EACxBlU,KAAK2zZ,UAAW,EAChB3zZ,KAAKsra,QAAS,EACdtra,KAAKura,YAAa,EAClBvra,KAAKwra,WAAY,EACjBxra,KAAKkgJ,QAAS,EAEdlgJ,KAAKyra,UAAY,IAAItmV,MACrBnlF,KAAK0ra,WAAa,IAAIvmV,MACtBnlF,KAAKm7P,YAAc,IAAIh2K,MACvBnlF,KAAK2ra,UAAY,IAAIxmV,MACrBnlF,KAAK4ra,WAAa,IAAIzmV,MACtBnlF,KAAK6ra,YAAc,IAAI1mV,MACvBnlF,KAAK8ra,WAAa,IAAI3mV,MACtBnlF,KAAK+ra,SAAW,IAAI5mV,MACpBnlF,KAAKgsa,YAAc,IAAI7mV,MACvBnlF,KAAKsvP,OAAS,IAAInqK,MAClBnlF,KAAK6/Z,YAAc,IAAI16U,MACvBnlF,KAAKisa,iBAAkB,EACvBjsa,KAAK4/Z,cAAgB,GACrB5/Z,KAAK42C,WAAa,KAClB52C,KAAKgka,WAAaS,KAClBzka,KAAKmga,YAAa,EAClBnga,KAAK04O,OAAS,GACd14O,KAAKksa,cAAgB,QACrBlsa,KAAKmsa,aAAe,GACpBnsa,KAAKosa,cAAe,EACpBpsa,KAAK2ma,UAAY,IAAIjja,IACrB1D,KAAKqsa,WAAa,IAAI3oa,IACtB1D,KAAK0iV,UAAaxuU,OAClBlU,KAAKssa,WAAa,OAClBtsa,KAAKusa,UAAaxyZ,KACd,MAAM0/Y,GAASz5Z,KAAK8sN,cAAcj0M,KAAKjR,IAAKA,GAAErG,QAAUwY,IACxD/Z,KAAKu/Z,SAAS9F,KAElBz5Z,KAAKwsa,cAAgB,CAACt4Z,GAAG6F,KACjB/Z,KAAK89I,UACE99I,KAAK89I,UAAU/jI,GAAKxY,OAExBwY,GAEX/Z,KAAKysa,mBAAmBloa,IACxBvE,KAAK0/Z,UAAY,IAAIgN,GAAU1sa,KAAM0qa,MACrC1qa,KAAKomF,QAAU1B,GAAYkB,cAE3Bv1D,YAAU,OAAOrwB,KAAK04O,OAEtBroN,UAAM9uB,IACQ,OAAVA,KACAA,GAAQ,IAEZvB,KAAK2sa,eAAgB,EACrB3sa,KAAK04O,OAASn3O,GAGd0mV,kBAAgB,OAAOjoV,KAAKgoV,aAC5BC,gBAAYn8T,IACZ,GAA+B,MAA3BA,KAAoC0hH,GAAW1hH,IAC/C,MAAMjnB,MAAM,qCAEhB7E,KAAKgoV,aAAel8T,GAEpB8gZ,uBACA,OAAI3M,GAAUjga,KAAK6sa,mBACR7sa,KAAK6sa,kBAEP5M,GAAUjga,KAAKuE,OAAOqoa,kBACpB5sa,KAAKuE,OAAOqoa,iBAEhB5sa,KAAK6qa,cAGZ+B,qBAAiBrra,IACjBvB,KAAK6sa,kBAAoBtra,GAGzBgrD,eAAa,OAAOvsD,KAAKo+Z,UAAYp+Z,KAAKkuP,UAE1Ch/M,eAAa,QAAUlvC,KAAK42C,YAAc52C,KAAKura,YAAcvra,KAAKosa,aAElEU,aAAW,OAAQ9sa,KAAK2zZ,SAExBoZ,0BACA,OAAO/sa,KAAKora,qBAAuBpra,KAAK2zZ,SAExC7mM,oBACA,OAAO9sN,KAAK0/Z,UAAU5yM,cAEtBkgN,qBACA,OAAOhta,KAAK8sN,cAAcrnN,IAAImC,IAAKA,GAAErG,OAErC0rI,eACA,OAAOjtI,KAAK8sN,cAAcrsN,OAAS,EAEnCwsa,2BACA,GAAIjta,KAAKkta,cACL,OAAOlta,KAAKkta,cAAcjrK,gBAIlCplN,WACI78C,KAAKmta,oBACLnta,KAAKota,sBAET/yU,YAAYp9E,IACJA,GAAQ02Y,UACR3zZ,KAAK0/Z,UAAUuC,gBAEfhlZ,GAAQoT,OACRrwB,KAAKqta,UAAUpwZ,GAAQoT,MAAMu6I,cAAgB,IAE7C3tJ,GAAQijI,SACRlgJ,KAAKsta,YAAcrN,GAAUhjZ,GAAQijI,OAAO0qB,eAGpDd,kBACS9pK,KAAK2sa,gBACN3sa,KAAKmga,YAAa,EAClBnga,KAAKuta,0BAELtN,GAAUjga,KAAK0jF,YACf1jF,KAAK0mF,QAGbx6E,cACIlM,KAAK2ma,UAAUzia,OACflE,KAAK2ma,UAAU1mV,WAEnButV,cAAcjqX,IAEV,GADgBqhX,GAAQrhX,GAAO6oE,OAClB,CACT,IAA+B,IAA3BpsH,KAAKqra,UAAU9nX,IACf,OAEJvjD,KAAKyta,cAAclqX,SAEdA,GAAO1gD,KAA6B,IAAtB0gD,GAAO1gD,IAAIpC,QAC9BT,KAAKqsa,WAAWnoa,KAAKq/C,GAAO1gD,IAAImga,qBAGxCyK,cAAclqX,IACV,OAAQA,GAAO6oE,YACNw4S,GAAQK,UACTjla,KAAK0ta,iBAAiBnqX,IACtB,WACCqhX,GAAQI,QACThla,KAAK2ta,eAAepqX,IACpB,WACCqhX,GAAQG,MACT/ka,KAAK4ta,aAAarqX,IAClB,WACCqhX,GAAQE,MACT9ka,KAAK6ta,aAAatqX,IAClB,WACCqhX,GAAQC,IACT7ka,KAAK8ta,WAAWvqX,IAChB,WACCqhX,GAAQ9oC,IACT97X,KAAK2pF,QACLpmC,GAAOC,iBACP,WACCohX,GAAQM,UACTlla,KAAK+ta,oBAIjBC,gBAAgBzqX,IACZ,MAAMnyC,GAASmyC,GAAOnyC,OACC,UAAnBA,GAAOg6R,SACP7nP,GAAOC,iBAEPpyC,GAAOwlF,UAAUxP,SAAS,oBAC1BpnF,KAAKiua,mBAGL78Z,GAAOwlF,UAAUxP,SAAS,oBAC1BpnF,KAAKkua,mBAGL98Z,GAAOwlF,UAAUxP,SAAS,mBAGzBpnF,KAAKmua,SACNnua,KAAK0mF,QAET1mF,KAASura,WACLvra,KAAK0gD,OAGL1gD,KAAKmlP,UAGb+oL,mBACQlua,KAAKkgJ,OACLlgJ,KAAK2pF,QAGL3pF,KAAK0gD,OAGbutX,mBACQjua,KAAKitI,WACLjtI,KAAK0/Z,UAAUuC,eAAc,GAC7Bjia,KAAKoua,kBAETpua,KAAKqua,eACLrua,KAAK0mF,QACL1mF,KAAK8ra,WAAWn+P,OAChB3tK,KAAKsua,sBAETC,cACSvua,KAAKwra,YAGVxra,KAAK0/Z,UAAUuC,gBACfjia,KAAKoua,kBAETjjQ,WAAW5pK,IACPvB,KAAK0/Z,UAAUuC,gBACfjia,KAAKwua,kBAAkBjta,IACvBvB,KAAKw7U,IAAIrzP,eAEbijF,iBAAiBt/I,IACb9rB,KAAK0iV,UAAY52T,GAErBu/I,kBAAkBv/I,IACd9rB,KAAKssa,WAAaxgZ,GAEtBw/I,iBAAiB/3I,IACbvzB,KAAKkuP,UAAY36N,GACjBvzB,KAAKw7U,IAAIrzP,eAEbg9J,SACSnlP,KAAKkgJ,OAINlgJ,KAAK2pF,QAHL3pF,KAAK0gD,OAMbA,OACQ1gD,KAAKusD,UAAYvsD,KAAKkgJ,QAAUlgJ,KAAKsta,cAGpCtta,KAAKyua,eAAiBzua,KAAKsra,QAAUtra,KAAK0/Z,UAAU6B,kBAGzDvha,KAAKkgJ,QAAS,EACdlgJ,KAAK0/Z,UAAU+D,sBAAsBzja,KAAK2qa,WAC1C3qa,KAAK2ra,UAAUh+P,OACV3tK,KAAK42C,YACN52C,KAAK0mF,QAET1mF,KAAKy9I,iBAET9zD,SACS3pF,KAAKkgJ,QAAUlgJ,KAAKsta,cAGzBtta,KAAKkgJ,QAAS,EACdlgJ,KAAKosa,cAAe,EACpBpsa,KAAU+sa,oBAIN/sa,KAAK0/Z,UAAUmD,qBAHf7ia,KAAKqua,eAKTrua,KAAK0/Z,UAAU0D,aACfpja,KAAKssa,aACLtsa,KAAK4ra,WAAWj+P,OAChB3tK,KAAKw7U,IAAIrzP,gBAEbq3U,WAAWzlZ,KACFA,IAAQA,GAAKwyC,UAAYvsD,KAAKusD,WAG/BvsD,KAAK2zZ,UAAY55Y,GAAK4iJ,SACtB38J,KAAKu/Z,SAASxlZ,IAGd/Z,KAAKu7B,OAAOxhB,IAEZ/Z,KAAK+sa,qBACL/sa,KAAK0ua,0BAET1ua,KAAKsua,uBAET/yY,OAAOxhB,IACEA,GAAK4iJ,WACN38J,KAAK0/Z,UAAUnkY,OAAOxhB,IAClB/Z,KAAK4sa,mBAAqB5sa,KAAK+sa,qBAC/B/sa,KAAKqua,eAETrua,KAAKoua,iBACDpua,KAAK2zZ,UACL3zZ,KAAK+ra,SAASp+P,KAAK5zJ,GAAKxY,SAG5BvB,KAAK6qa,eAAiB7qa,KAAK0/Z,UAAU6B,kBACrCvha,KAAK2pF,QAGbjD,QACI1mF,KAAK2ua,YAAY/oV,cAAcc,QAEnC6pU,OACIvwZ,KAAK2ua,YAAY/oV,cAAc2qU,OAEnCgP,SAASxlZ,KACAA,KAGL/Z,KAAK0/Z,UAAUH,SAASxlZ,IACxB/Z,KAAK0mF,QACL1mF,KAAKoua,iBACLpua,KAAKgsa,YAAYr+P,KAAK5zJ,KAE1B4lZ,YACI,IAAI3+N,GAEAA,GADAxzD,GAAWxtI,KAAKsra,QACVtra,KAAKsra,OAAOtra,KAAK42C,YAGjB52C,KAAK4ua,WAAa5ua,KAAK42C,WAAa,EAAG52C,KAAKyia,WAAYzia,KAAK42C,YAEvE,MAAMi4X,GAAa90Z,IAAS/Z,KAAKyua,eAAiBzua,KAAKkgJ,OAASlgJ,KAAK0/Z,UAAUmC,QAAQ9nZ,GAAM,MAAQ/Z,KAAK0/Z,UAAUgD,QAAQ3oZ,KApuEpI,YAAmBxY,IACf,OAAOA,cAAiBq1B,QAouEhB4kM,CAAUx6B,IAGLA,IACLhhM,KAAKu7B,OAAOszY,GAAU7tO,KAHtBA,GAAI5qK,KAAKrc,IAAQ/Z,KAAKu7B,OAAOszY,GAAU90Z,MAAQuc,MAAM,QAM7Dw4Y,YACI,OAAO9ua,KAAKwra,YAAcxra,KAAKitI,UAAYjtI,KAAK42C,cAAgB52C,KAAKusD,SAErEwiX,iBACA,IAAK/ua,KAAKgva,WACN,OAAO,EAEX,MAAM/P,GAAOj/Z,KAAK42C,WAAWvtC,cAAc64D,OAC3C,OAAOliE,KAAKsra,SACNtra,KAAK0/Z,UAAU3wM,cAAc9lN,KAAKrB,IAAKA,GAAE9E,MAAMuG,gBAAkB41Z,OAC7Dj/Z,KAAKwha,cAAgBxha,KAAKkgJ,SAAWlgJ,KAAK8sN,cAAc7jN,KAAKrB,IAAKA,GAAE9E,MAAMuG,gBAAkB41Z,OACjGj/Z,KAAKihD,QAEdguX,mBACI,MAAMt2S,GAAgD,IAAxC34H,KAAK0/Z,UAAU3wM,cAActuN,OAC3C,OAASk4H,KAAU34H,KAAKyua,eAAiBzua,KAAKihD,SACzC03E,IAAS34H,KAAKyua,cAAgBzua,KAAKgva,aAAehva,KAAKihD,WACvDjhD,KAAK+ua,WAEdG,mBAEI,OADsD,IAC/Cv2S,KADY+mS,UAAU3wM,cAActuN,QAC3BT,KAAKyua,eAAiBzua,KAAKgva,aAAehva,KAAKihD,QAEnEkuX,qBACInva,KAAKosa,cAAe,EAExBgD,iBAAiBnQ,IACbj/Z,KAAKosa,cAAe,GAChBpsa,KAAKkra,sBAGTlra,KAAKoU,OAAO6qZ,IAEhB7qZ,OAAO6qZ,IACCj/Z,KAAKosa,eAAiBpsa,KAAKkra,uBAG/Blra,KAAK42C,WAAaqoX,GACdj/Z,KAAKyua,eAAiBzua,KAAKgva,YAAqC,IAAvBhva,KAAKmra,gBAC9Cnra,KAAKqva,UAAUnra,KAAK+6Z,IAEnBj/Z,KAAKyua,eACNzua,KAAK0/Z,UAAUtrZ,OAAOpU,KAAK42C,YACvB52C,KAAKkgJ,QACLlgJ,KAAK0/Z,UAAU+D,sBAAsBzja,KAAK2qa,YAGlD3qa,KAAK6ra,YAAYl+P,KAAK,CAAEsxP,QAAM5uY,MAAOrwB,KAAK0/Z,UAAU3wM,cAActpN,IAAImC,IAAKA,GAAErG,SAC7EvB,KAAK0gD,QAET4uX,aAAa/rX,IACLvjD,KAAKmua,UAGLnua,KAAK+sa,qBACL/sa,KAAK0ua,0BAET1ua,KAAKomF,QAAQwQ,UAAUziE,IAAI,qBAC3Bn0B,KAAK0ra,WAAW/9P,KAAKpqH,IACrBvjD,KAAKmua,SAAU,GAEnBoB,YAAYhsX,IACRvjD,KAAKomF,QAAQwQ,UAAU3jD,OAAO,qBAC9BjzC,KAAKyra,UAAU99P,KAAKpqH,KACfvjD,KAAKkgJ,SAAWlgJ,KAAKusD,UACtBvsD,KAAKssa,aAELtsa,KAAK+sa,qBACL/sa,KAAK0ua,0BAET1ua,KAAKmua,SAAU,EAEnB1O,YAAY1lZ,IACJA,GAAKwyC,UAGTvsD,KAAK0/Z,UAAU8D,SAASzpZ,IAE5B0jI,gBACSz9I,KAAKw7U,IAAIz2K,WACV/kK,KAAKw7U,IAAI/9L,gBAGjBixR,0BACI,MAAM/xQ,GAAW38J,KAAK8sN,eAAiB9sN,KAAK8sN,cAAc,GAC1D9sN,KAAK42C,WAAc+lH,IAAYA,GAAS75J,OAAU,KAEtDuqa,UAAUh9Y,IACN,MAAMi+L,GAAYj+L,GAAM,GACxBrwB,KAAKyia,UAAYzia,KAAKyia,WAAazia,KAAKksa,cACxClsa,KAAK4ua,WAAa3O,GAAU3xM,KAAchwB,GAASgwB,IAAatuN,KAAK4ua,YAAc5ua,KAAKyia,YAAczia,KAAKksa,cAC3Glsa,KAAK0/Z,UAAUkC,SAASvxY,IACpBA,GAAM5vB,OAAS,GAAKT,KAAKitI,UACzBjtI,KAAK0/Z,UAAUuE,mBAEfjka,KAAKkgJ,QAAU+/Q,GAAUjga,KAAK42C,cAAgB52C,KAAKyua,cACnDzua,KAAK0/Z,UAAUtrZ,OAAOpU,KAAK42C,aAE3B52C,KAAKyua,cAAgBzua,KAAKkgJ,SAC1BlgJ,KAAK0/Z,UAAU+D,sBAAsBzja,KAAK2qa,WAGlD4C,yBACI,MAAMiC,GAAgB5sa,KAClB5C,KAAKqwB,MAAQztB,GAAQ6C,IAAIg0Z,KAAW,CAChCqK,eAAgBrK,GAAOl4Z,MACvBsia,eAAgBpK,GAAOzkU,WAAWpP,cAAcigF,UAChDt5G,SAAUktW,GAAOltW,YAErBvsD,KAAK0/Z,UAAUkC,SAAS5ha,KAAKqwB,OACzBrwB,KAAKitI,UACLjtI,KAAK0/Z,UAAUuE,mBAEnBjka,KAAKy9I,iBAEHgyR,GAAqB,KACvB,MAAMC,IAAqBr8X,OAAMrzC,KAAK2va,UAAU1yZ,QAASjd,KAAK2ma,YAC9DtzX,UAASrzC,KAAK2va,UAAUlqa,IAAIg0Z,IAAUA,GAAOkQ,eACxC7+Z,MAAK46O,OAAUgqL,KACf/na,UAAU8xZ,KACX,MAAM1/Y,GAAO/Z,KAAK0/Z,UAAU2C,SAAS5I,GAAOl4Z,OAC5CwY,GAAKwyC,SAAWktW,GAAOltW,SACvBxyC,GAAKjX,MAAQ22Z,GAAO32Z,OAASiX,GAAKjX,MAClC9C,KAAKw7U,IAAI/9L,mBAGjBz9I,KAAK2va,UAAU1yZ,QACVnS,MAAKwoC,OAAUtzC,KAAK2va,YAAYjqL,OAAU1lP,KAAK2ma,YAC/Ch/Z,UAAU/E,KACX5C,KAAKyia,UAAYzia,KAAKksa,cACtBsD,GAAa5sa,IACb6sa,OAGRG,mBAAmBrua,IACf,IAAK0+Z,GAAU1+Z,KAAWvB,KAAK2zZ,UAAsB,KAAVpyZ,IAAiBiE,MAAM0L,QAAQ3P,KAA2B,IAAjBA,GAAMd,OACtF,OAAO,EAEX,MAAMova,GAAmB91Z,OAChBkmZ,GAAUjga,KAAKioV,cAAgB3pJ,GAASvkL,KAAS/Z,KAAKuia,YACvDvia,KAAK6tS,SAASxtS,KAAM,kBAAiB8F,KAAK2kB,UAAU/Q,kFAC7C,IAIf,OAAI/Z,KAAK2zZ,SACAnuZ,MAAM0L,QAAQ3P,IAIZA,GAAMghI,MAAMxoH,IAAQ81Z,GAAgB91Z,MAHvC/Z,KAAK6tS,SAASxtS,KAAK,6CACZ,GAKJwva,GAAgBtua,IAG/Bita,kBAAkBsB,IACd,IAAK9va,KAAK4va,mBAAmBE,IACzB,OAEJ,MAAMv0Y,GAAUE,KACZ,IAAI1hB,GAAO/Z,KAAK0/Z,UAAU2C,SAAS5mY,IACnC,GAAI1hB,GACA/Z,KAAK0/Z,UAAUnkY,OAAOxhB,QAErB,CACD,MAAMg2Z,GAAczxO,GAAS7iK,IACvBu0Y,IAAeD,KAAgB/va,KAAKuia,UACrCwN,IAAeC,GAChBhwa,KAAK0/Z,UAAUnkY,OAAOv7B,KAAK0/Z,UAAUmC,QAAQpmY,GAAK,OAE7Cz7B,KAAKuia,YACVxoZ,GAAO,EACF/Z,KAAKyia,WAAY,MACjBzia,KAAKuia,WAAY9mY,IAEtBz7B,KAAK0/Z,UAAUnkY,OAAOv7B,KAAK0/Z,UAAUmC,QAAQ9nZ,GAAM,UAI3D/Z,KAAK2zZ,SACLmc,GAAQ9tZ,QAAQjI,IAAQwhB,GAAOxhB,KAG/BwhB,GAAOu0Y,IAGf3C,oBACQnta,KAAKura,YAGTvra,KAAKqsa,WACAvha,MAAK46O,OAAU1lP,KAAK2ma,YAAYjtY,OAAIoyM,IAAU9rO,KAAKmsa,aAAav7Z,KAAKk7N,MAAUz5L,OAAa,MAAMj+B,OAAO,IAAMpU,KAAKmsa,aAAa1ra,OAAS,IAAIgF,OAAI,IAAMzF,KAAKmsa,aAAatma,KAAK,MAC/K8B,UAAUs3Z,KACX,MAAMllZ,GAAO/Z,KAAK0/Z,UAAUoD,YAAY7D,IACpCllZ,KACI/Z,KAAKkgJ,QACLlgJ,KAAK0/Z,UAAU8D,SAASzpZ,IACxB/Z,KAAKiwa,kBACLjwa,KAAKw7U,IAAIrzP,gBAGTnoF,KAAKu7B,OAAOxhB,KAGpB/Z,KAAKmsa,aAAe,KAG5BiB,sBACI,MAAMv7Z,GAAQ7R,KAAK2ua,YAAY/oV,cACzBqnE,GAAarrJ,OAAOc,OAAO,CAAES,KAAM,OAAQ+sa,YAAa,MAAOC,eAAgB,MAAOC,aAAcpwa,KAAKgra,WAAa,MAAQhra,KAAKgka,YAAchka,KAAKira,YAC5J,UAAWpoa,MAAOjB,OAAOgqC,KAAKqhH,IAC1Bp7I,GAAMgwE,aAAah/E,GAAKoqJ,GAAWpqJ,KAG3Cura,iBACI,MAAMx5Y,GAAQ,GACd,UAAW7a,MAAQ/Z,KAAK8sN,cACpB,GAAI9sN,KAAKuia,UAAW,CAChB,IAAIhha,GAAQ,KAGRA,GAFAwY,GAAK6kE,SAEG7kE,GAAKxY,OADIvB,KAAK2ka,WAAa3ka,KAAKuia,UAAYvia,KAAKyyI,UAC1BzyI,KAAKyyI,SAG5BzyI,KAAK0/Z,UAAU8C,cAAczoZ,GAAKxY,MAAOvB,KAAKuia,WAE1D3tY,GAAMhkB,KAAKrP,SAGXqzB,GAAMhkB,KAAKmJ,GAAKxY,OAGxB,MAAMo7J,GAAW38J,KAAK8sN,cAAcrnN,IAAImC,IAAKA,GAAErG,OAC3CvB,KAAK2zZ,UACL3zZ,KAAK0iV,UAAU9tT,IACf50B,KAAKm7P,YAAYxtF,KAAKhR,MAGtB38J,KAAK0iV,UAAUu9E,GAAUrrY,GAAM,IAAMA,GAAM,GAAK,MAChD50B,KAAKm7P,YAAYxtF,KAAKhR,GAAS,KAEnC38J,KAAKw7U,IAAIrzP,eAEbkmV,gBACSrua,KAAK42C,aAGV52C,KAAKqwa,cAAc,MACnBrwa,KAAK0/Z,UAAUmD,sBAEnBwN,cAAcz5X,IACV52C,KAAK42C,WAAaA,GACd52C,KAAKyua,cACLzua,KAAKqva,UAAUnra,KAAK0yC,IAG5Bq5X,mBACSjwa,KAAKkgJ,SAAWlgJ,KAAKkta,eAG1Blta,KAAKkta,cAAcnxU,SAAS/7F,KAAK0/Z,UAAU4B,YAE/CgP,gBACStwa,KAAKkgJ,SAAWlgJ,KAAKkta,eAG1Blta,KAAKkta,cAAchF,cAEvBoG,sBACQtua,KAAKkgJ,QAAUlgJ,KAAK2zZ,UAAY3zZ,KAAK+na,WAErC/na,KAAKw7U,IAAI/9L,gBACTz9I,KAAKkta,cAAc9E,kBAG3B0F,WAAWvqX,KACa,IAAhBvjD,KAAKkgJ,SAAqBlgJ,KAAKsra,SAG/Btra,KAAK8qa,YACL9qa,KAAS0/Z,UAAU4B,YACftha,KAAKw/Z,WAAWx/Z,KAAK0/Z,UAAU4B,YAC/B/9W,GAAOC,kBAENxjD,KAAS+ua,YACV/ua,KAAK2/Z,YACLp8W,GAAOC,kBAGPxjD,KAAK2pF,QAIT3pF,KAAK2pF,SAGbkkV,aAAatqX,IACT,GAAIvjD,KAAKkgJ,QAAUlgJ,KAAKsta,YAChBtta,KAAK0/Z,UAAU4B,WACftha,KAAKw/Z,WAAWx/Z,KAAK0/Z,UAAU4B,YAE1Btha,KAAK+ua,YACV/ua,KAAK2/Z,qBAGJ3/Z,KAAKqqa,YAIV,OAHArqa,KAAK0gD,OAKT6C,GAAOC,iBAEXoqX,aAAarqX,IACLvjD,KAAKkgJ,QAAUlgJ,KAAKsta,cAGxBtta,KAAK0gD,OACL6C,GAAOC,kBAEXkqX,iBAAiBnqX,IACTvjD,KAAKuwa,eAAe,IACpBvwa,KAAK0/Z,UAAU0D,aACfpja,KAAKswa,iBAGLtwa,KAAK0/Z,UAAU2D,eACfrja,KAAKiwa,mBAETjwa,KAAK0gD,OACL6C,GAAOC,iBAEXmqX,eAAepqX,KACNvjD,KAAKkgJ,SAGNlgJ,KAAKuwa,gBAAe,IACpBvwa,KAAK0/Z,UAAU0D,aACfpja,KAAKswa,iBAGLtwa,KAAK0/Z,UAAU6D,mBACfvja,KAAKiwa,mBAET1sX,GAAOC,kBAEX+sX,eAAeC,IACX,MAAMC,GAAYzwa,KAAK0/Z,UAAU2B,YAAcmP,GAC/C,OAAOxwa,KAAKsra,QAAUtra,KAAK42C,YACpB52C,KAAK0/Z,UAAU4B,aACdmP,GAAY,GAAKA,KAAczwa,KAAK0/Z,UAAU3wM,cAActuN,QAExEsta,mBACQ/ta,KAAK42C,aAAe52C,KAAKwra,YAAcxra,KAAK+qa,mBAAqB/qa,KAAKitI,WAGtEjtI,KAAK2zZ,SACL3zZ,KAAKu/Z,SAASv/Z,KAAK0/Z,UAAUiC,kBAG7B3ha,KAAKuua,cAGTE,mBACA,OAAOzua,KAAKqva,WAAarva,KAAKqva,UAAU13Q,UAAUl3J,OAAS,EAE3Duua,iBACA,MAAM/P,GAAOj/Z,KAAK42C,YAAc52C,KAAK42C,WAAWsrB,OAChD,OAAO+8V,IAAQA,GAAKx+Z,QAAUT,KAAKmra,cAEvCsB,mBAAmBloa,IACfvE,KAAKm6L,YAAcn6L,KAAKm6L,aAAe51L,GAAO41L,YAC9Cn6L,KAAK+pa,aAAe/pa,KAAK+pa,cAAgBxla,GAAOwla,aAChD/pa,KAAKgqa,iBAAmBhqa,KAAKgqa,kBAAoBzla,GAAOyla,iBACxDhqa,KAAKiqa,WAAajqa,KAAKiqa,YAAc1la,GAAO0la,WAC5Cjqa,KAAKkqa,YAAclqa,KAAKkqa,aAAe3la,GAAO2la,YAC9Clqa,KAAKmqa,aAAenqa,KAAKmqa,cAAgB5la,GAAO4la,aAChDnqa,KAAKwma,cAAgBvG,GAAUjga,KAAKwma,eAC9Bxma,KAAKwma,gBACLvG,GAAU17Z,GAAO6la,wBAAyB7la,GAAO6la,qBACvDpqa,KAAKqqa,YAAcpK,GAAUjga,KAAKqqa,aAAerqa,KAAKqqa,YAAc9la,GAAO8la,YAC3Erqa,KAAK+na,SAAW/na,KAAK+na,UAAYxja,GAAOwja,SACxC/na,KAAKuia,UAAYvia,KAAKuia,WAAah+Z,GAAOg+Z,UAC1Cvia,KAAKyia,UAAYzia,KAAKyia,WAAal+Z,GAAOk+Z,UAC1Czia,KAAKsqa,WAAatqa,KAAKsqa,YAAc/la,GAAO+la,YAGpDG,UAAkBzja,UAAlB,4BAA8Gyja,IA9lFP/pa,MA8lF0C,SA9lF1CA,MA8lF+E,aA9lF/EA,MA8lFwHopa,IA9lFxHppa,MA8lFmJ8pa,IA9lFnJ9pa,MA8lFuLA,OA9lFvLA,MA8lFiNA,OA9lFjNA,MA8lFkP6pa,MACzVE,GAAkBriV,UA/lFqF1nF,MA+lFvG,MAAkG+pa,GAAlG3tX,sEA/lFuGp8C,MA+lFvG8oa,GAIwGnJ,EAJxG,EAI4JpxU,OAnmFrDvuF,MA+lFvG8oa,GAIuOlJ,GAJvO,EAI6RrxU,OAnmFtLvuF,MA+lFvG8oa,GAIqWjJ,GAJrW,EAIwZtxU,OAnmFjTvuF,MA+lFvG8oa,GAIqehJ,GAJre,EAI6hBvxU,OAnmFtbvuF,MA+lFvG8oa,GAIsmB/I,GAJtmB,EAI0pBxxU,OAnmFnjBvuF,MA+lFvG8oa,GAImuB9I,GAJnuB,EAIuxBzxU,OAnmFhrBvuF,MA+lFvG8oa,GAIk2B7I,GAJl2B,EAIw5B1xU,OAnmFjzBvuF,MA+lFvG8oa,GAIu+B5I,GAJv+B,EAIiiC3xU,OAnmF17BvuF,MA+lFvG8oa,GAI+mC3I,GAJ/mC,EAIwqC5xU,OAnmFjkCvuF,MA+lFvG8oa,GAI8uC1I,GAJ9uC,EAI+xC7xU,OAnmFxrCvuF,MA+lFvG8oa,GAIg3CzI,GAJh3C,EAI46C9xU,OAnmFr0CvuF,MA+lFvG8oa,GAIm+CE,GAJn+C,iBA/lFuGhpa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,4BA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,8BA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,2BA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,gCA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,4BA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,4BA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,8BA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,kCA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,iCA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,yBA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,oCA/lFuG/oa,MA+lFvG2uI,GA/lFuG3uI,WA+lFvG+oa,uDA/lFuG/oa,KAmmF+gD4la,GAJtnD,GA/lFuG5la,KA+lFvGgwa,oBA/lFuGhwa,MA+lFvG8oa,GA/lFuG9oa,WA+lFvG+oa,2BA/lFuG/oa,MA+lFvG8oa,GA/lFuG9oa,WA+lFvG+oa,0EA/lFuG/oa,MA+lFvG,8BAAkG+oa,uBAAlG,MA/lFuG/oa,MA+lFvG,mCA/lFuGA,CA+lFvG,iCA/lFuGA,CA+lFvG,+BA/lFuGA,CA+lFvG,qCA/lFuGA,CA+lFvG,mCA/lFuGA,CA+lFvG,6BA/lFuGA,CA+lFvG,+BA/lFuGA,CA+lFvG,iCA/lFuGA,CA+lFvG,iCA/lFuGA,CA+lFvG,q5CA/lFuGA,MA+lF2hE,CAAC,CACvnE6hF,QAAS8jF,KACTC,aAAaC,SAAW,IAAMkkQ,IAC9Bt+R,OAAO,GACRg5R,KAnmF4Fzka,OA+lFvGi9C,sgEA/lFuGj9C,cAmmF4tD,WAnmF5tDA,MAmmFsuD,gCAAc+oa,yBAnmFpvD/oa,MAmmFg6D,UAnmFh6DA,CAmmFg6D,WAnmFh6DA,MAmmF0+D,GAnmF1+DA,cAmmF2gE,0BAnmF3gEA,MAmmFy2F,iBAnmFz2FA,MAmmFsnG,UAnmFtnGA,CAmmFsnG,eAnmFtnGA,MAmmF6oH,mBAnmF7oHA,MAmmF6oH8oa,aAnmF7oH9oa,MAmmF6oH,UAAU+oa,qBAnmFvpH/oa,CAmmF6oH,qCAA+E+oa,yBAnmF5tH/oa,CAmmF6oH,4BAnmF7oHA,MAmmF6oH8oa,aAnmF7oH9oa,MAmmF6oH,UAA6I+oa,+BAnmF1xH/oa,CAmmF6oH,4BAAiN+oa,qBAnmF91H/oa,CAmmF6oH,2BAAqQ+oa,oBAnmFl5H/oa,CAmmF6oH,6BAA0Tiwa,uBAnmFv8Hjwa,kBAmmFguI,2BAnmFhuIA,MAmmF6iJ,oBAnmF7iJA,MAmmFytJ,aAnmFztJA,MAmmFowJ,aAnmFpwJA,gBAmmF6zJ,mCAJp6J,OA/lFuGA,MAmmFmxD,kDAnmFnxDA,CAmmFmxD,4BAnmFnxDA,MAmmF0+D,GAnmF1+DA,MAmmF0+D+oa,gBAnmF1+D/oa,MAmmF0hE,GAnmF1hEA,MAmmF0hE,0EAnmF1hEA,MAmmFu3F,GAnmFv3FA,MAmmFu3F,uEAnmFv3FA,MAmmF2rG,GAnmF3rGA,MAmmF2rG,0BAnmF3rGA,CAmmF2rG,0CAnmF3rGA,MAmmFu9G,GAnmFv9GA,MAmmFu9G,yDAnmFv9GA,CAmmFu9G,uBAnmFv9GA,CAmmFu9G,wCAnmFv9GA,MAmmFy3G,mBAnmFz3GA,CAmmFy3G,uBAnmFz3GA,CAmmFy3G,6HAnmFz3GA,CAmmFy3G,8CAnmFz3GA,MAmmF+uI,GAnmF/uIA,MAmmF+uI,mBAnmF/uIA,MAmmFojJ,GAnmFpjJA,MAmmFojJ,uBAnmFpjJA,MAmmFi1J,GAnmFj1JA,MAmmFi1J,oBAJx7Jg8D,YAIwub4pW,GAA4Rh8D,KAAiFA,KAA0G41D,GAA8F51D,KAAwHA,MAJr5chiR,gxJA3uBMmiV,OAw8BN,cACI,OAAO,IAAImG,GAEf,SACIjxa,cACIK,KAAKupP,UAAY,GAEjBhoP,YACA,OAAOvB,KAAKupP,UAEhBhuN,OAAOxhB,GAAM45Y,GAAUkd,IAKnB,GAJA92Z,GAAK4iJ,UAAW,IACX5iJ,GAAK6kE,WAAc+0U,IAAYkd,KAChC7wa,KAAKupP,UAAU34O,KAAKmJ,IAEpB45Y,GACA,GAAI55Y,GAAKgzE,OAAQ,CACb,MAAM+jV,GAAgB/2Z,GAAKgzE,OAAOnO,SAASn+E,OACrCswa,GAAgBh3Z,GAAKgzE,OAAOnO,SAASxqE,OAAOxM,IAAKA,GAAE+0J,UAAUl8J,OACnEsZ,GAAKgzE,OAAO4vE,SAAWm0Q,KAAkBC,QAEpCh3Z,GAAK6kE,WACV5+E,KAAKgxa,0BAA0Bj3Z,GAAK6kE,UAAU,GAC9C5+E,KAAKixa,gBAAgBl3Z,IAEjB/Z,KAAKupP,UADTkgL,IAAoBzpa,KAAKkxa,gBAAgBn3Z,IACpB,IAAI/Z,KAAKupP,UAAUn1O,OAAOxM,IAAKA,GAAEmlF,SAAWhzE,IAAOA,IAGnD,IAAI/Z,KAAKupP,aAAcxvO,GAAK6kE,SAASxqE,OAAOxM,KAAMA,GAAE2kD,YAKrFgzW,SAASxlZ,GAAM45Y,IAGX,GAFA3zZ,KAAKupP,UAAYvpP,KAAKupP,UAAUn1O,OAAOxM,IAAKA,KAAMmS,IAClDA,GAAK4iJ,UAAW,EACZg3P,GACA,GAAI55Y,GAAKgzE,QAAUhzE,GAAKgzE,OAAO4vE,SAAU,CACrC,MAAM/9E,GAAW7kE,GAAKgzE,OAAOnO,SAC7B5+E,KAAK65N,cAAc9/M,GAAKgzE,QACxB/sF,KAAKixa,gBAAgBl3Z,GAAKgzE,QAC1B/sF,KAAKupP,UAAU34O,QAAQguE,GAASxqE,OAAOxM,IAAKA,KAAMmS,KAASnS,GAAE2kD,WAC7DxyC,GAAKgzE,OAAO4vE,UAAW,OAElB5iJ,GAAK6kE,WACV5+E,KAAKgxa,0BAA0Bj3Z,GAAK6kE,UAAU,GAC9C5+E,KAAKixa,gBAAgBl3Z,KAIjC5V,MAAMw+Z,IACF3ia,KAAKupP,UAAYo5K,GAAe3ia,KAAKupP,UAAUn1O,OAAOxM,IAAKA,GAAE2kD,UAAY,GAE7EykX,0BAA0BpyV,GAAU+9E,IAChC,UAAWzoC,MAASt1C,GACZs1C,GAAM3nE,WAGV2nE,GAAMyoC,SAAWA,IAGzBs0Q,gBAAgBlkV,IACZ/sF,KAAKupP,UAAY,IACVvpP,KAAKupP,UAAUn1O,OAAOxM,IAAKA,GAAEmlF,SAAWA,OACxCA,GAAOnO,SAASxqE,OAAOxM,IAAKA,GAAEmlF,SAAWA,IAAUnlF,GAAE2kD,UAAY3kD,GAAE+0J,WAG9Ek9D,cAAc9sI,IACV/sF,KAAKupP,UAAYvpP,KAAKupP,UAAUn1O,OAAOxM,IAAKA,KAAMmlF,IAEtDmkV,gBAAgBn3Z,IACZ,OAAOA,GAAK6kE,SAAS2jD,MAAM36H,KAAMA,GAAE2kD,UAAY3kD,GAAE+0J,eAInDxI,SAAN,UAEAA,UAAentJ,UAAf,4BAA2GmtJ,KAC3GA,GAAe/xE,UA14FwF1hF,MA04FvG,MAA4GyzJ,KA2B5GA,GAAe9xE,UAr6FwF3hF,MAq6FvG,WAAuI,CAC/H,CAAE6hF,QAASioV,GAAyBhoV,SAAU2uV,KADtD1xV,SAEiB,CACLjvB,SAjCN2jG,gFC74FFi9Q,EAAS,MACZ,OAAUA,EAIRA,IAAcA,EAAY,KAHfA,EAAUC,aAAkB,GAAK,eAC3CD,EAAUA,EAAUE,KAAU,GAAK,OACnCF,EAAUA,EAAU57I,KAAU,GAAK,OAJnC47I,EACH,IAAUA,GADE,GAMb,WAA6BG,GACzB,OAAO,SAAmB/tW,EAAKjwC,GAC3B,MAAMi+Y,EAAoB,CACtBjpZ,IAAK,IAAIgL,EAAMhL,KACfi9E,SAAU5jG,OAAOc,OAAO,GAAI6wB,EAAMiyE,WAEhCisU,EAAYF,EAAQ/tW,EAAKguW,GAC/B,OAAIC,IAAcL,EAAUE,KACjB1va,OAAOc,OAAO,GAAI6wB,EAAOi+Y,GAEhCC,IAAcL,EAAUC,aACjBzva,OAAOc,OAAOd,OAAOc,OAAO,GAAI6wB,GAAQ,CAAEiyE,SAAUgsU,EAAkBhsU,WAE1EjyE,GAIf,WAAuBm+Y,EAAQrzU,GAC3B,MAAMx7F,EAAMw7F,EAASqzU,GACrB,OAAIn6R,iBAAuBt0I,IAARJ,GACf0G,QAAQlJ,KAAK,uFAAwF,kEAAmE,8BAA+Bqxa,EAAQ,iCAAkCrzU,EAASp9F,YAEvP4B,EAGX,WAAoCw7F,GAChC,WAAuBqzU,GAAQn+Y,IAC3B,MAAM1wB,GAAM8ua,EAAcD,GAAQrzU,GAClC,OAAIx7F,MAAO0wB,GAAMiyE,SACN4rU,EAAU57I,MAErBjiQ,GAAMhL,IAAI3X,KAAK/N,IACf0wB,GAAMiyE,SAAS3iG,IAAO6ua,GACfN,EAAUE,MAErB,WAAwB9rU,GAAUjyE,IAC9B,IAAIk+Y,IAAY,EAChB,UAAWC,MAAUlsU,GACjBisU,GAAYG,EAAcF,GAAQn+Y,MAAW69Y,EAAU57I,MAAQi8I,GAEnE,OAAOA,GAAYL,EAAUE,KAAOF,EAAU57I,KAQlD,WAAuBk8I,GAAQn+Y,IAC3B,MAAM1wB,GAAM8ua,EAAcD,GAAQrzU,GAClC,OAAIx7F,MAAO0wB,GAAMiyE,UACbjyE,GAAMiyE,SAAS3iG,IAAO6ua,GACfN,EAAUC,eAErB99Y,GAAMhL,IAAI3X,KAAK/N,IACf0wB,GAAMiyE,SAAS3iG,IAAO6ua,GACfN,EAAUE,MAgBrB,YAA2BO,GAAiBt+Y,IAIxC,MAAMk+Y,IAHOI,cAA2Brsa,MAClCqsa,GACAt+Y,GAAMhL,IAAInU,OAAQvR,IAAQgva,GAAgBt+Y,GAAMiyE,SAAS3iG,OAE1DuR,OAAQvR,IAAQA,MAAO0wB,GAAMiyE,UAC7B//F,IAAK5C,WAAe0wB,GAAMiyE,SAAS3iG,KAAMpC,OAAS,EACvD,OAAIgxa,KACAl+Y,GAAMhL,IAAMgL,GAAMhL,IAAInU,OAAQrT,IAAOA,MAAMwyB,GAAMiyE,WAE9CisU,GAAYL,EAAUE,KAAOF,EAAU57I,KAoBlD,YAA0B9qQ,GAAQ6I,IAC9B,OAAOu+Y,GAAkB,CAACpnZ,IAAS6I,IAEvC,YAA2Bk4P,GAASl4P,IAChC,MAAMw+Y,GAAU,GAGhB,OAFAtmJ,GAAUA,GAAQr3Q,OAAQsW,IAAWA,GAAO3pB,MAAMwyB,GAAMiyE,WACtB/kG,OAAS,EAElBgrR,GAAQr3Q,OAAQsW,IApB7C,WAAoBkhB,GAAMlhB,GAAQ6I,IAC9B,MACMmwT,GAAU9hV,OAAOc,OAAO,GADb6wB,GAAMiyE,SAAS96E,GAAO3pB,IACK2pB,GAAOzN,SAC7CqyS,GAASqiH,EAAcjuF,GAASrlP,GAChC2zU,GAAY1iH,KAAW5kS,GAAO3pB,GACpC,OAAIixa,KACApmY,GAAKlhB,GAAO3pB,IAAMuuT,UACX/7R,GAAMiyE,SAAS96E,GAAO3pB,KAEjCwyB,GAAMiyE,SAAS8pN,IAAUo0B,GAClBsuF,GAU6CC,CAAWF,GAASrnZ,GAAQ6I,KAAQ9yB,OAChF,GAEA8yB,GAAMhL,IAAMgL,GAAMhL,IAAI9iB,IAAK1E,IAAOgxa,GAAQhxa,KAAOA,IAC1Cqwa,EAAUE,MAGVF,EAAUC,aAGlBD,EAAU57I,KA2BrB,WAA2BhwL,GAAUjyE,IACjC,MAAMu2N,GAAQ,GACR45F,GAAU,GAChB,UAAWguF,MAAUlsU,GAAU,CAC3B,MAAMzkG,GAAK4wa,EAAcD,GAAQrzU,GAC7Bt9F,MAAMwyB,GAAMiyE,SACZk+O,GAAQ9yU,KAAK,CAAE7P,MAAIkc,QAASy0Z,KAG5B5nL,GAAMl5O,KAAK8ga,IAGnB,MAAMQ,GAAqBJ,GAAkBpuF,GAASnwT,IAChD4+Y,GAAmBC,EAAetoL,GAAOv2N,IAC/C,QAAQ,QACC4+Y,KAAqBf,EAAU57I,MAChC08I,KAAuBd,EAAU57I,KACjC,OAAO47I,EAAU57I,UAChB28I,KAAqBf,EAAUE,MAChCY,KAAuBd,EAAUE,KACjC,OAAOF,EAAUE,aAEjB,OAAOF,EAAUC,cAG7B,MAAO,CACHhyU,UAzFJ,WAAmB9rE,IACf,OAAO3xB,OAAOc,OAAO,GAAI6wB,GAAO,CAC5BhL,IAAK,GACLi9E,SAAU,MAuFd5G,OAAQyzU,EAAoBT,GAC5B9yU,QAASuzU,EAAoBD,GAC7BhzU,OAAQizU,EAtIZ,WAAuB7sU,GAAUjyE,IAC7BA,UAAMhL,IAAM,GACZgL,GAAMiyE,SAAW,GACjB4sU,EAAe5sU,GAAUjyE,IAClB69Y,EAAUE,OAmIjB91T,OAAQ62T,EAAoBC,GAC5BC,QAASF,EAxHb,WAAwB7sU,GAAUjyE,IAC9B,MAAMi/Y,GAAkBhtU,GAAS//F,IAAKisa,IAAWY,EAAcZ,GAAQn+Y,KACvE,QAAQ,QACCi/Y,GAAgBvpa,KAAMwoa,IAAcA,KAAcL,EAAUE,MAC7D,OAAOF,EAAUE,UAChBkB,GAAgBvpa,KAAMwoa,IAAcA,KAAcL,EAAUC,cAC7D,OAAOD,EAAUC,qBAEjB,OAAOD,EAAU57I,QAiHzBx2L,UAAWqzU,EAAoBI,IAC/BxzU,WAAYozU,EAAoBP,IAChCjzU,UAAWwzU,EArCf,YAA0BX,GAAQn+Y,IAC9B,OAAOm/Y,EAAkB,CAAChB,IAASn+Y,MAqCnCwrE,WAAYszU,EAAoBK,GAChCxzU,UAAWmzU,EAlHf,WAA0Bxva,GAAK0wB,IAC3B,OAAOo/Y,GAAkB,CAAC9va,IAAM0wB,MAkHhC4rE,WAAYkzU,EAAoBM,IAChClta,IAAK4sa,EA/DT,WAAoB5sa,GAAK8tB,IASrB,OAAOu+Y,GADS70Z,GAPMsL,IAAIrO,OAAO,CAAC+C,GAASlc,MACvC,MAAM0uF,GAAShqF,GAAI8tB,GAAMiyE,SAASzkG,KAClC,OAAI0uF,KAAWl8D,GAAMiyE,SAASzkG,KAC1Bkc,GAAQrM,KAAK,CAAE7P,MAAIkc,QAASwyE,KAEzBxyE,IACR,IACqB7I,OAAO,EAAGrT,SAASA,MAAMwyB,GAAMiyE,UACrBjyE,MAuDlCq/Y,OAAQP,EArDZ,aAAyB5sa,OAAK1E,OAAMwyB,IAChC,MAAMm+Y,GAASn+Y,GAAMiyE,SAASzkG,IAC9B,OAAK2wa,GAIEe,GAAiB,CACpB1xa,GAAIA,GACJkc,QAHkBxX,GAAIisa,KAIvBn+Y,IANQ69Y,EAAU57I,QA4O7B,WAA6B5yR,EAAU,IACnC,IAAIoF,EAAIC,EACR,MAAQo2F,WAAUw0U,gBAAiB,CAC/Bx0U,SAAsC,QAA3Br2F,EAAKpF,EAAQy7F,gBAA6B,IAAPr2F,EAAgBA,EAAO0pa,GAAWA,EAAO3wa,GACvF8xa,aAA8C,QAA/B5qa,EAAKrF,EAAQiwa,oBAAiC,IAAP5qa,GAAgBA,GAEpE6qa,EA/ZV,aAII,MAAO,CAAEx0U,gBAHT,WAAyBy0U,EAAkB,IACvC,OAAOnxa,OAAOc,OAPX,CACH6lB,IAAK,GACLi9E,SAAU,IAKoCutU,KA6Z7BC,GACfC,EAzZV,aAqBI,MAAO,CAAE1zU,aApBT,WAAsB2zU,GAClB,MAAMC,EAAa5/Y,GAAUA,EAAMhL,IAC7B6qZ,EAAkB7/Y,GAAUA,EAAMiyE,SAClClG,GAAYK,QAAewzU,EAAWC,EAAgB,CAAC7qZ,EAAKi9E,KAAaj9E,EAAI9iB,IAAK1E,GAAOykG,GAASzkG,KAClGsya,GAAc1zU,QAAewzU,EAAY5qZ,GAAQA,EAAI9nB,QAC3D,OAAKyya,EAQE,CACHC,WAAWxzU,QAAeuzU,EAAaC,GACvCC,gBAAgBzzU,QAAeuzU,EAAaE,GAC5C9zU,WAAWK,QAAeuzU,EAAa5zU,GACvC+zU,aAAa1zU,QAAeuzU,EAAaG,IAXlC,CACHF,YACAC,iBACA9zU,YACA+zU,iBA8YaC,GACnBC,GAAeV,EA9LzB,WAAkCx0U,EAAU9xE,GACxC,MAAQ2yE,YAAWC,aAAYE,aAAcm0U,EAA2Bn1U,GACxE,WAAuBqzU,GAAQn+Y,IAC3B,OAAO6+Y,EAAe,CAACV,IAASn+Y,IAEpC,WAAwBkgZ,GAAWlgZ,IAC/B,MAAMmoY,GAAS+X,GAAUr/Z,OAAQwgB,MAAY+8Y,EAAc/8Y,GAAOypE,KAAa9qE,GAAMiyE,WACrF,OAAsB,IAAlBk2T,GAAOj7Z,OACA2wa,EAAU57I,MAGjBniP,GAAMqoX,GAAQnoY,IACP69Y,EAAUE,MASzB,WAAuBI,GAAQn+Y,IAC3B,MAAMxyB,GAAK4wa,EAAcD,GAAQrzU,GACjC,OAAIt9F,MAAMwyB,GAAMiyE,UACZjyE,GAAMhL,IAAMgL,GAAMhL,IAAInU,OAAQqnB,IAAQA,KAAQ16B,IAC9CsyC,GAAM,CAACq+X,IAASn+Y,IACT69Y,EAAUE,MAGVM,EAAcF,GAAQn+Y,IAcrC,YAA0B7I,GAAQ6I,IAC9B,OAAOu+Y,EAAkB,CAACpnZ,IAAS6I,IAavC,WAA2Bk4P,GAASl4P,IAChC,MAAMmoY,GAAS,GACTgY,GAAejoJ,GAAQr3Q,OAAQsW,IAbzC,YAA0BgxY,GAAQhxY,GAAQ6I,IACtC,KAAM7I,GAAO3pB,MAAMwyB,GAAMiyE,UACrB,OAAO,EAEX,MACMk+O,GAAU9hV,OAAOc,OAAO,GADb6wB,GAAMiyE,SAAS96E,GAAO3pB,IACK2pB,GAAOzN,SAC7CqyS,GAASqiH,EAAcjuF,GAASrlP,GACtC,cAAO9qE,GAAMiyE,SAAS96E,GAAO3pB,IAC7B26Z,GAAO9qZ,KAAK8yU,IACLp0B,KAAW5kS,GAAO3pB,GAIuB4ya,CAAiBjY,GAAQhxY,GAAQ6I,KAC5E9yB,OAAS,EACd,GAAsB,IAAlBi7Z,GAAOj7Z,OACP,OAAO2wa,EAAU57I,KAEhB,CACD,MAAMo+I,GAAcrgZ,GAAMhL,IACpBsrZ,GAAiB,GAWvB,OAVAtgZ,GAAMhL,IAAMgL,GAAMhL,IAAInU,OAAO,CAACrT,GAAImsB,KAC1BnsB,MAAMwyB,GAAMiyE,WAIZquU,GAAejja,KAAKsc,KACb,IAGfmmB,GAAMqoX,GAAQnoY,KACTmgZ,IACDG,GAAetxS,MAAOj1H,IAAMimB,GAAMhL,IAAIjb,MAAOsma,GAAYtma,KAClD8ja,EAAUC,aAGVD,EAAUE,MA4B7B,YAA2B9rU,GAAUjyE,IACjC,MAAMu2N,GAAQ,GACR45F,GAAU,GAChB,UAAWguF,MAAUlsU,GAAU,CAC3B,MAAMzkG,GAAK4wa,EAAcD,GAAQrzU,GAC7Bt9F,MAAMwyB,GAAMiyE,SACZk+O,GAAQ9yU,KAAK,CAAE7P,MAAIkc,QAASy0Z,KAG5B5nL,GAAMl5O,KAAK8ga,IAGnB,MAAMQ,GAAqBJ,EAAkBpuF,GAASnwT,IAChD4+Y,GAAmBC,EAAetoL,GAAOv2N,IAC/C,QAAQ,QACC4+Y,KAAqBf,EAAU57I,MAChC08I,KAAuBd,EAAU57I,KACjC,OAAO47I,EAAU57I,UAChB28I,KAAqBf,EAAUE,MAChCY,KAAuBd,EAAUE,KACjC,OAAOF,EAAUE,aAEjB,OAAOF,EAAUC,cAG7B,YAAe3V,GAAQnoY,IACnBmoY,GAAOnvY,KAAKA,GACZ,MAAMhE,GAAM,GACZ,IAAIjb,GAAI,EACJC,GAAI,EACR,KAAOD,GAAIouZ,GAAOj7Z,QAAU8M,GAAIgmB,GAAMhL,IAAI9nB,QAAQ,CAC9C,MAAMm0B,GAAQ8mY,GAAOpuZ,IACf0iZ,GAAU2hB,EAAc/8Y,GAAOypE,GAC/Bw2B,GAAWthG,GAAMhL,IAAIhb,IAEvBgf,EAAKqI,GADMrB,GAAMiyE,SAASqvB,MACH,GACvBtsG,GAAI3X,KAAKo/Y,IACT1iZ,OAGAib,GAAI3X,KAAKikH,IACTtnH,MAIJgmB,GAAMhL,IAAMA,GAAI7O,OADhBpM,GAAIouZ,GAAOj7Z,OACYi7Z,GAAO91Z,MAAM0H,IAAG7H,IAAI44F,GAGpB9qE,GAAMhL,IAAI3iB,MAAM2H,KAE3CmuZ,GAAO15Y,QAAQ,CAAC4S,GAAOtnB,MACnBimB,GAAMiyE,SAASnH,EAASzpE,KAAUA,KAG1C,MAAO,CACHsqE,YACAC,aACAE,YACAT,OAAQyzU,EAAoBT,GAC5B5yU,UAAWqzU,EAAoBI,IAC/B5zU,UAAWwzU,EA/Df,WAA0BX,GAAQn+Y,IAC9B,OAAOm/Y,GAAkB,CAAChB,IAASn+Y,MA+DnC6rE,OAAQizU,EA5JZ,YAAuB3W,GAAQnoY,IAC3BA,UAAMiyE,SAAW,GACjBjyE,GAAMhL,IAAM,GACZ6pZ,EAAe1W,GAAQnoY,IAChB69Y,EAAUE,OAyJjB91T,OAAQ62T,EAAoBC,GAC5BC,QAASF,EA7Ib,WAAwB7sU,GAAUjyE,IAC9B,MAAMi/Y,GAAkBhtU,GAAS//F,IAAKisa,IAAWY,EAAcZ,GAAQn+Y,KACvE,QAAQ,QACCi/Y,GAAgBvpa,KAAMwoa,IAAcA,KAAcL,EAAUE,MAC7D,OAAOF,EAAUE,UAChBkB,GAAgBvpa,KAAMwoa,IAAcA,KAAcL,EAAUC,cAC7D,OAAOD,EAAUC,qBAEjB,OAAOD,EAAU57I,QAsIzB12L,QAASuzU,EAAoBD,GAC7BnzU,WAAYozU,EAAoBP,GAChC/yU,WAAYszU,EAAoBK,IAChCjta,IAAK4sa,EA3FT,YAAoByB,GAAcvgZ,IAQ9B,OAAOu+Y,EAPSv+Y,GAAMhL,IAAIrO,OAAO,CAAC+C,GAASlc,MACvC,MAAM0uF,GAASqkV,GAAavgZ,GAAMiyE,SAASzkG,KAC3C,OAAI0uF,KAAWl8D,GAAMiyE,SAASzkG,KAC1Bkc,GAAQrM,KAAK,CAAE7P,MAAIkc,QAASwyE,KAEzBxyE,IACR,IAC+BsW,MAoFlCq/Y,OAAQP,EAlFZ,aAAyB5sa,OAAK1E,OAAMwyB,IAChC,MAAMm+Y,GAASn+Y,GAAMiyE,SAASzkG,IAC9B,OAAK2wa,GAIEe,GAAiB,CACpB1xa,GAAIA,GACJkc,QAHkBxX,GAAIisa,KAIvBn+Y,IANQ69Y,EAAU57I,QA4FnBu+I,CAAyB11U,EAAUw0U,GACnCW,EAA2Bn1U,GACjC,OAAOz8F,OAAOc,OAAOd,OAAOc,OAAOd,OAAOc,OAAO,CAAE27F,WAC/Cw0U,gBAAgBC,GAAeG,GAAmBM,+nDCja1D,0BACI5za,cAIIK,KAAK0zJ,QAAS,GAGtB,MAAMsgR,sBAAwB,IAAI3va,+CAAe,gCAI3C4va,gBAAkB,IAAI5va,+CAAe,uCAC3C,qBACI,OAAO,KAEX,MAAM6va,aAAe,sBACrB,sBAAsBC,IAClB,MAAMC,GAAkB,CACpB1gR,QAAQ,EACRn2E,QAAS82V,UACTC,qBAAiBrxa,EACjBsxa,oBAAgBtxa,EAChBkL,KAAM+la,aACNv+R,WAAW,EACX6+R,SAAS,EACTC,WAAW,EAGXhvQ,SAAU,CACNzjF,OAAO,EACP0yV,MAAM,EACNC,SAAS,EACTC,QAAQ,EACRC,OAAQ,SACRC,MAAM,EACNv0O,MAAM,EACNyQ,SAAS,EACT7wK,UAAU,EACV3U,MAAM,IAGR5oB,EAAkC,mBAAjBuxa,GAA8BA,KAAiBA,GAKhE5va,EAAS3C,OAAOc,OAAO,GAAI0xa,GAAiB,CAAE3uQ,SADnC7iK,EAAQ6iK,YAHT7iK,EAAQ4xa,SAClB,CAAExyV,OAAO,EAAM4yV,QAAQ,EAAMppZ,MAAM,IAEO4oZ,GAAgB3uQ,UACA7iK,GAChE,GAAI2B,EAAOmvJ,QAAUnvJ,EAAOmvJ,OAAS,EACjC,MAAM,IAAI7uJ,MAAO,gDAA+CN,EAAOmvJ,UAE3E,OAAOnvJ,EAGX,MAAMwwa,eAAiB,iBACjBC,QAAU,UACVC,MAAQ,QACRC,SAAW,WACXC,OAAS,SACTC,MAAQ,QACRC,cAAgB,gBAChBC,mBAAqB,qBACrBC,cAAgB,gBAChBC,eAAiB,iBACjBC,aAAe,eACfC,aAAe,eACfC,gBAAkB,kBACxB,oBACIh2a,YAAY8iB,GAAQuN,GAIhB,GAHAhwB,KAAKyiB,OAASA,GACdziB,KAAKgwB,UAAYA,EACjBhwB,KAAKmD,KAAO4xa,oBACe,IAAhBtyZ,GAAOtf,KACd,MAAM,IAAI0B,MAAM,uFAK5B,cACIlF,cACIK,KAAKmD,KAAO6xa,SAGpB,YACIr1a,YAAYqwB,IACRhwB,KAAKgwB,UAAYA,GACjBhwB,KAAKmD,KAAO8xa,OAGpB,eACIt1a,YAAYqwB,IACRhwB,KAAKgwB,UAAYA,GACjBhwB,KAAKmD,KAAO+xa,UAGpB,aACIv1a,YAAYqwB,IACRhwB,KAAKgwB,UAAYA,GACjBhwB,KAAKmD,KAAOgya,QAGpB,YACIx1a,cACIK,KAAKmD,KAAOiya,OAGpB,mBACIz1a,YAAYoB,IACRf,KAAKe,GAAKA,GACVf,KAAKmD,KAAOkya,eAGpB,uBACI11a,YAAYg0D,GAAOyE,EAAK+hF,GAAS,GAC7Bn6I,KAAK2zD,MAAQA,GACb3zD,KAAKo4D,IAAMA,EACXp4D,KAAKm6I,OAASA,EACdn6I,KAAKmD,KAAOmya,oBAGpB,kBACI31a,YAAYutB,IACRltB,KAAKktB,MAAQA,GACbltB,KAAKmD,KAAOoya,eAGpB,mBACI51a,YAAYi2a,IACR51a,KAAK41a,SAAWA,GAChB51a,KAAKmD,KAAOqya,gBAGpB,kBACI71a,YAAYk2a,IACR71a,KAAK61a,gBAAkBA,GACvB71a,KAAKmD,KAAOsya,cAGpB,kBACI91a,YAAY4Q,IACRvQ,KAAKuQ,OAASA,GACdvQ,KAAKmD,KAAOuya,cAGpB,qBACI/1a,YAAY4Q,IACRvQ,KAAKuQ,OAASA,GACdvQ,KAAKmD,KAAOwya,iBAIpB,oBAAoBx4X,GAAOnH,IACvB,OAAOmH,GAAM/oC,OAAQ2F,GAASi8B,GAAO1wC,QAAQyU,GAAQ,GAKzD,qBAAqB+7Z,IACjB,MAAQC,kBAAgBC,qBAAsBF,GAK9C,GAAIE,GAAqBD,GAAet1a,OAAQ,CAC5C,MAAQ8yB,SAAUwiZ,GAAeA,GAAet1a,OAAS,GACzD,OAAO8yB,EAEX,MAAQA,SAAUwiZ,GAAeC,GACjC,OAAOziZ,EAEX,sBAAsBuiZ,IAClB,OAAOA,GAAYG,YAAYH,GAAYI,aAAe,GAK9D,oBAAoBzzZ,IAChB,OAAO,IAAI0zZ,cAAc1zZ,IAASthB,KAAKwvB,OAK3C,yBAAyB2jZ,GAAiB72T,IACtC,OAAO77G,OAAOgqC,KAAK6xE,IAASvjG,OAAO,CAACk8Z,EAAkBC,KAClD,MAAMlxa,EAAMkqN,OAAOgnN,GACnBD,SAAiBjxa,GAAOmxa,eAAehC,GAAiB72T,GAAQt4G,GAAMA,GAC/Dixa,GACR,IAKP,wBAAwB9B,GAAiB7xZ,GAAQ4zZ,GAC7C,OAAOz0a,OAAOc,OAAOd,OAAOc,OAAO,GAAI+f,IAAS,CAAEA,OAAQ6xZ,GAAgB7xZ,GAAOA,OAAQ4zZ,KAK7F,wBAAwB9B,GAAgBz/D,IACpC,OAAOA,GAAOrvW,IAAI,CAAC8wa,EAAepxa,KAAS,CACvCouB,MAAOijZ,cAAcjC,GAAgBgC,EAAchjZ,MAAOpuB,GAC1D7E,MAAOi2a,EAAcj2a,SAM7B,uBAAuBi0a,GAAgBhhZ,GAAOkjZ,GAC1C,OAAOlC,GAAehhZ,GAAOkjZ,GAKjC,6BAA6Blya,IACzB,OAAOA,GAAOm2J,WAAan2J,GAAOmya,iBAAmBnya,GAAOovJ,iBAKhE,2BAA2BmiR,GAAap7Q,GAAWi8Q,EAAUC,GACzD,MAAMC,EAA0B,GAC1BC,EAAsB,GACtBC,EAAyB,GAC/BjB,UAAYkB,gBAAgBh1Z,QAAQ,CAACjhB,EAAIoE,KACrC,MAAM8xa,EAAenB,GAAYG,YAAYl1a,IACxCk2a,GAED9xa,GACA+xa,iBAAiBpB,GAAYC,eAAe5wa,GAAM8xa,EAAcv8Q,GAAWi8Q,EAAUC,KAGzFE,EAAoB/1a,GAAMk2a,EAC1BJ,EAAwBjma,KAAK7P,GAC7Bg2a,EAAuBnma,KAAKkla,GAAYC,eAAe5wa,OAEpDvD,OAAOc,OAAOd,OAAOc,OAAO,GAAIoza,IAAc,CAAEkB,gBAAiBH,EAAyBZ,YAAaa,EAAqBf,eAAgBgB,IAKvJ,0BAA0BxjZ,GAAO9Q,GAAQi4I,EAAWi8Q,EAAUQ,GAC1D,MAAMC,EAAiB18Q,IAAcA,EAAUnnI,GAAO9Q,GAAOA,QACvD40Z,EAAgBV,IACjBl0Z,GAAOA,OAAOtf,KAAK0+C,MAAM80X,EAASlxa,IAAKs2H,GAAMnjH,aAAamjH,IAAIl2H,KAAK,MAClEyxa,EAAiBH,GACnB10Z,GAAOA,OAAOtf,KAAK0+C,MAAMs1X,EAAY1xa,IAAKs2H,GAAMnjH,aAAamjH,IAAIl2H,KAAK,MAC1E,OAAOuxa,GAAkBC,GAAiBC,EAM9C,sBAAsBv7S,IAClB,OAAOA,GAAEn3H,QAAQ,sBAAuB,QAG5C,MAAMsqJ,YAAc,CAAE/rJ,KAAMq6G,6CACtB+5T,UAAY,iCACZC,iBAAmB,CAAEr0a,KAAMo0a,WAIjC,0BAA0Bh6T,GAAS96F,GAAQ8Q,EAAOjzB,EAAOisH,GACrD,GAAIjsH,EACA,MAAO,CACHizB,QACAjzB,MAAO,wCAGf,IACIm3a,EADA7lR,EAAYr+H,EAEhB,IACIq+H,EAAYr0C,GAAQhqF,EAAO9Q,UAExB9M,GACH8ha,EAAY9ha,EAAI1U,WAChBsrH,EAAa8hB,YAAY14H,GAE7B,MAAO,CACH4d,MAAOq+H,EACPtxJ,MAAOm3a,GAMf,yBAAyB1B,GAAgB2B,GAA0Bn6T,EAASo6T,EAAgB1B,EAAae,EAAiBY,EAAkBrrT,EAAcsrT,GAGtJ,GAAIH,IAA4B3B,GAAet1a,QAC3Cs1a,GAAet1a,SAAWu2a,EAAgBv2a,OAC1C,OAAOs1a,GAEX,MAAM+B,EAAqB/B,GAAenwa,MAAM,EAAG8xa,IAG7CK,EAAuBf,EAAgBv2a,QAAUo3a,EAAW,EAAI,GACtE,QAASvqa,EAAIoqa,GAA0Bpqa,EAAIyqa,EAAsBzqa,IAAK,CAClE,MAAMsoa,EAAWoB,EAAgB1pa,GAC3BmV,EAASwzZ,EAAYL,GAAUnzZ,OAC/Bu1Z,EAAgBF,EAAmBxqa,EAAI,GACvC2qa,EAAgBD,EAAgBA,EAAczkZ,MAAQokZ,EACtDO,EAAgBF,EAAgBA,EAAc13a,WAAQ2C,EAEtDy5K,EAAQy7P,EADsB7ya,QAAQswa,IAAY,EAElDoC,EACAI,iBAAiB76T,EAAS96F,EAAQw1Z,EAAeC,EAAe3rT,GACtEurT,EAAmBlna,KAAK8rK,GAI5B,OAAIm7P,GACAC,EAAmBlna,KAAKmla,GAAeA,GAAet1a,OAAS,IAE5Dq3a,EAEX,0BAA0BO,GAAuBC,IAC7C,MAAO,CACHC,aAAcD,QAAer1a,EAAW,IACxCiza,aAAc,EACdD,YAAa,CAAE,EAAGuC,WAAWtpR,cAC7B8nR,gBAAiB,CAAC,GAClBY,iBAAkB,GAClBD,eAAgBU,GAChBrC,kBAAmB,EACnBD,eAAgB,GAChBt9K,UAAU,EACVo/K,UAAU,GAMlB,yBAAyBQ,GAAuBI,GAAoBlsT,EAAc+rT,EAAgB11a,EAAU,IAIxG,OAAQ26G,GAAY,CAACu4T,EAAamB,KAC9B,IAAMsB,eAActC,cAAaC,eAAcc,kBAAiBY,mBAAkBD,iBAAgB3B,oBAAmBD,iBAAgBt9K,WAAUo/K,YAAc/B,GAAe2C,GAK5K,WAA6BtoZ,GAEzB,IAAIuoZ,GAASvoZ,EACTwoZ,EAAc3B,EAAgBpxa,MAAM,EAAG8ya,GAAS,GACpD,QAASpra,EAAI,EAAGA,EAAIqra,EAAYl4a,OAAQ6M,IACpC,IAAIyoa,EAAezoa,EAAI,GAAGhN,MAAO,CAE7Bo4a,GAASpra,EACTqra,EAAc3B,EAAgBpxa,MAAM,EAAG8ya,GAAS,GAChD,aAGOzC,EAAY0C,EAAYrra,IAGvCsqa,EAAmBA,EAAiBxja,OAAQrT,IAAmC,IAA5B43a,EAAYrza,QAAQvE,IACvEi2a,EAAkB,CAAC,KAAMA,EAAgBpxa,MAAM8ya,GAAS,IACxDf,EAAiB5B,EAAe2C,IAAQnlZ,MACxCwiZ,EAAiBA,EAAenwa,MAAM8ya,IACtC1C,EACIA,EAAoB0C,GAAS1C,EAAoB0C,GAAS,EAElE,aAGIzC,EAAc,CAAE,EAAGuC,WAAWtpR,cAC9BgnR,EAAe,EACfc,EAAkB,CAAC,GACnBY,EAAmB,GACnBD,EAAiB5B,EAAeC,GAAmBziZ,MACnDyiZ,EAAoB,EACpBD,EAAiB,GAnChBD,IAEDG,EAAcr0a,OAAO2Y,OAAO07Z,IAsChC,IAAIyB,EAA2B,EAC/B,OAAQT,EAAa9za,WACZuya,aACDj9K,EAAWw+K,EAAa1ma,OACxBmna,EAA2Br8P,IAC3B,WAECs6P,gBACDkC,EAAWZ,EAAa1ma,OACxB7K,GAIIsxa,EAAkB,IAAIA,EAAiBd,GACvCD,EAAYC,GAAgB,IAAIC,cAAc,CAC1Chza,KAAM,yBACNhC,KAAKwvB,OACTulZ,IACAwB,EAA2BV,EAAgBv2a,OAAS,EACpDs1a,EAAiBA,EAAer8Z,OAAOq8Z,EAAeA,EAAet1a,OAAS,IAC1Eu1a,IAAsBgB,EAAgBv2a,OAAS,GAC/Cu1a,IAEJ0B,EAA2Br8P,KAG3Bu9P,IAEJ,WAEC3D,MAEDgB,EAAc,CAAE,EAAGuC,WAAWtpR,cAC9BgnR,EAAe,EACfc,EAAkB,CAAC,GACnBY,EAAmB,GACnBD,EAAiBU,GACjBrC,EAAoB,EACpBD,EAAiB,GACjB,WAECZ,OACDyD,IACA,WAEC1D,SAGDe,EAAc,CAAE,EAAGuC,WAAWtpR,cAC9BgnR,EAAe,EACfc,EAAkB,CAAC,GACnBY,EAAmB,GACnB5B,EAAoB,EACpBD,EAAiB,GACjB,WAECV,cAAe,CAGhB,MAAQt0a,GAAI60a,GAAaqB,EAGrBW,GADU,IAAV1qZ,EAD2B5nB,QAAQswa,GAEhB,CAACA,KAAagC,GAGdA,EAAiBxja,OAAQrT,GAAOA,IAAO60a,GAG9D8B,EAA2BV,EAAgB1xa,QAAQswa,GACnD,WAECN,mBAAoB,CAGrB,MAAQ3hX,QAAOyE,OAAK+hF,UAAW88R,EACzB4B,EAAY,GAClB,QAASvra,GAAIqmD,EAAOrmD,GAAI8qD,GAAK9qD,KACzBura,EAAUjoa,KAAKtD,IAEfsqa,EADAz9R,EACmB2rB,WAAW8xQ,EAAkBiB,GAG7B,IAAIjB,KAAqBiB,GAGhDnB,EAA2BV,EAAgB1xa,QAAQquD,GACnD,WAEC4hX,cAGDS,EAAoBiB,EAAa/pZ,MAEjCwqZ,EAA2Br8P,IAC3B,WAECm6P,eAAgB,CAGjB,MAAMtoZ,EAAQ8pZ,EAAgB1xa,QAAQ2xa,EAAarB,WACrC,IAAV1oZ,IACA8oZ,EAAoB9oZ,GACxBwqZ,EAA2Br8P,IAC3B,WAEC+5P,MAED4B,EAAkBlxQ,WAAWkxQ,EAAiBY,GAC9CA,EAAmB,GACnB5B,EAAoB99Z,KAAKqkC,IAAIy5X,EAAmBgB,EAAgBv2a,OAAS,GACzE,WAECs0a,eAAgB,CAEjB,GAAIt8K,EACA,OAAOq9K,GAAe2C,GAE1B,GAAIZ,GACC/B,GACGoB,iBAAiBpB,EAAYC,eAAeC,GAAoBiB,EAAcr0a,EAAQ83J,UAAW93J,EAAQ8za,gBAAiB9za,EAAQ+wJ,kBAAoB,CAK1J,MAAMmlR,GAAY/C,EAAeA,EAAet1a,OAAS,GACzDs1a,EAAiB,IACVA,EAAenwa,MAAM,GAAG,GAC3Bwya,iBAAiB76T,EAAS05T,EAAax0Z,OAAQq2Z,GAAUvlZ,MAAOulZ,GAAUx4a,MAAOisH,IAErFmrT,EAA2Br8P,IAC3B,MAGAz4K,EAAQ8wJ,QAAUsjR,EAAgBv2a,SAAWmC,EAAQ8wJ,QACrDqlR,EAAoB,GAEpB/C,IAAsBgB,EAAgBv2a,OAAS,GAC/Cu1a,IAEJ,MAAMJ,EAAWM,IAGjBD,EAAYL,GAAYqB,EACxBD,EAAkB,IAAIA,EAAiBpB,GAEvC8B,EAA2BV,EAAgBv2a,OAAS,EACpD,WAECg1a,eAGG8C,eACAtC,cACAC,eACAc,kBACAY,mBACAD,iBACA3B,oBACAD,iBACAt9K,WACAo/K,YACAZ,EAAapB,iBACjB,WAECr4T,4CAEDk6T,EAA2B,EACvB90a,EAAQ8wJ,QAAUsjR,EAAgBv2a,OAASmC,EAAQ8wJ,SAEnDqiR,EAAiBiD,gBAAgBjD,EAAgB2B,EAA0Bn6T,EAASo6T,EAAgB1B,EAAae,EAAiBY,EAAkBrrT,EAAcsrT,GAClKkB,EAAoB/B,EAAgBv2a,OAASmC,EAAQ8wJ,QAErDgkR,EAA2Br8P,KAE/B,WAEC49P,4CAED,GADuBlD,EAAe3ha,OAAQmf,IAAUA,GAAMjzB,OAAOG,OAAS,EAG1Ei3a,EAA2B,EACvB90a,EAAQ8wJ,QAAUsjR,EAAgBv2a,OAASmC,EAAQ8wJ,SAEnDqiR,EAAiBiD,gBAAgBjD,EAAgB2B,EAA0Bn6T,EAASo6T,EAAgB1B,EAAae,EAAiBY,EAAkBrrT,EAAcsrT,GAClKkB,EAAoB/B,EAAgBv2a,OAASmC,EAAQ8wJ,QAErDgkR,EAA2Br8P,SAG9B,CAGD,IAAKw8P,IAAap/K,EAAU,CACpBu9K,IAAsBgB,EAAgBv2a,OAAS,GAC/Cu1a,IAGJ,MAAMJ,GAAWM,IACjBD,EAAYL,IAAY,IAAIO,cAAcc,GAAe91a,KAAKwvB,OAC9DqmZ,EAAkB,IAAIA,EAAiBpB,IACvC8B,EAA2BV,EAAgBv2a,OAAS,EACpDs1a,EAAiBiD,gBAAgBjD,EAAgB2B,EAA0Bn6T,EAASo6T,EAAgB1B,EAAae,EAAiBY,EAAkBrrT,EAAcsrT,GAGtK9B,EAAiBA,EAAetwa,IAAKmnY,IAAShrY,OAAOc,OAAOd,OAAOc,OAAO,GAAIkqY,IAAM,CAAEr5W,MAAOgqF,EAAQqvR,GAAIr5W,MAAOikZ,qBAChHxB,EAAoBgB,EAAgBv2a,OAAS,EACzCmC,EAAQ8wJ,QAAUsjR,EAAgBv2a,OAASmC,EAAQ8wJ,QACnDqlR,EAAoB/B,EAAgBv2a,OAASmC,EAAQ8wJ,QAGzDgkR,EAA2Br8P,IAE/B,cAKAq8P,EAA2Br8P,IAInC06P,SAAiBiD,gBAAgBjD,EAAgB2B,EAA0Bn6T,EAASo6T,EAAgB1B,EAAae,EAAiBY,EAAkBrrT,EAAcsrT,GAClKU,EAAeD,EAAeC,EAActB,GACrC,CACHsB,eACAtC,cACAC,eACAc,kBACAY,mBACAD,iBACA3B,oBACAD,iBACAt9K,WACAo/K,iBAKNqB,yBAAN,iBAAiCC,6CAEKD,UAAmBlya,UAAnB,oDAAqGtG,+CAAUw4a,MAA/GzpY,GAA+GypY,KAA/G,GACAA,GAAmB/xa,WADkFzG,+CACrG,OAAmHw4a,GAAnHv4a,QAAmHu4a,GAAnH,YAHhCA,OAQN,MAAME,qBAAuB,CACzBC,MAAO,QACPC,SAAU,WACVC,KAAM,OACNC,OAAQ,UAENC,yBAA2B,IAAIp1a,+CAAe,qDAC9Cq1a,wBAAN,wBACI/5a,YAAYg6a,GAAmBp1a,GAAQq1a,GACnC55a,KAAKuE,OAASA,GACdvE,KAAK45a,WAAaA,EAClB55a,KAAK25a,kBAAoBA,GACzB35a,KAAK65a,sBAET1rS,OAAO1rH,GAAQ8Q,IACX,GAAKvzB,KAAK25a,kBAgBV,GAAIl3Z,GAAOtf,OAAS4xa,eAAgB,CAChC,GAAIxhZ,GAAMklO,UAAYllO,GAAMskZ,SACxB,OAEJ,MAAM72D,EAAe84D,YAAYvmZ,IACjC,GAAIwmZ,oBAAoB/5a,KAAKuE,SACzB2ya,iBAAiBl2D,EAAcv+V,GAAQziB,KAAKuE,OAAOm2J,UAAW16J,KAAKuE,OAAOmya,gBAAiB12a,KAAKuE,OAAOovJ,kBACvG,OAEJ,MAAMqmR,EAAiBh6a,KAAKuE,OAAOgwa,eAC7BiC,cAAcx2a,KAAKuE,OAAOgwa,eAAgBvzD,EAAcztV,GAAMyiZ,mBAC9Dh1D,EACAi5D,EAAkBj6a,KAAKuE,OAAO+va,gBAC9BgC,eAAet2a,KAAKuE,OAAO+va,gBAAiB7xZ,GAAQ8Q,GAAM2iZ,cAC1DzzZ,GACNziB,KAAKk6a,oBAAoB,IAAMl6a,KAAKm6a,oBAAoBv3M,KAAKq3M,EAAiBD,QAE7E,CAED,MAAMI,EAAuBx4a,OAAOc,OAAOd,OAAOc,OAAO,GAAI6wB,IAAQ,CAAEyjZ,gBAAiBzjZ,GAAMyjZ,gBAAiBf,YAAaj2a,KAAKuE,OAAO+va,gBAC9H+F,gBAAgBr6a,KAAKuE,OAAO+va,gBAAiB/gZ,GAAM0iZ,aACnD1iZ,GAAM0iZ,YAAaF,eAAgB/1a,KAAKuE,OAAOgwa,eAC/C+F,eAAet6a,KAAKuE,OAAOgwa,eAAgBhhZ,GAAMwiZ,gBACjDxiZ,GAAMwiZ,iBAChB/1a,KAAKk6a,oBAAoB,IAAMl6a,KAAK25a,kBAAkB/2M,KAAK,KAAMw3M,EAAsBp6a,KAAKu6a,mBAAmBv6a,KAAKuE,WAG5Hi2a,0BACI,OAAKx6a,KAAK25a,kBAGH,IAAI56V,oCAAYmvD,KACnB,MAAMmzF,GAAarhO,KAAK25a,kBAAkBpyL,QAAQvnP,KAAKu6a,mBAAmBv6a,KAAKuE,SAC/E,YAAK41a,oBAAsB94M,GAC3BA,GAAW5+N,OACX4+N,GAAW15N,UAAW8nF,GAAWy+C,GAAWhqI,KAAKurF,IAC1C4xI,GAAWj1N,cAPXshI,oCAUfmsS,sBAEI,MAAMY,GAAWz6a,KAAKw6a,0BAA0B1va,MAAKo3N,oDAE/Cw4M,GAASD,GAAS3va,MAAKsJ,iDAAQq7E,GAAWA,EAAOtsF,OAASi2a,qBAAqBC,QAE/EsB,EAAQF,GAAS3va,MAAKsJ,iDAAQq7E,GAAWA,EAAOtsF,OAASi2a,qBAAqBG,OAE9EqB,EAAiBH,GAAS3va,MAAKsJ,iDAAQq7E,GAAWA,EAAOtsF,OAASi2a,qBAAqBE,WAAW7za,iDAAKgqF,GAAWzvF,KAAK66a,aAAaprV,EAAO/kD,WAAW4jP,iDAAW7rQ,GAC/JA,EAAOtf,OAASsya,aASTz1a,KAAK45a,WAAW9ua,MAAKsJ,iDAAQqO,GAAWA,EAAOtf,OAAS81a,8CAASv4V,iDAAQ,MAAOruC,iDAAa,MAAO5sC,iDAAI,IAAMgd,IAASvX,kDAAW,KAAMC,yCAAGsX,KAAUguB,kDAAK,KAG1JtlC,yCAAGsX,KAKZq4Z,EAAoBrhS,GADA3uI,MAAKsJ,iDAAQq7E,GAAWA,EAAOtsF,OAASi2a,qBAAqBI,SAAS/za,iDAAKgqF,GAAWzvF,KAAK66a,aAAaprV,EAAO/kD,WACtG5/B,MAAK46O,kDAAUi1L,IAC5CI,EAAmBH,EAAe9va,MAAK46O,kDAAUi1L,IACvD36a,KAAK06a,OAASA,GAAO5va,MAAK46O,kDAAUi1L,IAEpC36a,KAAKy5I,SAAWz5I,KAAK06a,OAAO5va,MAAKknC,kDAAU,IAAM8oY,IACjD96a,KAAK46a,eAAiB56a,KAAK06a,OAAO5va,MAAKknC,kDAAU,IAAM+oY,IAE3DF,aAAap4Z,QACT,MAAyB,iBAAXA,OAAsBuqK,KAAM,IAAGvqK,WAAaA,OAE9D83Z,mBAAmBh2a,IACf,IAAIyD,GACJ,MAAMgza,EAAmB,CACrB7sa,KAAM5J,GAAO4J,KACbs3J,SAAUlhK,GAAOkhK,SACjB9vB,UAAWpxI,GAAOoxI,UAClB8+R,UAAuC,QAA3Bzsa,GAAKzD,GAAOkwa,iBAA8B,IAAPzsa,IAAgBA,IASnE,OAAsB,IAAlBzD,GAAOmvJ,SACPsnR,EAAiBtnR,OAASnvJ,GAAOmvJ,QAE9BsnR,EAEXd,oBAAoBt3M,IAChB,IACIA,WAEGjtN,IACHpM,QAAQlJ,KAAK,uEAAwEsV,MAI3D+ja,yBAAkB1ya,UAAlB,+BAA8G0ya,mBA7ITh5a,+CA6I4C+4a,0BA7I5C/4a,+CA6IiFsza,uBA7IjFtza,+CA6ImHw4a,sBACxNQ,kBAAkBvya,WA9ImFzG,+CA8IrG,OAAkHg5a,kBAAlH/4a,QAAkH+4a,kBAAlH,YAjIhCA,sBA8IAuB,oBAAN,SACIt7a,YAAYi6a,EAAYngS,EAAUyhS,EAAWC,EAAWC,EAAgB7uT,EAAcxrC,EAAcx8E,GAChG,MAAM82a,EAAqBC,iBAAiBv6V,EAAcx8E,EAAOg5E,SAC3Dg+V,EAAcC,gBAAgBz6V,EAAcs6V,EAAoB9uT,EAAchoH,EAAOg5E,QAASh5E,GAC9Fk3a,GAAgBpoY,yCAAMA,wCAAMomG,EAAS31I,eAAegH,MAAKy1L,kDAAK,IAAK46O,EAAU1hS,UAAU3uI,MAAKrF,iDAAI+ya,aAAcoB,EAAYuB,EAAUP,gBAAgB9va,MAAKuwN,kDAAUyJ,uCACnK42M,EAAiBR,EAAUpwa,MAAKrF,iDAAI81a,IACpCI,EAAqB,IAAIrsZ,qCAAc,GACvCssZ,EAA0BH,EAC3B3wa,MAAKitI,kDAAe2jS,IAAiBnoY,kDAAK,EAAGhgB,MAAOuiZ,IAAgBrzZ,EAAQ86F,MAC7E,IAAIs+T,GAAqBt+T,EAAQu4T,EAAarzZ,GAG9C,OAAIA,EAAOtf,OAAS4xa,gBAAkBgF,oBAAoBx1a,KACtDs3a,GAAqBC,kBAAkBD,GAAoBt3a,EAAOm2J,UAAWn2J,EAAOmya,gBAAiBnya,EAAOovJ,mBAGhHwnR,EAAUhtS,OAAO1rH,EAAQo5Z,IAClB,CAAEtoZ,MAAOsoZ,GAAoBp5Z,WACrC,CAAE8Q,MAAO8nZ,EAAoB54Z,OAAQ,QACnC9a,UAAU,EAAG4rB,QAAO9Q,aACrBk5Z,EAAmBz3a,KAAKqvB,GACpB9Q,EAAOtf,OAAS4xa,gBAEhBqG,EAAel3a,KADQue,EAAOA,UAIhCs5Z,EAA6BZ,EAAUT,OAAO/ya,UAAU,KAC1D3H,KAAKg8a,YAEHC,EAAeN,EAAmB73a,eAClC6mD,EAASsxX,EAAanxa,MAAKrF,iDAAIq0a,cACrC95a,KAAK+7a,2BAA6BA,EAClC/7a,KAAKk8a,kBAAoBN,EACzB57a,KAAK45a,WAAaA,EAClB55a,KAAK81a,YAAcmG,EACnBj8a,KAAKuzB,MAAQo3B,EAEjBxqB,SAAS1d,GACLziB,KAAK45a,WAAW11a,KAAKue,GAEzBve,KAAKue,GACDziB,KAAK45a,WAAW11a,KAAKue,GAEzBniB,MAAMA,IACN2/E,YACAk8V,cAAc15Z,GACVziB,KAAKmgC,SAAS,IAAIg2Y,cAAc1zZ,GAASthB,KAAKwvB,QAElDqrZ,UACIh8a,KAAKmgC,SAAS,IAAIi8Y,SAEtBtxX,QACI9qD,KAAKmgC,SAAS,IAAIk8Y,OAAOl7a,KAAKwvB,QAElC2rZ,WACIt8a,KAAKmgC,SAAS,IAAIo8Y,UAAUp7a,KAAKwvB,QAErCg6L,SACI3qN,KAAKmgC,SAAS,IAAIq8Y,QAAQr7a,KAAKwvB,QAEnC8rZ,QACIz8a,KAAKmgC,SAAS,IAAIu8Y,OAEtBC,aAAa57a,GACTf,KAAKmgC,SAAS,IAAIy8Y,aAAa77a,IAEnC87a,aAAajH,GACT51a,KAAKmgC,SAAS,IAAI28Y,aAAalH,IAEnCmH,YAAY7vZ,GACRltB,KAAKmgC,SAAS,IAAI68Y,YAAY9vZ,IAElC+vZ,YAAYpH,GACR71a,KAAKmgC,SAAS,IAAI+8Y,YAAYrH,IAElCsH,YAAY5sa,GACRvQ,KAAKmgC,SAAS,IAAIi9Y,YAAY7sa,IAElC8sa,eAAe9sa,GACXvQ,KAAKmgC,SAAS,IAAIm9Y,eAAe/sa,KAGH0qa,UAAcj0a,UAAd,0BAA0Gi0a,IA7OLv6a,+CA6OoCw4a,oBA7OpCx4a,+CA6OmEgwF,6CA7OnEhwF,+CA6OiGgwF,6CA7OjGhwF,+CA6OkIg5a,mBA7OlIh5a,+CA6OgKgwF,6CA7OhKhwF,+CA6OqMA,gDA7OrMA,+CA6OiO68a,6CA7OjO78a,+CA6O2Psza,yBAChWiH,GAAc9za,WA9OuFzG,+CA8OrG,OAA8Gu6a,GAA9Gt6a,QAA8Gs6a,GAA9G,YAnFhCA,OAgGN,MAAMuC,gCAAkC,IAAIn5a,+CAAe,iEAC3D,2CAA2C82a,GAAW52a,IAClD,OAAO8rD,QAAQ8qX,KAAc52a,GAAOg5E,UAAY82V,UAEpD,wCACI,MAAMoJ,GAAe,+BACrB,MAAsB,iBAAX1nZ,aACyB,IAAzBA,OAAO0nZ,IACP1nZ,OAAO0nZ,IAGP,KAGf,+BAA+BC,IAC3B,OAAOA,GAASnqZ,UAEdkgI,0BAAN,SAA0B98H,kBACJ/zB,EAAU,IACxB,MAAO,CACHgyI,SAAU6e,GACV9kE,UAAW,CACP+qV,kBACAR,mBACA+B,cACA,CACI14V,QAAS0xV,gBACTzxV,SAAU5/E,GAEd,CACI2/E,QAASi7V,gCACTlyV,KAAM,CAACmuV,yBAA0BzF,uBACjCxoV,WAAYmyV,mCAEhB,CACIp7V,QAASk3V,yBACTjuV,WAAYoyV,8BAEhB,CACIr7V,QAASyxV,sBACT1oV,KAAM,CAAC2oV,iBACPzoV,WAAYqyV,cAEhB,CACIt7V,QAASu7V,4CACTxyV,KAAM,CAAC2vV,eACPzvV,WAAYuyV,uBAEhB,CACIx7V,QAASy7V,4CACT13Q,YAAa4yQ,uBAMKzlR,UAAoBzsJ,UAApB,0BAAgHysJ,KAChHA,GAAoBrxE,UApTiF1hF,+CAoTrG,MAAiH+yJ,KACjHA,GAAoBpxE,UArTiF3hF,+CAqTrG,IAzChC+yJ,8WC/3BN,MAAMwqR,EAA0B,GA+EhC,WAAsB96a,GAAMoB,IAExB,GADA05a,EAAwB96a,KAAS86a,EAAwB96a,KAAS,GAAK,EACjD,mBAAXoB,GACP,OAAO25a,EAAW/6a,GAAM,IAAIiwD,KAAUxxD,OAAOc,OAAOd,OAAOc,OAAO,GAAI6B,MAAU6uD,KAAQ,CAAEjwD,WAG9F,OADWoB,GAASA,GAAO45a,IAAM,aAExB,QACD,OAAOD,EAAW/6a,GAAM,KAAO,CAAEA,eAChC,QACD,OAAO+6a,EAAW/6a,GAAOi6F,IAAWx7F,OAAOc,OAAOd,OAAOc,OAAO,GAAI06F,IAAQ,CAAEj6F,mBAE9E,MAAM,IAAI0B,MAAM,uBAG5B,aAEI,MAAO,CAAEs5a,IAAK,QAAS3vR,QAAIvrJ,GAM/B,WAAoBE,GAAMi7a,IACtB,OAAOx8a,OAAOyY,eAAe+ja,GAAS,OAAQ,CAC1C78a,MAAO4B,GACP+wD,UAAU,IAoElB,MAAMspD,GAAO,uBACP27T,SAAN,iBAA6B3xa,IACzB7H,cACI4zD,MAAM,CAAEpwD,KAAMq6G,KAElBt5G,KAAKue,IACD,GAAsB,mBAAXA,GACP,MAAM,IAAI+sG,UAAW,uPAKpB,QAAsB,IAAX/sG,GACZ,MAAM,IAAI+sG,UAAW,2BAEpB,QAA2B,IAAhB/sG,GAAOtf,KACnB,MAAM,IAAIqsH,UAAW,qCAEzBj8D,MAAMrvD,KAAKue,IAEfw9D,YAGA/zE,cACIqnD,MAAM0sB,YAGwBk5V,UAAenya,UAAf,4BAA2Gmya,KAC3GA,GAAehya,WADkFzG,MACjG,OAA+Gy4a,GAA/Gx4a,QAA+Gw4a,GAA/G,YA3BhCA,OA+BN,MAAMkF,EAA4B,CAAClF,IAE7BmF,GAAoB,IAAIj6a,MAAe,mCACvCk6a,GAAiB,IAAIl6a,MAAe,sCACpCk5a,EAAgB,IAAIl5a,MAAe,6BACnCm6a,GAAkB,IAAIn6a,MAAe,+BACrCo6a,GAAmB,IAAIp6a,MAAe,iDACtCq6a,GAAmB,IAAIr6a,MAAe,gCACtCs6a,GAAoB,IAAIt6a,MAAe,yCACvCu6a,GAAiB,IAAIv6a,MAAe,8BACpCw6a,GAAkB,IAAIx6a,MAAe,uCACrCy6a,GAAoB,IAAIz6a,MAAe,yCACvC06a,GAAmB,IAAI16a,MAAe,wCACtC26a,GAAkB,IAAI36a,MAAe,uCACrC46a,GAA0B,IAAI56a,MAAe,+CAC7C66a,GAAmB,IAAI76a,MAAe,gCAItC86a,GAA8B,IAAI96a,MAAe,2CAIjD+6a,GAAgB,IAAI/6a,MAAe,6BAKnCg7a,GAA0B,IAAIh7a,MAAe,+CAK7Ci7a,GAAsB,IAAIj7a,MAAe,0CAIzCk7a,GAAuB,IAAIl7a,MAAe,mDAI1Ci1I,GAAwB,IAAIj1I,MAAe,uCAC3Cm7a,GAAgC,IAAIn7a,MAAe,gDAmCzD,YAAyBqsJ,GAAU3vE,GAAe,IAC9C,MAAM0+V,GAAc79a,OAAOgqC,KAAK8kH,IAC1BgvR,GAAgB,GACtB,QAASpya,GAAI,EAAGA,GAAImya,GAAYh/a,OAAQ6M,KAAK,CACzC,MAAMzK,GAAM48a,GAAYnya,IACK,mBAAlBojJ,GAAS7tJ,MAChB68a,GAAc78a,IAAO6tJ,GAAS7tJ,KAGtC,MAAM88a,GAAmB/9a,OAAOgqC,KAAK8zY,IACrC,OAAO,SAAqBnsZ,GAAO9Q,IAC/B8Q,QAAkBtwB,IAAVswB,GAAsBwtD,GAAextD,GAC7C,IAAIqsZ,IAAa,EACjB,MAAMhuR,GAAY,GAClB,QAAStkJ,GAAI,EAAGA,GAAIqya,GAAiBl/a,OAAQ6M,KAAK,CAC9C,MAAMzK,GAAM88a,GAAiBrya,IAEvBuya,GAAsBtsZ,GAAM1wB,IAC5Bi9a,IAAkBviU,EAFRmiU,GAAc78a,KAEEg9a,GAAqBp9Z,IACrDmvI,GAAU/uJ,IAAOi9a,GACjBF,GAAaA,IAAcE,KAAoBD,GAEnD,OAAOD,GAAahuR,GAAYr+H,IAQxC,eAAoB+sL,IAChB,OAAO,SAAU98I,IACb,GAAyB,IAArB88I,GAAU7/M,OACV,OAAO+iE,GAEX,MAAMpmB,GAAOkjK,GAAUA,GAAU7/M,OAAS,GAE1C,OAAOk+H,GADgB/4H,MAAM,GAAG,GACpBghN,YAAY,CAACm5N,GAAUj0Z,KAAOA,GAAGi0Z,IAAW3iY,GAAKomB,MAGrE,YAA8Bw8W,GAAgBlvR,IAC1C,OAAItrJ,MAAM0L,QAAQ4/I,KAAiBA,GAAarwJ,OAAS,IACrDu/a,GAAiB9vS,GAAQllI,MAAM,KAAM,IAC9B8lJ,GACHkvR,MAGD,CAACtvR,GAAU3vE,MACd,MAAMw8B,GAAUyiU,GAAetvR,IAC/B,MAAO,CAACn9H,GAAO9Q,KAEJ86F,GADPhqF,QAAkBtwB,IAAVswB,GAAsBwtD,GAAextD,GACvB9Q,KAiBlC,iBAAgCs8D,KAEhC,iBAAuCo6V,IAEvC,MAAMF,GAAS,kCACTgH,SAAN,iBAA6Bz4a,IACzB7H,YAAYi6a,GAAY74V,GAAc2vE,GAAUsvR,IAC5CzsX,MAAMysX,GAAetvR,GAAU3vE,KAC/B/gF,KAAK45a,WAAaA,GAClB55a,KAAK+gF,aAAeA,GACpB/gF,KAAK0wJ,SAAWA,GAChB1wJ,KAAKggb,eAAiBA,GAEtBE,sBACA,OAAOlgb,KAAK0wJ,SAEhByvR,WAAW7oJ,IACPt3R,KAAKogb,YAAY,CAAC9oJ,KAEtB8oJ,YAAY36Q,IACR,MAAM/U,GAAW+U,GAASvrJ,OAAO,CAACmma,IAAe3vR,YAAUsvR,kBAAgBlvR,gBAAc/vE,gBAAcl+E,WACnG,MAAM06G,GAA8B,mBAAbmzC,GAlCnC,YAAqCI,IACjC,MAAMkvR,GAAiBx6a,MAAM0L,QAAQ4/I,KAAiBA,GAAarwJ,OAAS,EACtEyvI,MAAW4gB,IACVi2E,IAAMA,GACb,MAAO,CAACxpH,GAASx8B,MACbw8B,GAAUyiU,GAAeziU,IAClB,CAAChqF,GAAO9Q,KAEJ86F,GADPhqF,QAAkBtwB,IAAVswB,GAAsBwtD,GAAextD,GACvB9Q,KA2BhB69Z,CAA4BxvR,GAA5BwvR,CAA0C5vR,GAAU3vE,IACpDw/V,GAAqBP,GAAgBlvR,GAArCyvR,CAAmD7vR,GAAU3vE,IACnEs/V,UAAYx9a,IAAO06G,GACZ8iU,IACR,IACHrgb,KAAKwgb,YAAY9vR,IAErB+vR,cAAcnpJ,IACVt3R,KAAK0gb,eAAe,CAACppJ,KAEzBopJ,eAAej7Q,IACXzlK,KAAK2gb,eAAel7Q,GAAShgK,IAAKsC,IAAMA,GAAElF,MAE9C+9a,WAAW/9a,GAAK06G,IACZv9G,KAAKwgb,YAAY,EAAG39a,IAAM06G,KAE9BijU,YAAY9vR,IACR1wJ,KAAK0wJ,SAAW9uJ,OAAOc,OAAOd,OAAOc,OAAO,GAAI1C,KAAK0wJ,UAAWA,IAChE1wJ,KAAK6gb,eAAej/a,OAAOgqC,KAAK8kH,KAEpCowR,cAAcC,IACV/gb,KAAK2gb,eAAe,CAACI,KAEzBJ,eAAeK,IACXA,GAAYh/Z,QAASnf,KACjB7C,KAAK0wJ,SA1FjB,YAAcxiC,GAAQ+yT,IAClB,OAAOr/a,OAAOgqC,KAAKsiF,IACd95G,OAAQvR,IAAQA,KAAQo+a,IACxB/ma,OAAO,CAACjJ,GAAQpO,KAAQjB,OAAOc,OAAOuO,GAAQ,EAAGpO,IAAMqrH,GAAOrrH,MAAS,IAuFpDy4M,CAAKt7M,KAAK0wJ,SAAU7tJ,MAExC7C,KAAK6gb,eAAeG,IAExBH,eAAeG,IACXhhb,KAAKkE,KAAKlE,KAAKggb,eAAehgb,KAAK0wJ,SAAU1wJ,KAAK+gF,eAClD/gF,KAAK45a,WAAW11a,KAAK,CACjBf,KAAM81a,GACNxzQ,SAAUu7Q,KAGlB90a,cACIlM,KAAKigF,YAGyBggW,UAAej5a,UAAf,4BAA2Gi5a,IApNVv/a,MAoN0Cs9a,IApN1Ct9a,MAoN+E68a,GApN/E78a,MAoNyGg+a,IApNzGh+a,MAoNsI89a,MACvOyB,GAAe94a,WArNkFzG,MAqNjG,OAA+Gu/a,GAA/Gt/a,QAA+Gs/a,GAA/G,YA1DhCA,OAyEN,MAAMiB,GAA4B,CAC9BjB,GACA,CAAE19V,QAAS4+V,GAAmB76Q,YAAa25Q,IAC3C,CAAE19V,QAASy7V,GAA0B13Q,YAAa6yQ,SAGhDznS,SAAN,iBAAoChuI,IAChCwI,cACIlM,KAAKigF,YAGyByxD,UAAsB1qI,UAAtB,qDA/OiGtG,MA+OiBgxI,MAAlH0vS,IAAkH1vS,KAAlH,GACAA,GAAsBvqI,WAhP2EzG,MAgPjG,OAAsHgxI,GAAtH/wI,QAAsH+wI,GAAtH,YANhCA,OAUN,MAAM2vS,GAAoC,CACtC3vS,IAGJ,iBAA8B3yD,SAExBuiW,SAAN,iBAAoB95a,IAChB7H,YAAY85I,GAAU8nS,GAAUnG,GAAgBr6V,IAC5CxtB,MAAMwtB,IAEN,MAEMygW,GAFqBC,GADM32a,MAAKuwN,OAAUyJ,MACLh6N,MAAKitI,OAAewpS,KAEpBz2a,MAAKyoC,OAAKmuY,GADxC,CAAEnuZ,MAAOwtD,MAEtB/gF,KAAKk8a,kBAAoBsF,GAAgB75a,UAAU,EAAG4rB,SAAO9Q,cACzDziB,KAAKkE,KAAKqvB,IACV6nZ,GAAel3a,KAAKue,MAG5BvW,cACIlM,KAAKk8a,kBAAkB9va,cACvBpM,KAAKigF,YAGbqhW,UAAM9jU,KAAOA,GACyB8jU,GAAMt6a,UAAN,4BAAkGs6a,IA5QD5gb,MA4QwBy4a,IA5QxBz4a,MA4QmDygb,IA5QnDzgb,MA4QiFgxI,IA5QjFhxI,MA4QmH68a,KACpN+D,GAAMn6a,WA7Q2FzG,MA6QjG,OAAsG4gb,GAAtG3gb,QAAsG2gb,GAAtG,YAnBhCA,OA4BN,YAAqBK,GAAkB,CAAEpuZ,WAAOtwB,IAAcwf,GAAQ86F,KAClE,MAAQhqF,UAAUouZ,GAClB,MAAO,CAAEpuZ,MAAOgqF,GAAQhqF,GAAO9Q,IAASA,WAE5C,MAAMm/Z,EAAkB,CACpBN,GACA,CAAE/+V,QAASu7V,GAAiBx3Q,YAAag7Q,SAIvCO,SAAN,iBAAoB9iW,IAChBp/E,YAAYgrD,GAAQm3X,GAAiBC,IACjCxuX,QACAvzD,KAAK8hb,gBAAkBA,GACvB9hb,KAAK+hb,eAAiBA,GACtB/hb,KAAK8Z,OAAS6wC,GAElBpvB,OAAOymZ,MAAgBpmT,IACnB,OAAOrgG,GAAOz5B,KAAK,KAAMkgb,MAAgBpmT,GAAlCrgG,CAAyCv7B,MAEpDuxI,KAAKC,IACD,MAAMn2G,GAAQ,IAAIwmZ,GAAM7hb,KAAMA,KAAK8hb,gBAAiB9hb,KAAK+hb,gBACzD1mZ,UAAMm2G,SAAWA,GACVn2G,GAEX8E,SAAS1d,IACLziB,KAAK8hb,gBAAgB59a,KAAKue,IAE9Bve,KAAKue,IACDziB,KAAK8hb,gBAAgB59a,KAAKue,IAE9BniB,MAAMqV,IACF3V,KAAK8hb,gBAAgBxhb,MAAMqV,IAE/BsqE,WACIjgF,KAAK8hb,gBAAgB7hW,WAEzB2gW,WAAW/9a,GAAK06G,IACZv9G,KAAK+hb,eAAenB,WAAW/9a,GAAK06G,IAExCujU,cAAcj+a,IACV7C,KAAK+hb,eAAejB,cAAcj+a,KAGJg/a,UAAM76a,UAAN,4BAAkG66a,IAlUDnhb,MAkUwBo9a,IAlUxBp9a,MAkUoDy4a,IAlUpDz4a,MAkU+Eu/a,MAChL4B,GAAM16a,WAnU2FzG,MAmUjG,OAAsGmhb,GAAtGlhb,QAAsGkhb,GAAtG,YAnChCA,OAuCN,MAAMI,GAAkB,CAACJ,IACzB,YAAgBG,GAAaE,MAAgBtmT,IACzC,OAAO,SAAwB+W,IAC3B,IAAI28P,GACJ,GAA2B,iBAAhB0yC,GAA0B,CACjC,MAAMG,GAAa,CAACD,MAAgBtmT,IAAOxnH,OAAOi8C,SAClDi/U,GAAU38P,GAAQ7nI,KCzhBvB,cAAkBq0M,IACrB,MAAM1+M,GAAS0+M,GAAW1+M,OAC1B,GAAe,IAAXA,GACA,MAAM,IAAIoE,MAAM,uCAEpB,OAAOY,OAAKmC,KACR,IAAIw6a,GAAcx6a,GAClB,QAAS0F,GAAI,EAAGA,GAAI7M,GAAQ6M,KAAK,CAC7B,MAAMvF,GAAoB,MAAhBq6a,QAAiD,EAASA,GAAYjjO,GAAW7xM,KAC3F,QAAiB,IAANvF,GAIP,OAHAq6a,GAAcr6a,GAMtB,OAAOq6a,KDygBoBC,CAAML,MAAgBG,aAEjB,mBAAhBH,GAIZ,MAAM,IAAIxyT,UAAW,2BAA0BwyT,2DAH/C1yC,GAAU38P,GAAQ7nI,MAAKrF,OAAKqU,IAAWkoa,GAAYloa,GAAQooa,MAM/D,OAAO5yC,GAAQxkY,MAAKsyI,WAI5B,MAAMklS,GAAoB,2DAC1B,YAAqBlxa,IACjB,YAAkBnO,IAAXmO,GAEX,YAAgBA,IACZ,OAAkB,OAAXA,GAEX,YAAiBA,IACb,OAAO5L,MAAM0L,QAAQE,IAWzB,YAAsBA,IAClB,MAAyB,iBAAXA,IAAkC,OAAXA,GAYzC,YAAoBA,IAChB,MAAyB,mBAAXA,GAalB,cACI,OALuB,MAQ3B,YAAsBob,GAAGnD,IACrB,OAAOmD,KAAMnD,GAEjB,YAA4B+pC,GAAMmvX,GAAelpP,IAC7C,QAAS/rL,GAAI,EAAGA,GAAI8lD,GAAK3yD,OAAQ6M,KAC7B,IAAK+rL,GAAWjmI,GAAK9lD,IAAIi1a,GAAcj1a,KACnC,OAAO,EAGf,OAAO,EAKX,YAAwBk1a,GAAcC,GAAmBC,GAAcC,GAAgBD,IACnF,IAGIE,GAHAL,GAAgB,KAEhBM,GAAa,KAkCjB,MAAO,CAAEhqO,SApBT,cACI,QAAuB51M,IAAnB2/a,GACA,OAAOA,GAAe3xa,OAE1B,IAAKsxa,GACDM,UAAaL,GAAax3a,MAAM,KAAM+yD,WACtCwkX,GAAgBxkX,UACT8kX,GAEX,IAAKC,GAAmB/kX,UAAWwkX,GAAeE,IAC9C,OAAOI,GAEX,MAAME,GAAYP,GAAax3a,MAAM,KAAM+yD,WAE3C,OADAwkX,GAAgBxkX,UACZ4kX,GAAcE,GAAYE,IACnBF,IAEXA,GAAaE,GACNA,KAEQj4X,MAhCnB,cACIy3X,GAAgB,KAChBM,GAAa,MA8BSG,UA5B1B,YAAmB/xa,IACf2xa,GAAiB,CAAE3xa,YA2Bcgya,YAzBrC,cACIL,QAAiB3/a,IA0BzB,eAA2B4O,IACvB,OAwFJ,YAA+B+iM,GAAShyM,GAAU,CAC9Csgb,QAASC,KAET,OAAO,YAAatxa,IAChB,IAAIuhD,GAAOvhD,GACX,GAAIrM,MAAM0L,QAAQkiD,GAAK,IAAK,CACxB,MAAO2iC,MAASosH,IAAQ/uJ,GACxBA,GAAO,IAAI2iC,MAASosH,IAExB,MAAMrlK,GAAYsW,GAAKxtD,MAAM,EAAGwtD,GAAK3yD,OAAS,GACxC2ib,GAAYhwX,GAAKA,GAAK3yD,OAAS,GAC/B4ib,GAAoBvmY,GAAU1oC,OAAQwyE,IAAaA,GAAS+sC,SAAuC,mBAArB/sC,GAAS+sC,SACvF2vT,GAAoB1uO,GAAQ,YAAa93J,IAC3C,OAAOsmY,GAAUp4a,MAAM,KAAM8xC,MAE3BymY,GAAgBC,GAAe,SAAUjwZ,GAAO6pE,IAClD,OAAOx6F,GAAQsgb,QAAQl4a,MAAM,KAAM,CAC/BuoB,GACAupB,GACAsgD,GACAkmV,OAQR,OAAO1hb,OAAOc,OAAO6gb,GAAc1qO,SAAU,CACzCllF,QANJ,cACI4vT,GAAcz4X,QACdw4X,GAAkBx4X,QAClBu4X,GAAkBrha,QAAS4kE,IAAaA,GAAS+sC,YAIjDyvT,UAAWE,GAAkBzqO,SAC7BmqO,UAAWO,GAAcP,UACzBC,YAAaM,GAAcN,eAxH5BQ,CAAsBD,GAAtBC,IAAyC5xa,IAEpD,YAAwB0hB,GAAOupB,GAAWsgD,GAAOkmV,IAC7C,QAAcrgb,IAAVm6F,GAAqB,CACrB,MAAMhqC,GAAOtW,GAAUr3C,IAAKqmB,IAAOA,GAAGyH,KACtC,OAAO+vZ,GAAkBzqO,SAAS7tM,MAAM,KAAMooD,IAElD,MAAMA,GAAOtW,GAAUr3C,IAAKqmB,IAAOA,GAAGyH,GAAO6pE,KAC7C,OAAOkmV,GAAkBzqO,SAAS7tM,MAAM,KAAM,IAAIooD,GAAMgqC,KAoH5D,YAA+BsmV,IAC3B,OAAO/jV,GAAgBpsE,KACnB,MAAMowZ,GAAepwZ,GAAMmwZ,IAC3B,OAAgCnsS,cAAiBmsS,MAAenwZ,KAC5DhqB,QAAQlJ,KAAM,kCAAiCqjb,4JAGbA,wCACHA,yJAI5BC,IACPA,IAAiBA,IA0FzB,YAAgBvya,IACZxP,OAAO2tH,OAAOn+G,IACd,MAAMwya,GAAmBp2S,GAAWp8H,IACpCxP,cAAOqY,oBAAoB7I,IAAQ4Q,QAAS5H,KAExC,IAAIA,GAAKqD,WAAW,WA1S5B,YAAwBrM,GAAQ2wC,IAC5B,OAAOngD,OAAOC,UAAUyE,eAAexE,KAAKsP,GAAQ2wC,IA4S5Cz7C,CAAe8K,GAAQgJ,OACtBwpa,IACc,WAATxpa,IAA8B,WAATA,IAA8B,cAATA,IACnC,CACb,MAAMypa,GAAYzya,GAAOgJ,KACpB45C,GAAa6vX,KAAcr2S,GAAWq2S,OACtCjib,OAAO0tH,SAASu0T,KACjBt0T,GAAOs0T,OAIZzya,GAiBX,YAA2BA,GAAQ0M,GAAO,IAEtC,OAAKunM,GAAYj0M,KAAW+zM,GAAO/zM,MAA4B,IAAhB0M,GAAKrd,OACzC,CACHqd,KAAM,CAAC,QACPvc,MAAO6P,IAIRw6B,OADaA,KAAKx6B,IACb8I,OAAO,CAACjJ,GAAQpO,MACxB,GAAIoO,GACA,OAAOA,GAEX,MAAM1P,GAAQ6P,GAAOvO,IAErB,OA3VR,YAAqBuO,IACjB,OAAOo8H,GAAWp8H,KAAWA,GAAO9K,eAAe,aA0V3CwoS,CAAYvtS,IACL0P,KAEPo0M,GAAY9jN,KACZ4jN,GAAO5jN,KAlXnB,YAAkB6P,IACd,MAAyB,iBAAXA,GAkXN4zM,CAASzjN,KAtXrB,YAAmB6P,IACf,MAAyB,kBAAXA,GAsXNszM,CAAUnjN,KA1XtB,YAAkB6P,IACd,MAAyB,iBAAXA,GA0XNwoM,CAASr4M,KACT2P,GAAQ3P,OA7WpB,YAAuB6P,IACnB,IAJJ,YAAkBA,IACd,OAAO4iD,GAAa5iD,MAAYF,GAAQE,IAGnCktL,CAASltL,IACV,OAAO,EAEX,MAAM0ya,GAAkBlib,OAAO4Y,eAAepJ,IAC9C,OAAO0ya,KAAoBlib,OAAOC,WAAiC,OAApBiib,GA2WvC/wO,CAAcxxM,IACPwib,GAAkBxib,GAAO,IAAIuc,GAAMjb,KAEvC,CACHib,KAAM,IAAIA,GAAMjb,IAChBtB,aAEL,GAEP,YAA+Byib,GAAgBn4Z,IAC3C,IAAuB,IAAnBm4Z,GACA,OAEJ,MAAMC,GAAqBD,GAAelma,KAAKjY,KAAK,KAC9CvF,GAAQ,IAAIuE,MAAO,2BAA0BgnB,UAAeo4Z,QAAwB3B,YAA2Bz2Z,qBACrHvrB,SAAMiB,MAAQyib,GAAezib,MAC7BjB,GAAM2jb,mBAAqBA,GACrB3jb,GAYV,YAAmC6yJ,IAC/B,OAAI5b,WACO31I,OAAOc,OAAO,CAAE+0I,4BAA4B,EAAOD,6BAA6B,EAAO4b,yBAAyB,EAAMC,0BAA0B,EAAM6wR,0BAA0B,EAAOC,4BAA4B,GAAShxR,IAEhO,CACH1b,4BAA4B,EAC5BD,6BAA6B,EAC7B4b,yBAAyB,EACzBC,0BAA0B,EAC1B6wR,0BAA0B,EAC1BC,4BAA4B,GAGpC,aAA+C3sS,+BAA6BC,gCACxE,OAAQl6B,IAAYi6B,IAA+BC,GAnFvD,YAAuCl6B,GAAS61R,IAC5C,OAAO,SAAU7/W,GAAO9Q,IAChB2wX,GAAO3wX,OAAOA,KAEd2ha,GAD6BL,GAAkBtha,IACH,UAEhD,MAAMmvI,GAAYr0C,GAAQhqF,GAAO9Q,IAKjC,OAJI2wX,GAAO7/W,SAEP6wZ,GAD4BL,GAAkBnyR,IACH,SAExCA,IAyELyyR,CAA8B9mU,GAAS,CACrC96F,OAASA,IAAW+0H,KAAgC8sS,GAAiB7ha,IACrE8Q,MAAO,IAAMkkH,KAEfl6B,GAEV,aAA8C81C,4BAA0BD,6BACpE,OAAQ71C,IAAY81C,IAA4BD,GAxHpD,YAAsC71C,GAAS61R,IAC3C,OAAO,SAAU7/W,GAAO9Q,IACpB,MAAM8ha,GAAMnxC,GAAO3wX,OAAOA,IAAU8sG,GAAO9sG,IAAUA,GAC/CmvI,GAAYr0C,GAAQhqF,GAAOgxZ,IACjC,OAAOnxC,GAAO7/W,QAAUg8F,GAAOqiC,IAAaA,IAqH1C4yR,CAA6BjnU,GAAS,CACpC96F,OAASA,IAAW4wI,KAA6BixR,GAAiB7ha,IAClE8Q,MAAO,IAAM6/H,KAEf71C,GAEV,YAA0B96F,IACtB,OAAOA,GAAOtf,KAAKsa,WAAW,SAElC,aAA0Cyma,8BACtC,OAAQ3mU,IAAY2mU,GA1CxB,YAAmC3mU,GAAS61R,IACxC,OAAO,SAAU7/W,GAAO9Q,IACpB,GAAI2wX,GAAO3wX,OAAOA,MAAY/hB,wBAC1B,MAAM,IAAImE,MAAO,WAAU4d,GAAOtf,iCAAiCm/a,+BAEvE,OAAO/kU,GAAQhqF,GAAO9Q,KAsCpBgia,CAA0BlnU,GAAS,CACjC96F,OAASA,IAAWyha,KAA6BI,GAAiB7ha,MAEpE86F,GAEV,YAA8B41C,IAC1B,MAAO,CACH,CACI5wE,QAASg9V,GACT/8V,SAAU2wE,IAEd,CACI5wE,QAAS+8V,GACT9zV,WAAYk5V,GACZp5V,KAAM,CAACi0V,KAEX,CACIh9V,QAAS+2D,GACThuD,KAAM,CAACg0V,IACP9zV,WAAYm5V,IAEhB,CACIpiW,QAAS68V,GACTjzS,OAAO,EACP7gD,KAAM,CAACguD,IACP9tD,WAAYo5V,IAEhB,CACIriW,QAAS68V,GACTjzS,OAAO,EACP7gD,KAAM,CAACguD,IACP9tD,WAAYq5V,IAEhB,CACItiW,QAAS68V,GACTjzS,OAAO,EACP7gD,KAAM,CAACguD,IACP9tD,WAAYs5V,KAIxB,cACI,MAAO,CACH,CACIviW,QAASi9V,GACTrzS,OAAO,EACP7gD,KAAM,CAACguD,IACP9tD,WAAYu5V,KAIxB,YAA+B5xR,IAC3B,OAAOA,GAEX,YAAoC5uJ,IAChC,IAAKA,GAAO4/a,2BACR,OAEJ,MAAMlvG,GAAarzU,OAAO04K,QAAQ2jQ,GAC7B7pa,OAAO,EAAC,CAAG4wa,MAAmBA,GAAgB,GAC9Cv/a,IAAI,EAAEtC,MAAUA,IACrB,GAAI8xU,GAAWx0U,OACX,MAAM,IAAIoE,MAAO,+CAA8CowU,GAC1DxvU,IAAKtC,IAAU,IAAGA,OAClB0C,KAAK,UAAUy8a,qCAItB2C,SAAN,SACItlb,YAAY85I,GAAU8nS,GAAU2D,GAAiB7pZ,GAAOk5G,GAAO4wS,MAE7BF,UAAgBj+a,UAAhB,4BAA4Gi+a,IAz2BXvkb,MAy2B4Cy4a,IAz2B5Cz4a,MAy2BuEygb,IAz2BvEzgb,MAy2BqGgxI,IAz2BrGhxI,MAy2BuImhb,IAz2BvInhb,MAy2ByJ49a,GAA1P,GAz2BiG59a,MAy2BuM8+a,GAAxS,KACAyF,GAAgB7iW,UA12BiF1hF,MA02BjG,MAA6Gukb,KAC7GA,GAAgB5iW,UA32BiF3hF,MA22BjG,IALhCukb,OAsBAG,SAAN,SACIzlb,YAAY8lK,GAAU4/Q,GAAiBtD,GAAgB/tT,GAAMmxT,IACzDnlb,KAAKylK,SAAWA,GAChBzlK,KAAKqlb,gBAAkBA,GACvBrlb,KAAK+hb,eAAiBA,GACtB,MAAMuD,GAAQ7/Q,GAAShgK,IAAI,CAAC6xR,GAASpqQ,MAGjC,MAAMwjI,GAAW60R,GAFgC7sR,QAEQxrI,IACzD,OAAOtrB,OAAOc,OAAOd,OAAOc,OAAO,GAAI40R,IAAU,CAAE5mI,YAAU3vE,aAAcykW,GAAqBluJ,GAAQv2M,kBAE5GghW,GAAe3B,YAAYkF,IAG/Bp5a,cACIlM,KAAK+hb,eAAerB,eAAe1gb,KAAKylK,WAGV2/Q,UAAmBp+a,UAAnB,4BAA+Go+a,IA94Bd1kb,MA84BkDs+a,IA94BlDt+a,MA84B8Ew+a,IA94B9Ex+a,MA84B2Gu/a,IA94B3Gv/a,MA84BsIukb,IA94BtIvkb,MA84BkK8+a,GAAnQ,KACA4F,GAAmBhjW,UA/4B8E1hF,MA+4BjG,MAAgH0kb,KAChHA,GAAmB/iW,UAh5B8E3hF,MAg5BjG,IApBhC0kb,OAsCAlyR,SAAN,SAAkBv8H,eACC+5H,GAAUnsJ,GAAS,IAC9B,MAAO,CACHqwI,SAAUqwS,GACVt2V,UAAW,CACP,CACIpM,QAAS+7V,GACT9yV,WAAYspD,GACZxpD,KAAM,CAAC,CAACu2V,GAAO,IAAI1vV,MAAY,IAAIC,SAEvC,CAAE7P,QAASg8V,GAAgB/7V,SAAUj+E,GAAOw8E,cAC5C,CACIwB,QAASg7V,EACT/xV,WAAYg6V,GACZl6V,KAAM,CAACizV,KAEX,CAAEh8V,QAASo8V,GAAmBn8V,SAAUkuE,IACxC,CACInuE,QAASs8V,GACTv4Q,YAAa5V,cAAoBrsJ,MAAiBqsJ,GAAWiuR,IAEjE,CACIp8V,QAASm8V,GACTpzV,KAAM,CAACmD,MAAUkwV,GAAmB,CAAC,IAAIh3I,MAAOk3I,MAChDrzV,WAAYi6V,IAEhB,CACIljW,QAAS48V,GACT38V,SAAUj+E,GAAOusJ,aAAevsJ,GAAOusJ,aAAe,IAE1D,CACIvuE,QAAS88V,GACT/zV,KAAM,CAAC8zV,GAAeD,IACtB3zV,WAAYk6V,IAEhB,CACInjW,QAASk8V,GACTj8V,SAAUj+E,GAAOy7a,eACXz7a,GAAOy7a,eACP2F,IAEV,CACIpjW,QAASi8V,GACTlzV,KAAM,CAACmzV,GAAkBY,IACzB7zV,WAAY+0V,IAEhBlC,EACA6C,GACAG,GACAO,EACAK,GACA2D,GAAqBrhb,GAAO4uJ,eAC5B0yR,yBAIMC,GAAoBp1R,GAAUnsJ,GAAS,IACrD,MAAO,CACHqwI,SAAUwwS,GACVz2V,UAAW,CACP,CACIpM,QAASw8V,GACT5yS,OAAO,EACP3pD,SAAUsjW,cAA8Blkb,OAAS,GAAK2C,IAE1D,CACIg+E,QAASq8V,GACTzyS,OAAO,EACP3pD,SAAU,CACN3/E,IAAKijb,cAA8Blkb,OAC7Bkkb,GAAmB33a,KACnB23a,GACN9F,eAAkBz7a,cAAkBF,QAAmBE,GAAOy7a,eAExD2F,GADAphb,GAAOy7a,eAEblvR,aAAgBvsJ,cAAkBF,QAAmBE,GAAOusJ,aAEtD,GADAvsJ,GAAOusJ,aAEb/vE,aAAgBx8E,cAAkBF,QAAmBE,GAAOw8E,kBAEtD99E,EADAsB,GAAOw8E,eAIrB,CACIwB,QAASy8V,GACT1zV,KAAM,CAACmD,MAAUswV,GAAkBH,IACnCpzV,WAAYu6V,IAEhB,CACIxjW,QAASu8V,GACT3yS,OAAO,EACP3pD,SAAUsjW,cAA8Blkb,OAClCkkb,GAAmBvoU,QACnBmzC,IAEV,CACInuE,QAAS08V,GACT9yS,OAAO,EACPm6B,YAAa5V,cAAoBrsJ,MAAiBqsJ,GAAWouR,IAEjE,CACIv8V,QAAS28V,GACT/yS,OAAO,EACP7gD,KAAM,CACFmD,MACAqwV,GACA,CAAC,IAAIn3I,MAAOs3I,MAEhBzzV,WAAYw6V,IAEhBH,QAKsB3yR,UAAYlsJ,UAAZ,4BAAwGksJ,KACxGA,GAAY9wE,UAthCqF1hF,MAshCjG,MAAyGwyJ,KACzGA,GAAY7wE,UAvhCqF3hF,MAuhCjG,IArHhCwyJ,OA0HN,YAA8B1kE,GAAUkiE,IACpC,OAAOA,cAAoBrsJ,MAAiBmqF,GAASptF,IAAIsvJ,IAAYA,GAEzE,YAA6BliE,GAAUy3V,GAASC,IAC5C,OAAOA,GAAczgb,IAAI,CAAC0gb,GAAMj5Z,MAC5B,GAAI+4Z,GAAQ/4Z,cAAkB7oB,MAAgB,CAC1C,MAAM+hb,GAAO53V,GAASptF,IAAI6kb,GAAQ/4Z,KAClC,MAAO,CACHrqB,IAAKsjb,GAAKtjb,IACVm9a,eAAgBoG,GAAKpG,eACfoG,GAAKpG,eACL2F,GACN70R,aAAcs1R,GAAKt1R,aAAes1R,GAAKt1R,aAAe,GACtD/vE,aAAcqlW,GAAKrlW,cAG3B,OAAOolW,KAGf,YAAgC33V,GAAU63V,IAItC,OAHiBA,GAAkB5gb,IAAK83G,IAC7BA,cAAmBl5G,MAAiBmqF,GAASptF,IAAIm8G,IAAWA,IAI3E,YAA8Bx8B,IAC1B,MAA4B,mBAAjBA,GACAA,KAEJA,GAEX,YAA6B+vE,GAAcw1R,IACvC,OAAOx1R,GAAap3I,OAAO4sa,IAE/B,YAA8BjrZ,IAC1B,GAAIA,GACA,MAAM,IAAIm0F,UAAW,oGAEzB,MAAO,UAiBX,eAAep8D,IAKX,MAAO,CAAEmqD,QAFOnqD,GAAK7iC,MAEH0vC,MADJ7M,GAAK3tD,IAAK24a,IAAYA,GAAQj7a,OAmDhD,YAAuB49E,MAAiBwlW,IACpC,MAAM9gb,GAAM,IAAI6nB,IAChB,UAAWqxE,MAAM4nV,GACb,UAAWpjb,MAAQw7F,GAAG1+B,MAAO,CACzB,MAAMumX,GAAkB/gb,GAAIrE,IAAI+B,IAG5BsC,GAAInE,IAAI6B,GAFRqjb,GACmB,CAACjzZ,GAAO9Q,KAAWk8E,GAAG4e,QAAQipU,GAAgBjzZ,GAAO9Q,IAASA,IAInEk8E,GAAG4e,SAI7B,OAAO,SAAUhqF,GAAQwtD,GAAct+D,IACnC,MAAM86F,GAAU93G,GAAIrE,IAAIqhB,GAAOtf,MAC/B,OAAOo6G,GAAUA,GAAQhqF,GAAO9Q,IAAU8Q,8EEp2ClD,QACI5zB,YAAY8mb,EAASC,GACjB1mb,KAAKymb,QAAUA,EACfzmb,KAAK0mb,QAAUA,EACf1mb,KAAK2mb,QAAqB,MAAXD,OAIjBE,QAAN,QACIjnb,YAAYymF,EAAS1vE,GACjB1W,KAAKomF,QAAUA,EACfpmF,KAAK0W,KAAOA,EACZ1W,KAAK6mb,QAAU,IAAI1hW,MACnBnlF,KAAK0sH,SAAW,IAAIi1C,eAAe2Y,GAAWt6K,KAAK0W,KAAK2/E,IAAI,IAAMr2F,KAAKqpI,QAAQixC,KAEnFz9H,WACI78C,KAAK0sH,SAAS2c,QAAQrpI,KAAKomF,QAAQR,eAEvC15E,cACIlM,KAAK0sH,SAASu/C,aAElB5iC,QAAQixC,GACJ,MAAMwsQ,EAAUxsQ,EAAQ,GAClBysQ,EAAe,IAAIC,EAAaF,EAAQG,YAAajnb,KAAK0mb,SAChE1mb,KAAK0mb,QAAUI,EAAQG,YACvBjnb,KAAK6mb,QAAQl5Q,KAAKo5Q,IAG1BH,SAAiB5/a,UAAjB,0BAA6G4/a,GAAVlmb,MAA4CA,OAA5CA,MAAsEA,SACzKkmb,EAAiBn/V,UADkF/mF,MACnG,MAAiGkmb,EAAjG9pY,4DArBM8pY,MA+BAjtV,QAAN,SAEAA,SAAyB3yF,UAAzB,0BAAqH2yF,IACrHA,EAAyBvX,UAd0E1hF,MAcnG,MAAsHi5F,IACtHA,EAAyBtX,UAf0E3hF,MAenG,UAA0J,MAJpJi5F,2FC1CKutV,EAAa,MACvB,OAAUA,GAQRA,IAAkBA,EAAgB,KAPnBA,GAAcjmY,QAAa,GAAK,UAC9CimY,GAAcA,GAAcC,aAAkB,GAAK,eACnDD,GAAcA,GAAcE,UAAe,GAAK,YAChDF,GAAcA,GAAcG,QAAa,GAAK,UAC9CH,GAAcA,GAAcI,KAAU,GAAK,OAC3CJ,GAAcA,GAAczjN,MAAW,GAAK,QAC5CyjN,GAAcA,GAAc5mb,MAAW,GAAK,QARrC4mb,EACV,IAAUA,IADa,GAUjB,WAAkCK,IACrC,QAAOA,IAAgBA,GAAgB,oCCVhC9uR,EAAUjsC,gCCAVg7T,EAA0B,SAAUz/a,GAAGjF,IAC9C,IAAI2kb,GACJ,IACIA,GAAathb,KAAK2kB,UAAU/iB,UAEzB0nC,IACH,IAAIi4Y,GAAat4T,QAAU,IAAIsR,KAAe,2BAA2BhnH,OAAO5W,GAAO,0BAA0B4W,OAAO+1B,GAAE3vC,UAAY,IAAI4gI,KAAe,IACzJgnT,SAAWA,WAAaj4Y,GAClBi4Y,GAEV,OAAOD,ICXAE,EAAmB,SAAUv8a,GAAU6F,GAAQnR,IACtD,IAAIQ,GAAQ,IAAIuE,MAAM/E,IACtBQ,SAAM6N,KAAO,cACb7N,GAAM8K,SAAWA,GACjB9K,GAAMsnb,WAAax8a,GAASmF,OAC5BjQ,GAAM2Q,OAASA,GACT3Q,ICLNgG,EAAiB1E,OAAOC,UAAUyE,yBCa3Buhb,EAAqB,CAC5B79Z,KAZqB,CACrB49G,cAAc,EACdC,mBAAmB,GAWnBt1D,QATiB,CACjB+6D,OAAQ,MACR,eAAgB,oBAQhB1qI,QANiB,CACjB+kI,OAAQ,SAODmgT,EAAiB,SAAUhlX,GAAKilX,IAAW,OAAOA,GAAQjlX,KAoCrE,WAA4ByP,IACxB,GAAIA,GAAS,CACT,IAAIy1W,GAAepmb,OAAO2Y,OAAO,MACjC3Y,cAAOgqC,KAAKhqC,OAAO2wE,KAAUvwD,QAAQ,SAAU7T,IAC3C65a,GAAa75a,GAAK9E,eAAiBkpE,GAAQpkE,MAExC65a,GAEX,OAAOz1W,GC9DJ,WAAmB4mF,IACtB,OAAO,IAAIp6E,IAAW,SAAU2tC,IAC5BA,GAASpsH,MAAM64J,MCWvB,IAAI8uR,IAAcn/B,QAAM,WAAc,OAAOt/Q,QAClC0+S,GAAiB,SAAUC,SACd,IAAhBA,KAA0BA,GAAc,IAC5C,IAAIngb,GAAKmgb,GAAYr+S,IAAKA,QAAa,IAAP9hI,GAAgB,WAAaA,GAAIogb,GAAiBD,GAAY3+S,MAAOvhI,GAAKkgb,GAAYhhT,MAAOA,QAAe,IAAPl/H,GAAgB6/a,EAAiB7/a,GAAI4/H,GAAoBsgT,GAAYtgT,kBAAmBG,GAAmBmgT,GAAYngT,iBAAkBtQ,GAAKywT,GAAYE,uBAAwBA,QAAgC,IAAP3wT,IAAwBA,GAAI4wT,IAAiB15T,QAAOu5T,GAAa,CAAC,MAAO,QAAS,QAAS,oBAAqB,mBAAoB,2BAChd/4T,SCjBkB,SAAUm5T,IAChC,IAAKA,IAA4B,oBAAV/+S,MACnB,MAAMpa,QAAU,IAAIsR,KAAe,sbAAwb,IAAIA,KAAe,IDgB9e8nT,CAAaJ,IAAkBH,IAEnC,IAAIQ,GAAa,CACbz+Z,KAAM,CAAE69G,kBAAmBA,IAC3BjlI,QAAS0lb,GAAeI,aACxBC,YAAaL,GAAeK,YAC5Bp2W,QAAS+1W,GAAe/1W,SAE5B,OAAO,IAAIi6C,IAAW,SAAUjwD,IAC5B,IAAIqsX,GE5BW,SAAUrsX,GAAWssX,IAGxC,OAFctsX,GAAUgrE,aACCuC,MAIO,mBAAhB++S,GACLA,GAAYtsX,IAGZssX,IAAe,YFkBNC,CAAUvsX,GAAWutE,IACjCj+G,GAAU0wC,GAAUgrE,aACpBwhT,GAAyB,GAC7B,GAAIl9Z,GAAQu8G,gBAAiB,CACzB,IAAIpgI,GAAK6jB,GAAQu8G,gBAAiB4gT,GAAShhb,GAAGmG,KAAM1P,GAAUuJ,GAAGvJ,QAC7Duqb,KACAD,GAAuB,6BAA+BC,IAEtDvqb,KACAsqb,GAAuB,gCAAkCtqb,IAGjE,IAwBIwqb,GAxBAC,IAAiB7lX,SAASA,QAAS,GAAI0lX,IAAyBl9Z,GAAQ0mD,SAOxEtqE,GFlBL,YAA0Cs0D,GAAWwrX,IAExD,QADI9B,GAAU,GACL94Y,GAAK,EAAGA,GAAK4wB,UAAUt9D,OAAQ0sC,KACpC84Y,GAAQ94Y,GAAK,GAAK4wB,UAAU5wB,IAEhC,IAAIvqC,GAAU,GACVonB,GAAO,GACXi8Z,GAAQjka,QAAQ,SAAUzd,IACtB3B,IAAUygE,SAASA,SAASA,QAAS,GAAIzgE,IAAU2B,GAAO3B,SAAU,CAAE2vE,SAASlP,SAASA,QAAS,GAAIzgE,GAAQ2vE,SAAU42W,EAAmB5kb,GAAOguE,YAC7IhuE,GAAOokb,cACP/lb,GAAQ+lb,YAAcpkb,GAAOokb,aAEjC3+Z,IAAOq5C,SAASA,QAAS,GAAIr5C,IAAOzlB,GAAOylB,QAE/C,IAA6CmpC,GAAaoJ,GAAUpJ,WAA6CiR,GAAQ7H,GAAU6H,MAC/H7yB,GAAO,CAAEx6B,cADOwlD,GAAUxlD,cACastD,UADiD9H,GAAU8H,WAEtG,OAAIr6C,GAAK69G,oBACLt2F,GAAK4hB,WAAaA,IAClBnpC,GAAK49G,eACLr2F,GAAK6yB,MAAQ2jX,GAAQ3jX,GAAO+iE,MACzB,CACHvkI,QAASA,GACT2uC,KAAMA,IEJG63Y,CAAiC7sX,GAAW4qE,GAAO0gT,EAAoBY,GAN5D,CAChBz+Z,KAAM6B,GAAQ7B,KACdpnB,QAASipB,GAAQ68Z,aACjBC,YAAa98Z,GAAQ88Z,YACrBp2W,QAAS22W,KAE+Ftmb,GAAUqF,GAAGrF,QAAS2uC,GAAOtpC,GAAGspC,KAC5I,GAAIA,GAAK8yB,YAAcgkX,GAAwB,CAC3C,IAAIgB,GAAgB,IAAI1mX,IAAI/gE,OAAOgqC,KAAK2F,GAAK8yB,aAC7C6mV,QAAM3uV,GAAU6H,MAAO,CACnB0pV,SAAU,SAAUp6V,GAAM27F,GAAMtiE,IACxBA,IAA0B,uBAAhBA,GAAO90B,MACjBoxX,GAAct+Z,OAAO2oC,GAAKvlD,KAAK5M,UAIvC8nb,GAAcj2a,OACdm+B,GAAK8yB,WAAYhB,QAAS,GAAI9xB,GAAK8yB,WACnCglX,GAAcrna,QAAQ,SAAU7T,WACrBojC,GAAK8yB,UAAUl2D,OAKlC,IAAKvL,GAAQ0mb,OAAQ,CACjB,IAAI5xT,GGlEqB,WACjC,GAA+B,oBAApB6xT,gBACP,MAAO,CAAEN,YAAY,EAAOK,QAAQ,GACxC,IAAIL,GAAa,IAAIM,gBAErB,MAAO,CAAEN,WAAYA,GAAYK,OADpBL,GAAWK,QH8DPE,IACTP,GADkDvxT,GAAGuxT,cAGjDrmb,GAAQ0mb,OAH8D5xT,GAAG4xT,QAYjF,GAJIthT,KACCzrE,GAAU6H,MAAMhJ,YAAYnyD,KAJN,SAAUsrH,IACjC,MAAkB,wBAAXA,GAAEt8D,MAAkD,aAAhBs8D,GAAEh4D,cAI7C35D,GAAQ+kI,OAAS,OAEE,QAAnB/kI,GAAQ+kI,OAAkB,CAC1B,IAAI/P,GI9ET,YAA0BgxT,GAAWr3Y,IACxC,IAAI+N,GAAc,GACdmqY,GAAgB,SAAU5mb,GAAKtB,IAC/B+9C,GAAY1uC,KAAK,GAAG8I,OAAO7W,GAAK,KAAK6W,OAAO6mQ,mBAAmBh/Q,OAQnE,GANI,UAAWgwC,IACXk4Y,GAAc,QAASl4Y,GAAK6yB,OAE5B7yB,GAAKx6B,eACL0ya,GAAc,gBAAiBl4Y,GAAKx6B,eAEpCw6B,GAAK8yB,UAAW,CAChB,IAAIqlX,QAAsB,EAC1B,IACIA,GAAsBlC,EAAwBj2Y,GAAK8yB,UAAW,uBAE3DqjX,IACH,MAAO,CAAEA,WAAYA,IAEzB+B,GAAc,YAAaC,IAE/B,GAAIn4Y,GAAK4hB,WAAY,CACjB,IAAIw2X,QAAuB,EAC3B,IACIA,GAAuBnC,EAAwBj2Y,GAAK4hB,WAAY,wBAE7Du0X,IACH,MAAO,CAAEA,WAAYA,IAEzB+B,GAAc,aAAcE,IAEhC,IAAIj7T,GAAW,GAAIk7T,GAAchB,GAC7BiB,GAAgBjB,GAAUtjb,QAAQ,MAChB,IAAlBukb,KACAn7T,GAAWk6T,GAAU5va,OAAO6wa,IAC5BD,GAAchB,GAAU5va,OAAO,EAAG6wa,KAEtC,IAAIC,IAAiD,IAA7BF,GAAYtkb,QAAQ,KAAc,IAAM,IAEhE,MAAO,CAAEykb,OADIH,GAAcE,GAAoBxqY,GAAYz5C,KAAK,KAAO6oH,IJwCtDs7T,CAAiBpB,GAAWr3Y,IAAOw4Y,GAASnyT,GAAGmyT,OAAQrC,GAAa9vT,GAAG8vT,WAChF,GAAIA,GACA,OAAOuC,EAAUvC,IAErBkB,GAAYmB,QAGZ,IACInnb,GAAQ2uC,KAAOi2Y,EAAwBj2Y,GAAM,iBAE1Cm2Y,IACH,OAAOuC,EAAUvC,IAGzB,OAAO,IAAI3oW,IAAW,SAAU2tC,IAE5Bw9T,OADmB9B,KAAkBt/B,QAAM,WAAc,OAAOt/Q,SAAay+S,IAChEW,GAAWhmb,IACnBwzB,KAAK,SAAUhrB,IAChBmxD,UAAUktE,WAAW,CAAEr+H,SAAUA,KAC1BA,KAENgrB,KHlGV,WAAmCihI,IACtC,OAAO,SAAUjsJ,IAAY,OAAOA,GAC/BmuI,OACAnjH,KAAK,SAAU+zZ,IAChB,IACI,OAAOhkb,KAAKC,MAAM+jb,UAEfx0a,IACH,IAAI+xa,GAAa/xa,GACjB+xa,SAAWv5a,KAAO,mBAClBu5a,GAAWt8a,SAAWA,GACtBs8a,GAAWE,WAAax8a,GAASmF,OACjCm3a,GAAWyC,SAAWA,GAChBzC,MAGTtxZ,KAAK,SAAUnlB,IAChB,OAAI7F,GAASmF,QAAU,KACnBo3a,EAAiBv8a,GAAU6F,GAAQ,iDAAiDyI,OAAOtO,GAASmF,UAEnG/K,MAAM0L,QAAQD,MACd3K,EAAexE,KAAKmP,GAAQ,UAC5B3K,EAAexE,KAAKmP,GAAQ,WAC7B02a,EAAiBv8a,GAAU6F,GAAQ,0CAA0CyI,OAAOlU,MAAM0L,QAAQmmJ,IAC5FA,GAAW5xJ,IAAI,SAAUikI,IAAM,OAAOA,GAAG3yH,gBACzCsgJ,GAAWtgJ,cAAe,OAE7B9F,MGuEOm5a,CAA0B7tX,KAC/BnmC,KAAK,SAAUnlB,IAChBy7G,UAASxoH,KAAK+M,IACdy7G,GAASzsC,WACFhvE,KAENqlB,MAAM,SAAU3gB,IACA,eAAbA,GAAIxH,OAEJwH,GAAI1E,QAAU0E,GAAI1E,OAAO6f,QAAUnb,GAAI1E,OAAOnH,MAC9C4iH,GAASxoH,KAAKyR,GAAI1E,QAEtBy7G,GAASpsH,MAAMqV,OAEZ,WACCsza,IACAA,GAAWv3J,cKjH3B/nJ,GAAY,SAAU3c,IAEtB,YAAkBpqH,SACE,IAAZA,KAAsBA,GAAU,IACpC,IAAIqqH,GAAQD,GAAOlrH,KAAK9B,KAAMkob,GAAetlb,IAASmE,UAAY/G,KAClEitH,UAAMrqH,QAAUA,GACTqqH,GAEX,OAPAE,QAAUwc,GAAU3c,IAOb2c,GARK,CASdnd,qCCXK,YAAkBilB,GAAY44S,GAAOC,IACxC,OAAO,IAAIvrW,IAAW,SAAU2tC,IAC5B,IAAIxoH,GAAOwoH,GAASxoH,KAAM5D,GAAQosH,GAASpsH,MAAO2/E,GAAWysC,GAASzsC,SAClEsqW,GAAsB,EACtB9pQ,IAAY,EACZ+pQ,GAAe,CACfp0Z,KAAM,SAAUggB,IACZ,OAAO,IAAIxf,QAAQ,SAAUC,IAAW,OAAOA,GAAQuf,UAG/D,YAAsBq0Y,GAAUnyR,IAC5B,OAAImyR,GACO,SAAUjnX,MACX+mX,GACF,IAAIG,GAAO,WAAc,OAAOD,GAASjnX,KACzCgnX,GAAeA,GAAap0Z,KAAKs0Z,GAAMA,IAAMt0Z,KAAK,SAAUnlB,MACtDs5a,GACFrmb,IAAQA,GAAKpC,KAAK4qH,GAAUz7G,IACxBwvK,IACA98B,GAAQ1jE,YAEb,SAAU3/E,IACT,OAAEiqb,GACIjqb,KACPg2B,MAAM,SAAUq0Z,IACfrqb,IAASA,GAAMwB,KAAK4qH,GAAUi+T,OAK/B,SAAUnnX,IAAO,OAAO80F,IAAYA,GAASx2J,KAAK4qH,GAAUlpD,KAG3E,IAAImgF,GAAU,CACVz/I,KAAM0mb,GAAaP,GAAOnmb,IAC1B5D,MAAOsqb,GAAaN,GAAShqb,IAC7B2/E,SAAU,WACNwgG,IAAY,EACP8pQ,IACDtqW,IAAYA,GAASn+E,KAAK4qH,MAIlCvgH,GAAMslI,GAAW9pI,UAAUg8I,IAC/B,OAAO,WAAc,OAAOx3I,GAAIC,iBC7CjC,YAA+B6E,IAClC,OAAQA,GAAO6f,QAAU7f,GAAO6f,OAAOrwB,OAAS,IAAM,wECDnD,YAAgCk3J,GAAWhwB,GAAQwsF,IACtD,IAAI02N,GAAsB,GAC1BlzR,GAAU31I,QAAQ,SAAU66M,IAAO,OAAOA,GAAIl1F,KAAWkjT,GAAoBj6a,KAAKisN,MAClFguN,GAAoB7oa,QAAQ,SAAU66M,IAAO,OAAOA,GAAIl1F,IAAQwsF,MCD7D,YAA+B22N,IAClC,YAAajob,IACTjB,OAAOyY,eAAeywa,GAAUjob,GAAK,CAAEtB,MAAOw9E,MAElD,OAAIgqU,OAAgBr0V,OAAOq2X,SACvBzpb,GAAIozD,OAAOq2X,SAEfzpb,GAAI,aACGwpb,GCNX,YAAuBvpb,IACnB,OAAOA,IAA+B,mBAAfA,GAAM60B,KAEjC,IAAI40Z,GAAW,SAAUh+T,IAErB,YAAiB6jB,IACb,IAAI5jB,GAAQD,GAAOlrH,KAAK9B,KAAM,SAAU0sH,IACpCO,UAAMg+T,YAAYv+T,IACX,WAAc,OAAOO,GAAMi+T,eAAex+T,QAC/C1sH,KACNitH,UAAM0qC,UAAY,IAAIh1F,IACtBsqD,GAAMk+T,SAAW,EACjBl+T,GAAM+vG,QAAU,IAAIpmM,QAAQ,SAAUC,GAASC,IAC3Cm2F,GAAMp2F,QAAUA,GAChBo2F,GAAMn2F,OAASA,KAEnBm2F,GAAMm3B,SAAW,CACblgJ,KAAM,SAAU+M,IACM,OAAdg8G,GAAM9gH,MACN8gH,GAAMwL,OAAS,CAAC,OAAQxnH,IACxBm6a,GAAuBn+T,GAAM0qC,UAAW,OAAQ1mJ,MAGxD3Q,MAAO,SAAUA,IACb,IAAI6L,GAAM8gH,GAAM9gH,IACJ,OAARA,KACIA,IACAwrB,WAAW,WAAc,OAAOxrB,GAAIC,gBACxC6gH,GAAM9gH,IAAM,KACZ8gH,GAAMwL,OAAS,CAAC,QAASn4H,IACzB2sH,GAAMn2F,OAAOx2B,IACb8qb,GAAuBn+T,GAAM0qC,UAAW,QAASr3J,MAGzD2/E,SAAU,WACN,IAAI9zE,GAAM8gH,GAAM9gH,IAChB,GAAY,OAARA,GAAc,CACd,IAAI5K,GAAQ0rH,GAAM4jB,QAAQ6nB,QACrBn3J,GAaA8pb,GAAkB9pb,IACnBA,GAAM60B,KAAK,SAAUymM,IAAO,OAAO5vG,GAAM9gH,IAAM0wN,GAAIl1N,UAAUslH,GAAMm3B,YAGnEn3B,GAAM9gH,IAAM5K,GAAMoG,UAAUslH,GAAMm3B,WAhB9Bj4I,IACAwrB,WAAW,WAAc,OAAOxrB,GAAIC,gBACxC6gH,GAAM9gH,IAAM,KACZm/a,GAAU7yT,QACc,SAApBxL,GAAMwL,OAAO,GACbxL,GAAMp2F,QAAQo2F,GAAMwL,OAAO,IAG3BxL,GAAMp2F,UAEVu0Z,GAAuBn+T,GAAM0qC,UAAW,gBAWxD1qC,GAAMh8D,OAAS,SAAU0uU,IACrB1yQ,GAAMn2F,OAAO6oW,IACb1yQ,GAAM4jB,QAAU,GAChB5jB,GAAMm3B,SAASnkE,YAEnBgtC,GAAM+vG,QAAQ1mM,MAAM,SAAUpiB,OACP,mBAAZ28H,KACPA,GAAU,CAAC,IAAI9xD,IAAW8xD,MAE9Bw6S,GAAkBx6S,IACdA,GAAQz6G,KAAK,SAAUs4K,IAAY,OAAOzhF,GAAMt5D,MAAM+6I,KAAczhF,GAAMm3B,SAAS9jJ,OAGnF2sH,GAAMt5D,MAAMk9E,IAET5jB,GAEX+9T,OAzEA79T,QAAU69T,GAASh+T,IAyEnBg+T,GAAQnpb,UAAU8xD,MAAQ,SAAUk9E,SACf,IAAb7wI,KAAKmM,MAETnM,KAAK6wI,QAAUrrI,MAAMotH,KAAKie,IAC1B7wI,KAAKokJ,SAASnkE,aAElB+qW,GAAQnpb,UAAU0pb,mBAAqB,SAAU7+T,IAC7C,GAAI1sH,KAAKy4H,OAAQ,CACb,IAAI+yT,GAAcxrb,KAAKy4H,OAAO,GAC1BkP,GAASjb,GAAS8+T,IAClB7jT,IACAA,GAAO7lI,KAAK4qH,GAAU1sH,KAAKy4H,OAAO,IAErB,OAAbz4H,KAAKmM,KACW,SAAhBq/a,IACA9+T,GAASzsC,UACTysC,GAASzsC,aAIrB+qW,GAAQnpb,UAAUopb,YAAc,SAAUv+T,IACjC1sH,KAAK23J,UAAUt1F,IAAIqqD,MACpB1sH,KAAKurb,mBAAmB7+T,IACxB1sH,KAAK23J,UAAUxjI,IAAIu4F,MACjB1sH,KAAKmrb,WAGfH,GAAQnpb,UAAUqpb,eAAiB,SAAUx+T,GAAU++T,IAC/Czrb,KAAK23J,UAAU5sI,OAAO2hG,OACpB1sH,KAAKmrb,SAAW,IACjBM,IACDzrb,KAAKokJ,SAASnkE,YAGtB+qW,GAAQnpb,UAAUwtR,QAAU,SAAUj5O,IAClC,IAAI62E,GAAQjtH,KACR0rb,IAAS,EACTxqO,GAAO,WACFwqO,KACDA,IAAS,EACTz+T,GAAM0qC,UAAU5sI,OAAO2hG,IACvBt2E,OAGJs2E,GAAW,CACXxoH,KAAMg9M,GACN5gN,MAAO4gN,GACPjhI,SAAUihI,IAEV1nM,GAAQxZ,KAAKmrb,SACjBnrb,KAAKirb,YAAYv+T,IACjB1sH,KAAKmrb,SAAW3xa,IAEbwxa,GA/HI,CAgIbjsW,KAEF4sW,GAAsBX,mBCjHlBY,GAAe,SAAU5+T,IAEzB,YAAqBhlH,IACjB,IAAI6kH,GAAgB7kH,GAAG6kH,cAAeg/T,GAAe7jb,GAAG6jb,aAAc9+T,GAAe/kH,GAAG+kH,aAAcp4F,GAAe3sB,GAAG2sB,aAAcm3Z,GAAY9jb,GAAG8jb,UACjJ7+T,GAAQD,GAAOlrH,KAAK9B,KAAM20B,KAAiB30B,KAC/CitH,UAAMJ,cAAgBA,IAAiB,GACvCI,GAAM4+T,aAAeA,IAAgB,GACrC5+T,GAAMF,aAAeA,IAAgB,KACrCE,GAAMntH,QAAU60B,IA1BG,SAAUhf,IACjC,IAAI7V,GAAU,GAWd,QAVIq7H,QAAgBxlH,GAAIk3G,iBAAkBsO,QAAgBxlH,GAAIk2a,iBAC5Cl2a,GAAIk3G,eAAiB,IAC9BnzG,OAAO/D,GAAIk2a,cAAgB,IACzB7pa,QAAQ,SAAU1hB,IAIrBR,IAAW,GAAG4Z,OAHKpZ,GACbA,GAAMR,QACN,2BAC6B,QAGvC6V,GAAIo3G,eACJjtH,IAAW,GAAG4Z,OAAO/D,GAAIo3G,aAAajtH,QAAS,OAEnDA,GAAUA,GAAQ8E,QAAQ,MAAO,IAWGmnb,CAAqB9+T,IACrDA,GAAM6+T,UAAYA,GAClB7+T,GAAMusD,UAAYoyQ,GAAY/pb,UACvBorH,GAEX,OAZAE,QAAUy+T,GAAa5+T,IAYhB4+T,GAbQ,CAcjB/mb,6BCjCEnC,GAASd,OAAOc,OAAQ4D,GAAiB1E,OAAO0E,eAChD0lb,GAAmB,SAAUh/T,IAE7B,YAAyBhlH,IACrB,IAAIikb,GAAejkb,GAAGikb,aAAcC,GAAYlkb,GAAGkkb,UAAWtpb,GAAUoF,GAAGpF,QACvEqqH,GAAQD,GAAOlrH,KAAK9B,KAAM,SAAU0sH,IACpC,IACI,IAAIy/T,GAAcz/T,GAASq6I,cAAc8/I,UACrCslC,KAAgBA,GAAY7rb,QAC5B6rb,GAAY7rb,MAAQ8rb,UAGrBpkb,KACP,IAAIm1C,IAAS8vE,GAAM0qC,UAAUvkJ,KAC7B65G,GAAM0qC,UAAUxjI,IAAIu4F,IACpB,IAAItvE,GAAO6vE,GAAM7vE,KACjB,OAAIA,IAAQA,GAAK98C,MACbosH,GAASpsH,OAASosH,GAASpsH,MAAM88C,GAAK98C,OAEjC88C,IAAQA,GAAKnsC,QAClBy7G,GAASxoH,MAAQwoH,GAASxoH,KAAKk5C,GAAKnsC,QAEpCksC,IACA8vE,GAAMo/T,YAAY/1Z,MAAM,cAErB,WACC22F,GAAM0qC,UAAU5sI,OAAO2hG,MAAcO,GAAM0qC,UAAUvkJ,MACrD65G,GAAMq/T,oBAGZtsb,KACNitH,GAAM0qC,UAAY,IAAIh1F,IACtBsqD,GAAMqoC,cAAgB,IAAI3yF,IAC1BsqD,GAAMi/T,UAAYA,GAClBj/T,GAAMg/T,aAAeA,GACrBh/T,GAAMs/T,YAAa,EACnB,IAAItkb,GAAKgkb,GAAah/V,eAAe9oB,WAA0CyzD,SAAlB,IAAP3vH,GAAgB,GAAKA,IAAY+8D,YAAawnX,QAA4B,IAAP50T,GAAgB,cAAgBA,GACrJi8Q,GAAKjxY,GAAQoiE,YAAaA,QAAqB,IAAP6uU,GAAgB24C,GAAqB34C,GAAIod,GAAKruZ,GAAQ6pb,mBAAoBA,QAA4B,IAAPx7B,GAAiC,YAAhBjsV,GAA4BwnX,GAAqBxnX,GAAeisV,GAC5NhkS,GAAMrqH,SAAUygE,SAASA,QAAS,GAAIzgE,IAAU,CAAE6pb,mBAAoBA,GAAoBznX,YAAaA,KACvGioD,GAAMy/T,QAAUR,GAAUQ,SAAWT,GAAaU,kBAClD,IAAIC,IAAQtrT,SAAuBrU,GAAM7oD,OACzC6oD,UAAM4/T,UAAYD,IAASA,GAAMz+a,MAAQy+a,GAAMz+a,KAAK5M,MAC7C0rH,GAEXrrH,OA1CAurH,QAAU6+T,GAAiBh/T,IA0C3BprH,OAAOyY,eAAe2xa,GAAgBnqb,UAAW,QAAS,CACtDT,IAAK,WACD,OAAOpB,KAAKisb,aAAa9nW,UAAUnkF,KAAK4C,QAAQwhE,OAAOgd,UAE3DjtB,YAAY,EACZG,cAAc,IAElB1yD,OAAOyY,eAAe2xa,GAAgBnqb,UAAW,YAAa,CAC1DT,IAAK,WACD,OAAOpB,KAAK4C,QAAQyhE,WAExBlQ,YAAY,EACZG,cAAc,IAElB03X,GAAgBnqb,UAAUoP,OAAS,WAC/B,IAAIg8G,GAAQjtH,KACZ,OAAO,IAAI42B,QAAQ,SAAUC,GAASC,IAClC,IAAI41F,GAAW,CACXxoH,KAAM,SAAU+M,IACZ4lB,GAAQ5lB,IACRg8G,GAAM0qC,UAAU5sI,OAAO2hG,IAClBO,GAAM0qC,UAAUvkJ,MACjB65G,GAAMg/T,aAAaa,YAAY7/T,GAAMy/T,SAEzC/0Z,WAAW,WACP8d,GAAarpC,eACd,IAEP9L,MAAOw2B,IAEP2e,GAAew3E,GAAMtlH,UAAU+kH,OAG3Cs/T,GAAgBnqb,UAAUkrb,iBAAmB,SAAUC,SAC1B,IAArBA,KAA+BA,IAAmB,GACtD,IAAInK,GAAa7ib,KAAKitb,eAAc,GAChC1F,GAAgBvnb,KAAKksb,UAAU3E,eAC9B1E,IAAcA,GAAW0E,eAC1BL,QACAj2a,IAASoyD,SAASA,QAAS,GAAIw/W,IAAa,CAAE5hY,QAASisY,EAAyB3F,IAAgBA,cAAeA,KAC/Gv/a,GAAKhI,KAAK4C,QAAQoiE,YAAaA,QAAqB,IAAPh9D,GAAgB,cAAgBA,GACjF,GAAoB,iBAAhBg9D,IACgB,aAAhBA,IACgB,YAAhBA,KACAhlE,KAAKisb,aAAa9nW,UAAUnkF,KAAK4C,QAAQwhE,OAAO+oX,mBAE/C,CACD,IAAInnT,GAAOhmI,KAAKksb,UAAUkB,WACtBpnT,GAAK/lD,UAAYjgF,KAAK4C,QAAQ+0H,qBAC9B1mH,GAAOnH,KAAOk8H,GAAK/0H,SAEnB0kH,QAAM1kH,GAAOnH,KAAM,MACnBmH,GAAOnH,UAAO,GAElBujb,GAASptW,iBACEhvE,GAAOgoM,QACVjzE,GAAK/lD,UACLhvE,GAAOs2a,gBAAkBL,YACR,gBAAhBliX,IACmB,eAAhBA,MACJ/zD,GAAOs2a,cAAgBL,QACvBj2a,GAAOgwC,SAAU,IAIrBhwC,GAAOgoM,SAAU,EAEjB7pF,UACC4W,GAAK/lD,WACLjgF,KAAK4C,QAAQ0qb,iBACbr8a,GAAOgwC,UACPhwC,GAAOnH,OACPmH,GAAO3Q,OACRitb,GAAsBvnT,GAAKjO,SAGnC,OAAIi1T,IACAhtb,KAAKwtb,iBAAiBv8a,IAEnBA,IAEX+6a,GAAgBnqb,UAAU4rb,0BAA4B,SAAU1K,IAC5D,OAAQ/ib,KAAKo9C,QAASu4E,QAAM31H,KAAKo9C,KAAKnsC,OAAQ8xa,KAElDiJ,GAAgBnqb,UAAU6rb,QAAU,SAAU7qb,GAAK8qb,IAC/C,IAAIvwY,GAAOp9C,KAAKo9C,KAChB,GAAIA,IACAA,GAAKv6C,OACH8qb,KAAsBh4T,QAAMv4E,GAAKinB,UAAWrkE,KAAKqkE,YACnD,OAAOjnB,GAAKv6C,KAGpBmpb,GAAgBnqb,UAAUorb,cAAgB,SAAUU,IAChD,OAAO3tb,KAAK0tb,QAAQ,SAAUC,KAElC3B,GAAgBnqb,UAAU+rb,aAAe,SAAUD,IAC/C,OAAO3tb,KAAK0tb,QAAQ,QAASC,KAEjC3B,GAAgBnqb,UAAUgsb,iBAAmB,kBAClC7tb,KAAKo9C,KACZp9C,KAAKusb,YAAa,GAEtBP,GAAgBnqb,UAAUisb,sBAAwB,WAC9C9tb,KAAKisb,aAAa8B,YAAY/tb,KAAK0sb,UAEvCV,GAAgBnqb,UAAUwlb,QAAU,SAAUhjX,IAC1C,IAAIr8D,GACAgmb,GAAmB,CACnBnoX,aAAc,GAEdb,GAAchlE,KAAK4C,QAAQoiE,YAU/B,GARIgpX,GAAiBhpX,YADD,sBAApB88Q,GACmC98Q,GAEV,aAApB88Q,GAC8B,WAGA,eAE/B1yN,SAAW/qD,IAAa/9D,GAAexE,KAAKuiE,GAAW,aAAc,CACrE,IAAIonV,IAAW3zR,SAAmB93H,KAAKokE,OACnCo0G,GAAOizO,GAAShvV,sBACf+7G,KAASA,GAAKvvK,KAAK,SAAUyM,IAAK,MAAiC,cAA1BA,GAAEynD,SAAShvD,KAAK5M,UAC1D6tH,SAAW59D,UAAe,kBAAkB93C,OAAOvT,KAAK2kB,UAAUu5C,IAAY,gBAAgB3qD,QAAiC,QAAxB1R,GAAKyjZ,GAASt9Y,YAAyB,IAAPnG,QAAgB,EAASA,GAAGzG,QAAU4E,KAAK2kB,UAAU2gY,IAAW,gIAG/M,OAAIpnV,MAAcsxD,QAAM31H,KAAK4C,QAAQyhE,UAAWA,MAC5C2pX,GAAiB3pX,UAAYrkE,KAAK4C,QAAQyhE,WAAYhB,SAASA,QAAS,GAAIrjE,KAAK4C,QAAQyhE,WAAYA,KAEzGrkE,KAAKksb,UAAU+B,iBACRjub,KAAKqsb,UAAU2B,GAAkB9G,YAE5C8E,GAAgBnqb,UAAUulb,UAAY,SAAU8G,IAC5C,IAAIjhU,GAAQjtH,KACRmub,IAAkB9qX,SAASA,QAAS,GAAK6qX,GAAiB9pX,MAAQ8pX,IAAmB7qX,SAASA,SAASA,SAASA,QAAS,GAAIrjE,KAAK4C,SAAU,CAAEwhE,MAAOpkE,KAAKokE,QAAU8pX,IAAmB,CAAE7pX,WAAWhB,SAASA,QAAS,GAAIrjE,KAAK4C,QAAQyhE,WAAY6pX,GAAiB7pX,cAAiB,CAAEW,YAAa,aACpSopX,GAAMpub,KAAKisb,aAAaU,kBACxBT,GAAYlsb,KAAKksb,UACjBmC,GAAwBnC,GAAU3E,cACtC2E,GAAU3E,cAAgBL,YACtBiH,GAAgBG,6BAChBtub,KAAKqpI,UAET,IAAIklT,GAAkB,IAAI5rX,IAC1B,OAAO3iE,KAAKisb,aAAauC,WAAWJ,GAAKD,GAAiBjH,aAAyB9wZ,KAAK,SAAUq4Z,IAC9FxhU,UAAMg/T,aAAaa,YAAYsB,IAC3BlC,GAAU3E,gBAAkBL,cAC5BgF,GAAU3E,cAAgB8G,IAE9BphU,GAAMg/T,aAAah9T,MAAMxB,MAAM,CAC3B/iG,OAAQ,SAAUukG,IACd,IAAID,GAAck/T,GAAiBl/T,YAC/BA,GACAC,GAAMD,YAAY,CACd5qD,MAAO6oD,GAAM7oD,MACbC,UAAW4oD,GAAM5oD,UACjBszD,mBAAmB,EACnB/J,YAAY,GACb,SAAUq1D,IAAY,OAAOj0D,GAAYi0D,GAAU,CAClDwrQ,gBAAiBA,GAAgB3kb,KACjCu6D,UAAW8pX,GAAgB9pX,cAI/B4qD,GAAMN,WAAW,CACbvqD,MAAO+pX,GAAgB/pX,MACvBC,UAAW8pX,GAAgB9pX,UAC3Bv6D,KAAM2kb,GAAgB3kb,QAIlC68H,eAAgB,SAAUV,IACtBsoT,GAAgBp6Z,IAAI8xG,GAAM7hE,UAG3BqqX,KACRC,QAAQ,WACFH,GAAgBlsX,IAAI4qD,GAAM7oD,QAC3BuqX,GAAoB1hU,OAIhC++T,GAAgBnqb,UAAU+sb,gBAAkB,SAAUhsb,IAClD,IAAIqqH,GAAQjtH,KACRy1C,GAAez1C,KAAKisb,aACnB4C,yBAAyB,CAC1BzqX,MAAOxhE,GAAQw+E,SACf/c,UAAWzhE,GAAQyhE,UACnBx4C,QAASjpB,GAAQipB,UAEhBlkB,UAAU,CACXzD,KAAM,SAAU4qb,IACZ,IAAI9/T,GAAcpsH,GAAQosH,YACtBA,IACA/B,GAAM+B,YAAY,SAAUi0D,GAAUj7K,IAElC,OAAOgnH,GAAYi0D,GAAU,CACzB6rQ,iBAAkBA,GAClBzqX,UAHYr8D,GAAGq8D,eAQ/B/jE,MAAO,SAAUqV,IACT/S,GAAQsqH,QACRtqH,GAAQsqH,QAAQv3G,IAGpBy5G,SAAW59D,WAAgB,uCAAwC77C,OAG3E,YAAK2/I,cAAcnhI,IAAIshB,IAChB,WACCw3E,GAAMqoC,cAAcvqI,OAAO0qB,KAC3BA,GAAarpC,gBAIzB4/a,GAAgBnqb,UAAUktb,WAAa,SAAU7xE,IAC7C,OAAOl9W,KAAKqsb,UAAUnvE,KAE1B8uE,GAAgBnqb,UAAUslb,aAAe,SAAU9iX,IAC/C,OAAIsxD,QAAM31H,KAAKqkE,UAAWA,IACfrkE,KAAK23J,UAAUvkJ,KAChBpT,KAAKiR,SACL2lB,QAAQC,WAElB72B,KAAK4C,QAAQyhE,UAAYA,GACrBrkE,KAAM23J,UAAUvkJ,KAGbpT,KAAKqsb,UAAU,CAClBrnX,YAAahlE,KAAK4C,QAAQ6pb,mBAC1BpoX,UAAWA,IACZ6iX,gBALQtwZ,QAAQC,YAOvBm1Z,GAAgBnqb,UAAUmtH,YAAc,SAAUq7T,IAC9C,IAAI4B,GAAejsb,KAAKisb,aAOpBlJ,GAAYsH,GANH4B,GAAah9T,MAAM+W,KAAK,CACjC5hE,MAAOpkE,KAAK4C,QAAQwhE,MACpBC,UAAWrkE,KAAKqkE,UAChBszD,mBAAmB,EACnB/J,YAAY,IACb38G,OAC2B,CAC1BozD,UAAWrkE,KAAKqkE,YAEhB0+W,KACAkJ,GAAah9T,MAAMN,WAAW,CAC1BvqD,MAAOpkE,KAAK4C,QAAQwhE,MACpBt6D,KAAMi5a,GACN1+W,UAAWrkE,KAAKqkE,YAEpB4nX,GAAa+C,qBAGrBhD,GAAgBnqb,UAAUotb,aAAe,SAAUppX,IAC/C7lE,KAAK4C,QAAQijE,aAAeA,GAC5B7lE,KAAKkvb,iBAETlD,GAAgBnqb,UAAU+vC,YAAc,WACpC5xC,KAAK4C,QAAQijE,aAAe,EAC5B7lE,KAAKkvb,iBAETlD,GAAgBnqb,UAAUstb,qBAAuB,SAAUxvD,GAAQ/8X,IAC/D,GAAIA,GAAQwsb,gBAAiB,CACzB,IAAIpnb,GAAKpF,GAAQoiE,YAAaA,QAAqB,IAAPh9D,GAAgB,cAAgBA,GAAIC,GAAKrF,GAAQ6pb,mBAAoBA,QAA4B,IAAPxkb,GAAgB+8D,GAAc/8D,GAChJ,YAAhB+8D,KAGApiE,GAAQoiE,YADgC,mBAA5BpiE,GAAQwsb,gBACExsb,GAAQwsb,gBAAgBpqX,GAAa,CACvD26T,OAAQA,GACR/8X,QAASA,GACT6uI,WAAYzxI,KACZysb,mBAAoBA,KAGR,sBAAf4C,GACqB5C,GAGA7pb,GAAQwsb,iBAGtC,OAAOxsb,GAAQoiE,aAEnBgnX,GAAgBnqb,UAAU2nI,MAAQ,SAAU5mI,GAAS0sb,IACjD,YAAKrD,aAAasD,mBAAmBvvb,MAC9BA,KAAKisb,aAAauD,qBAAqBxvb,KAAK0sb,QAAS9pb,GAAS0sb,KAEzEtD,GAAgBnqb,UAAUqtb,cAAgB,WACtC,IAAIjiU,GAAQjtH,KACZ,IAAIA,KAAKisb,aAAawD,QAGtB,KAAeC,GAAN1vb,KAAuB0vb,YAAa7pX,GAApC7lE,KAAsD4C,QAAQijE,aACvE,IAAKA,GAKD,YAJI6pX,KACA5mW,aAAa4mW,GAAYhvW,gBAClB1gF,KAAK0vb,cAIpB,IAAIA,IACAA,GAAYv/Y,WAAa01B,GAG7BupD,UAAU59D,QAAUqU,GAAc,mEAAoErU,QAAUqU,GAAc,KACnH6pX,KAAgB1vb,KAAK0vb,YAAc,KACzCv/Y,SAAW01B,GAChB,IAAI8pX,GAAa,WACT1iU,GAAMyiU,cACDxC,EAAyBjgU,GAAMi/T,UAAU3E,eAM1CD,KALAr6T,GAAMo/T,UAAU,CACZrnX,YAAa,gBACdkiX,QAAoB9wZ,KAAKkxZ,GAAMA,MAQ1CA,GAAO,WACP,IAAInnb,GAAO8sH,GAAMyiU,YACbvvb,KACA2oF,aAAa3oF,GAAKugF,SAClBvgF,GAAKugF,QAAU/oD,WAAWg4Z,GAAYxvb,GAAKgwC,YAGnDm3Y,QAEJ0E,GAAgBnqb,UAAU2rb,iBAAmB,SAAUzK,GAAW1+W,IAC9D,YAAkB,IAAdA,KAAwBA,GAAYrkE,KAAKqkE,WAC7CrkE,KAAKo9C,MAAOimB,SAASA,QAAS,GAAIrjE,KAAKo9C,MAAO,CAAEnsC,OAAQjR,KAAKisb,aAAa2D,uBAChE7M,IACAr/S,QAAUq/S,IAAY1+W,UAAWA,MACtC82D,QAAgB4nT,GAAUjyZ,gBACpB9wB,KAAKo9C,KAAK98C,MAEdN,KAAKo9C,MAEhB4uY,GAAgBnqb,UAAUwqb,UAAY,SAAUnvE,GAAYoyE,IACxD,IAAIriU,GAAQjtH,KACZA,KAAKusb,YAAa,EAClB,IAAIsD,GAAuBP,KAAqBpI,WAC5CoI,KAAqBpI,aACrBoI,KAAqBpI,OACrB4I,GAAe9vb,KAAK4C,QAAQyhE,UAC5B0rX,GAAiB/vb,KAAK4C,QAAQoiE,YAC9BgrX,IAAgB35T,QAAQr2H,KAAK4C,QAASs6W,IAAc,IACpDt6W,GAAUitb,GACRG,GACAttb,GAAO1C,KAAK4C,QAASotb,IACtBH,KACD7vb,KAAKkvb,gBACDhyE,IACAA,GAAW74S,aACVsxD,QAAMunP,GAAW74S,UAAWyrX,KACL,YAAxBltb,GAAQoiE,aACRpiE,GAAQoiE,cAAgB+qX,KACxB/vb,KAAKmvb,qBAAqB,oBAAqBvsb,SACtB,IAArB0sb,KACAA,GAAmBpI,kBAI/B,IAAI7iX,GAAYzhE,GAAQyhE,YAAahB,QAAS,GAAIzgE,GAAQyhE,WACtD4rX,GAAUjwb,KAAKwpI,MAAM5mI,GAAS0sb,IAC9B5iU,GAAW,CACXxoH,KAAM,SAAU+M,IACZg8G,GAAMijU,aAAaj/a,GAAQozD,KAE/B/jE,MAAO,SAAUA,IACb2sH,GAAM05P,YAAYrmX,GAAO+jE,MAGjC,OAAKwrX,KACG7vb,KAAKiwb,SAAWjwb,KAAK0sH,UACrB1sH,KAAKiwb,QAAQ/E,eAAelrb,KAAK0sH,UAErC1sH,KAAKiwb,QAAUA,GACfjwb,KAAK0sH,SAAWA,IAEpBujU,GAAQhF,YAAYv+T,IACbujU,GAAQjzN,SAEnBgvN,GAAgBnqb,UAAUwnI,QAAU,WAChCrpI,KAAKkwb,aAAalwb,KAAK+sb,kBAAiB,GAAQ/sb,KAAKqkE,YAEzD2nX,GAAgBnqb,UAAUqub,aAAe,SAAUj/a,GAAQozD,IACvD,IAAI8rX,GAAYnwb,KAAK4tb,gBACjBuC,IAAanwb,KAAKytb,0BAA0Bx8a,QACxCk/a,KAAcl/a,GAAOgoM,SAAWj5M,KAAK4C,QAAQ+0H,oBAC7C33H,KAAKwtb,iBAAiBv8a,GAAQozD,IAElC+mX,GAAuBprb,KAAK23J,UAAW,OAAQ1mJ,MAGvD+6a,GAAgBnqb,UAAU8kX,YAAc,SAAUrmX,GAAO+jE,IACrD,IAAIrvC,IAAcquC,SAASA,QAAS,GAAIrjE,KAAKitb,iBAAkB,CAAE3sb,MAAOA,GAAOwwB,OAAQxwB,GAAMusH,cAAe06T,cAAeL,QAAqBjmY,SAAS,IACzJjhD,KAAKwtb,iBAAiBx4Z,GAAaqvC,IACnC+mX,GAAuBprb,KAAK23J,UAAW,QAAS33J,KAAKo9C,KAAK98C,MAAQA,KAEtE0rb,GAAgBnqb,UAAUuub,aAAe,WACrC,OAAOpwb,KAAK23J,UAAUvkJ,KAAO,GAEjC44a,GAAgBnqb,UAAUyqb,cAAgB,WAClCtsb,KAAKusb,aAELvsb,KAAKiwb,SAAWjwb,KAAK0sH,WACrB1sH,KAAKiwb,QAAQ/E,eAAelrb,KAAK0sH,iBAC1B1sH,KAAKiwb,eACLjwb,KAAK0sH,UAEhB1sH,KAAK4xC,cACL5xC,KAAKs1J,cAActzI,QAAQ,SAAU7V,IAAO,OAAOA,GAAIC,gBACvDpM,KAAKs1J,cAAcnxJ,QACnBnE,KAAKisb,aAAaoE,UAAUrwb,KAAK0sb,SACjC1sb,KAAK23J,UAAUxzJ,QACfnE,KAAKusb,YAAa,IAEfP,GAjdY,CAkdrBjtW,KAGK,YAA6BuxW,IAChC,IAAItob,GAAKsob,GAAS1tb,QAASoiE,GAAch9D,GAAGg9D,YAAaoqX,GAAkBpnb,GAAGonb,gBAC9E,MAAoB,sBAAhBpqX,IACgB,iBAAhBA,GACOsrX,GAASjE,UAAU,CACtBrnX,YAAa,cACboqX,gBAAiB,WAEb,OADApvb,KAAKovb,gBAAkBA,GACQ,mBAApBA,GACAA,GAAgBpkb,MAAMhL,KAAM+9D,WAEhCiH,MAIZsrX,GAASjE,YAEpB,YAAkD/rb,IAC9C8uH,SAAW59D,WAAgB,kBAAmBlxD,GAAMR,QAASQ,GAAM+zD,OAEhE,YAA+B0jE,IAC9B3I,SAAW2I,IACX3I,SAAW59D,WAAgB,gCAAgC93C,OAAOvT,KAAK2kB,UAAUitG,KAAWA,IAvBpG4zT,GAAsBK,yCCrdlBuE,EAAc,WACd,YAAoBvob,IAChB,IAAsBwob,GAASxob,GAAGwob,OAAQC,GAAYzob,GAAGyob,UAAWC,GAAkB1ob,GAAG0ob,gBACzF1wb,KAAKivH,MADOjnH,GAAGinH,MAEXuhU,KACAxwb,KAAKwwb,OAASA,IAEdC,IACAzwb,KAAK2wb,aAAaF,IAElBC,IACA1wb,KAAK4wb,mBAAmBF,IAGhCH,UAAW1ub,UAAU8ub,aAAe,SAAUF,IAC1C,IAAIxjU,GAAQjtH,KACZA,KAAKywb,UAAYzwb,KAAKywb,WAAa,GACnCjrb,MAAU0L,QAAQu/a,IACdA,GAAUzua,QAAQ,SAAU6ua,IACxB5jU,GAAMwjU,WAAYK,SAAU7jU,GAAMwjU,UAAWI,MAIjD7wb,KAAKywb,WAAYK,SAAU9wb,KAAKywb,UAAWA,KAGnDF,GAAW1ub,UAAUkvb,aAAe,SAAUN,IAC1Czwb,KAAKywb,UAAY,GACjBzwb,KAAK2wb,aAAaF,KAEtBF,GAAW1ub,UAAUmvb,aAAe,WAChC,OAAOhxb,KAAKywb,WAAa,IAE7BF,GAAW1ub,UAAUovb,aAAe,SAAUjpb,IAC1C,IAAIo5E,GAAWp5E,GAAGo5E,SAAU8vW,GAAelpb,GAAGkpb,aAAcrla,GAAU7jB,GAAG6jB,QAASw4C,GAAYr8D,GAAGq8D,UAAWp8D,GAAKD,GAAGmpb,uBAAwBA,QAAgC,IAAPlpb,IAAwBA,GAC7L,OAAO8uB,QAAU/2B,UAAM,OAAQ,EAAQ,WACnC,OAAOoxb,QAAYpxb,KAAM,SAAU03H,IAC/B,OAAIt2C,GACO,CAAC,EAAGphF,KAAKqxb,gBAAgBjwW,GAAU8vW,GAAapnb,KAAM+hB,GAASw4C,GAAWrkE,KAAK0wb,gBAAiBS,IAAwB/6Z,KAAK,SAAUk7Z,IAAe,OAAQjuX,SAASA,QAAS,GAAI6tX,IAAe,CAAEpnb,KAAMwnb,GAAYrgb,YAE3N,CAAC,EAAGigb,SAIvBX,GAAW1ub,UAAU+ub,mBAAqB,SAAUF,IAChD1wb,KAAK0wb,gBAAkBA,IAE3BH,GAAW1ub,UAAU0vb,mBAAqB,WACtC,OAAOvxb,KAAK0wb,iBAEhBH,GAAW1ub,UAAU2vb,YAAc,SAAUpwW,IACzC,OAAI+7N,SAAc,CAAC,UAAW/7N,KACtBphF,KAAKywb,UACErvW,GAGR,MAEXmvW,GAAW1ub,UAAU4vb,YAAc,SAAUrwW,IACzC,OAAOswW,SAA6BtwW,KAExCmvW,GAAW1ub,UAAU8vb,eAAiB,SAAU9la,IAC5C,IAAIojG,GAAQjvH,KAAKivH,MACjB,OAAO5rD,SAASA,QAAS,GAAIx3C,IAAU,CAAEojG,MAAOA,GAAO2iU,YAAa,SAAU7ja,IACtE,OAAOkhG,GAAMhB,SAASlgG,QAGlCwia,GAAW1ub,UAAUgwb,qBAAuB,SAAUzwW,GAAU/c,GAAWx4C,IACvE,YAAkB,IAAdw4C,KAAwBA,GAAY,SACxB,IAAZx4C,KAAsBA,GAAU,KAC7BkL,QAAU/2B,UAAM,OAAQ,EAAQ,WACnC,OAAOoxb,QAAYpxb,KAAM,SAAUgI,IAC/B,OAAIo5E,GACO,CAAC,EAAGphF,KAAKqxb,gBAAgBjwW,GAAUphF,KAAK8xb,wBAAwB1wW,GAAU/c,KAAc,GAAIrkE,KAAK2xb,eAAe9la,IAAUw4C,IAAWjuC,KAAK,SAAUtsB,IAAQ,OAAQu5D,SAASA,QAAS,GAAIgB,IAAYv6D,GAAKiob,sBAE/M,CAAC,GAAG1uX,QAAS,GAAIgB,UAIpCksX,GAAW1ub,UAAUmwb,qBAAuB,SAAU5wW,IAClD,IAAI6wW,IAAiB,EACrB/mC,eAAM9pU,GAAU,CACZ+pU,UAAW,CACPnpO,MAAO,SAAUtuH,IACb,GAAwB,WAApBA,GAAKvlD,KAAK5M,OAAsBmyD,GAAKqK,YACrCk0X,GAAiBv+X,GAAKqK,UAAU90D,KAAK,SAAUu6D,IAC3C,MAA0B,WAAnBA,GAAIr1D,KAAK5M,OACO,iBAAnBiiE,GAAIjiE,MAAM02D,OACU,IAApBuL,GAAIjiE,MAAMA,SAGd,OAAO2wb,SAMpBD,IAEX1B,GAAW1ub,UAAUiwb,wBAA0B,SAAU1wW,GAAU/c,IAC/D,OAAOrkE,KAAKivH,MAAM+W,KAAK,CACnB5hE,OAAO+tX,SAA2B/wW,IAClC/c,UAAWA,GACXszD,mBAAmB,EACnB/J,YAAY,IACb38G,QAEPs/a,GAAW1ub,UAAUwvb,gBAAkB,SAAUjwW,GAAUgxW,GAAWvma,GAASw4C,GAAWqsX,GAAiBS,IACvG,YAAgB,IAAZtla,KAAsBA,GAAU,SAClB,IAAdw4C,KAAwBA,GAAY,SAChB,IAApBqsX,KAA8BA,GAAkB,WAAc,OAAO,SAC1C,IAA3BS,KAAqCA,IAAyB,IAC3Dp6Z,QAAU/2B,UAAM,OAAQ,EAAQ,WACnC,IAAIqyb,GAAgB/mC,GAAWlzR,GAAak6T,GAAqBC,GAAsBvqb,GAAIinH,GAAOuhU,GAAQgC,GAC1G,OAAOpB,QAAYpxb,KAAM,SAAUiI,IAC/Boqb,WAAiBn6T,SAAkB92C,IACnCkqU,IAAYhzR,SAAuBl3C,IACnCg3C,IAAcC,QAAkBizR,IAGhCinC,IAFAD,GAAsBD,GACjB91X,WAEC+1X,GAAoBltb,OAAO,GAAGuM,cAC5B2gb,GAAoB1sb,MAAM,GAC5B,QACKqpH,IAAXjnH,GAAKhI,MAAiBivH,MAAOuhU,GAASxob,GAAGwob,OACzCgC,GAAc,CACVp6T,YAAaA,GACbvsG,SAASw3C,SAASA,QAAS,GAAIx3C,IAAU,CAAEojG,MAAOA,GAAOuhU,OAAQA,KACjEnsX,UAAWA,GACXqsX,gBAAiBA,GACjB6B,qBAAsBA,GACtBR,kBAAmB,GACnBZ,uBAAwBA,IAErB,CAAC,EAAGnxb,KAAKyyb,oBAAoBJ,GAAe11X,aAAcy1X,GAAWI,IAAap8Z,KAAK,SAAUnlB,IAAU,MAAQ,CAClHA,OAAQA,GACR8gb,kBAAmBS,GAAYT,2BAKnDxB,GAAW1ub,UAAU4wb,oBAAsB,SAAU91X,GAAcy1X,GAAWI,IAC1E,OAAOz7Z,QAAU/2B,UAAM,OAAQ,EAAQ,WACnC,IAAIo4H,GAAavsG,GAASw4C,GAAWquX,GACjCzlU,GAAQjtH,KACZ,OAAOoxb,QAAYpxb,KAAM,SAAUgI,IAC/BowH,UAAco6T,GAAYp6T,YAAavsG,GAAU2ma,GAAY3ma,QAASw4C,GAAYmuX,GAAYnuX,UAC9FquX,GAAiB,CAACN,IAmCX,CAAC,EAAGx7Z,QAAQ8zJ,IAAI/tH,GAAac,WAAWh4D,IAlCrC,SAAUuzH,IAAa,OAAOjiG,QAAUk2F,QAAO,OAAQ,EAAQ,WACrE,IAAIyB,GACJ,OAAO0iU,QAAYpxb,KAAM,SAAUgI,IAC/B,OAAKixH,SAAcD,GAAW30D,KAG1B60D,SAAQF,IACD,CAAC,EAAGh5H,KAAK2yb,aAAa35T,GAAWo5T,GAAWI,IAAap8Z,KAAK,SAAUw8Z,IACvE,IAAI5qb,QACuB,IAAhB4qb,IACPF,GAAe9hb,OAAM5I,GAAK,KACnBmxH,SAAuBH,KAAc45T,GACxC5qb,UAIhBunZ,SAAiBv2R,IACjBtK,GAAWsK,IAGXtK,GAAW0J,GAAYY,GAAU7qH,KAAK5M,OACtC6tH,SAAU59D,QAAUk9D,GAAU,qBAAqBh1G,OAAOs/G,GAAU7qH,KAAK5M,SAAUiwD,QAAUk9D,GAAU,IAEvGA,IAAYA,GAASlwD,eAEjBg0X,GAAY9B,gBAAgB0B,GADhB1jU,GAASlwD,cAAcrwD,KAAK5M,MACcsqB,IAC/C,CAAC,EAAG7rB,KAAKyyb,oBAAoB/jU,GAAS/xD,aAAcy1X,GAAWI,IAAap8Z,KAAK,SAAUy8Z,IAC1FH,GAAe9hb,KAAKiib,OAI7B,CAAC,IA3BG,CAAC,UA8ByCz8Z,KAAK,WAC1D,OAAOujG,SAAe+4T,YAK1CnC,GAAW1ub,UAAU8wb,aAAe,SAAUp7T,GAAO66T,GAAWI,IAC5D,OAAOz7Z,QAAU/2B,UAAM,OAAQ,EAAQ,WACnC,IAAIqkE,GAAW4sD,GAAW6hU,GAAkBC,GAAWC,GAAeC,GAAeC,GAAcC,GAAat8Z,GAC5Go2F,GAAQjtH,KACZ,OAAOoxb,QAAYpxb,KAAM,SAAUgI,IAC/Bq8D,UAAYmuX,GAAYnuX,UACxB4sD,GAAYsG,GAAMppH,KAAK5M,MACvBuxb,IAAmB35T,SAAuB5B,IAC1Cw7T,GAAY9hU,KAAc6hU,GAC1BE,GAAgBZ,GAAUU,KAAqBV,GAAUnhU,IACzDgiU,GAAgBr8Z,QAAQC,QAAQm8Z,MAC3BR,GAAYrB,wBACbnxb,KAAKgyb,qBAAqBz6T,OAC1B27T,GAAed,GAAUhgU,YAAcogU,GAAYD,sBACnDY,GAAcnzb,KAAKywb,WAAazwb,KAAKywb,UAAUyC,OAE3Cr8Z,GAAUs8Z,GAAYJ,GAAY9hU,GAAY6hU,OAE1CG,GAAgBr8Z,QAAQC,QAAQipG,gBAAoB9/H,KAAKivH,MAAOp4F,GAAS,CACrEu7Z,IACA92T,SAAyB/D,GAAOlzD,IAChCmuX,GAAY3ma,QACZ,CAAE0rG,MAAOA,GAAOa,YAAao6T,GAAYp6T,kBAKlD,CAAC,EAAG66T,GAAc78Z,KAAK,SAAUnlB,IAgBhC,YAfe,IAAXA,KAAqBA,GAAS+hb,IAC9Bz7T,GAAM76D,YACN66D,GAAM76D,WAAW16C,QAAQ,SAAU+7Q,IACF,WAAzBA,GAAU5vR,KAAK5M,OAAsBw8R,GAAUhgO,WAC/CggO,GAAUhgO,UAAU/7C,QAAQ,SAAUwhD,IACX,OAAnBA,GAAIr1D,KAAK5M,OAAqC,gBAAnBiiE,GAAIjiE,MAAM02D,OACrCu6X,GAAYT,kBAAkBvuX,GAAIjiE,MAAMA,OAAS0P,QAMhEsmH,GAAM56D,cAGG,MAAV1rD,GAGAzL,MAAM0L,QAAQD,IACPg8G,GAAMmmU,wBAAwB77T,GAAOtmH,GAAQuhb,IAEpDj7T,GAAM56D,aACCswD,GAAMwlU,oBAAoBl7T,GAAM56D,aAAc1rD,GAAQuhb,SADjE,EALWvhb,WAY/Bs/a,GAAW1ub,UAAUuxb,wBAA0B,SAAU77T,GAAOtmH,GAAQuhb,IACpE,IAAIvlU,GAAQjtH,KACZ,OAAO42B,QAAQ8zJ,IAAIz5K,GAAOxL,IAAI,SAAUsU,IACpC,OAAa,OAATA,GACO,KAEPvU,MAAM0L,QAAQ6I,IACPkzG,GAAMmmU,wBAAwB77T,GAAOx9G,GAAMy4a,IAElDj7T,GAAM56D,aACCswD,GAAMwlU,oBAAoBl7T,GAAM56D,aAAc5iD,GAAMy4a,SAD/D,MAKDjC,GAlQO,GCCd8C,GAA0B,IAAK1+T,MAAgB18B,QAAU3qE,KAC7D,YAAoC2hG,GAAO0/E,IACvC,IAAIkjK,GAAW5iP,GAAM0/E,IACG,mBAAbkjK,KACP5iP,GAAM0/E,IAAc,WAChB0kP,UAAwB/xb,IAAI2tH,IAAQokU,GAAwBjyb,IAAI6tH,IAAS,GAAK,MACvE4iP,GAAS7mW,MAAMhL,KAAM+9D,aAIxC,YAA6B59D,IACrBA,GAAKmzb,gBACLxqW,aAAa3oF,GAAKmzb,eAClBnzb,GAAKmzb,mBAAmB,GAGhC,IAAIC,GAAa,WACb,YAAmBtH,GAAcS,SACb,IAAZA,KAAsBA,GAAUT,GAAaU,mBACjD3sb,KAAK0sb,QAAUA,GACf1sb,KAAKywU,UAAY,IAAI9tQ,IACrB3iE,KAAKohF,SAAW,KAChBphF,KAAKwzb,cAAgB,EACrBxzb,KAAKs1J,cAAgB,IAAI3yF,IACzB3iE,KAAKyzb,SAAU,EACfzzb,KAAKqyH,OAAQ,EACbryH,KAAK0zb,gBAAkB,KACvB,IAAIzkU,GAAQjvH,KAAKivH,MAAQg9T,GAAah9T,MACjCokU,GAAwBhxX,IAAI4sD,MAC7BokU,GAAwB/xb,IAAI2tH,GAAO,GACnC0kU,GAA2B1kU,GAAO,SAClC0kU,GAA2B1kU,GAAO,UAClC0kU,GAA2B1kU,GAAO,UAG1CskU,UAAU1xb,UAAUY,KAAO,SAAU2hE,IACjC,IAAImjX,GAAgBnjX,GAAMmjX,eAAiBL,UAC3C,OAAIlnb,KAAKqkE,WACLrkE,KAAKunb,gBAAkBL,aACtBvxT,QAAM31H,KAAKqkE,UAAWD,GAAMC,aAC7BkjX,GAAgBL,iBAEfvxT,QAAMvxD,GAAMC,UAAWrkE,KAAKqkE,aAC7BrkE,KAAKgnI,cAAW,GAEpBplI,OAAOc,OAAO1C,KAAM,CAChBohF,SAAUhd,GAAMgd,SAChB/c,UAAWD,GAAMC,UACjB0oD,aAAc,KACdF,cAAe7sH,KAAK6sH,eAAiB,GACrC06T,cAAeA,KAEfnjX,GAAMsvX,iBACN1zb,KAAKuvb,mBAAmBnrX,GAAMsvX,iBAE9BtvX,GAAMovX,gBACNxzb,KAAKwzb,cAAgBpvX,GAAMovX,eAExBxzb,MAEXuzb,GAAU1xb,UAAUipD,MAAQ,WACxB8oY,GAAoB5zb,MACpBA,KAAKgnI,cAAW,EAChBhnI,KAAKqyH,OAAQ,GAEjBkhU,GAAU1xb,UAAUurb,QAAU,SAAU/oX,SAClB,IAAdA,KAAwBA,GAAYrkE,KAAKqkE,WAC7C,IAAIzhE,GAAU5C,KAAK6zb,eAAexvX,IAClC,GAAIrkE,KAAKgnI,WAAYrR,QAAM/yH,GAAS5C,KAAKgnI,SAASpkI,SAC9C,OAAO5C,KAAKgnI,SAAShB,KAEzBhmI,KAAK8zb,YAAY9zb,KAAKqkE,UAAYA,IAClC,IAAI0vX,GAAK/zb,KAAK0zb,gBACd,GAAIK,IAAiC,aAA3BA,GAAGnxb,QAAQoiE,YACjB,MAAO,CAAEib,UAAU,GAEvB,IAAI+lD,GAAOhmI,KAAKivH,MAAM+W,KAAKpjI,IAC3B,YAAKoxb,eAAehuT,GAAMpjI,IACnBojI,IAEXutT,GAAU1xb,UAAUmyb,eAAiB,SAAUhuT,GAAMpjI,IACjD5C,KAAKgnI,SAAWhB,GAAO,CACnBA,KAAMA,GACNpjI,QAASA,IAAW5C,KAAK6zb,uBACzB,GAERN,GAAU1xb,UAAUgyb,eAAiB,SAAUxvX,IAC3C,IAAIr8D,GACJ,YAAkB,IAAdq8D,KAAwBA,GAAYrkE,KAAKqkE,WACtC,CACHD,MAAOpkE,KAAKohF,SACZ/c,UAAWA,GACXszD,mBAAmB,EACnB/J,YAAY,EACZsI,gBAAiD,QAA/BluH,GAAKhI,KAAK0zb,uBAAoC,IAAP1rb,QAAgB,EAASA,GAAGpF,QAAQszH,kBAGrGq9T,GAAU1xb,UAAUoyb,QAAU,SAAUjuT,IACpC,IAAI/Y,GAAQjtH,KACRk0b,GAAUl0b,KAAKgnI,UAAYhnI,KAAKgnI,SAAShB,KAC7ChmI,KAAKg0b,eAAehuT,KACfhmI,KAAKqyH,SACLsD,QAAMu+T,IAAWA,GAAQjjb,OAAQ+0H,IAAQA,GAAK/0H,UAC/CjR,KAAKqyH,OAAQ,EACRryH,KAAKszb,gBACNtzb,KAAKszb,cAAgB37Z,WAAW,WAAc,OAAOs1F,GAAMkhB,UAAa,MAIpFolT,GAAU1xb,UAAU0tb,mBAAqB,SAAUwE,IAC/C,IAAI9mU,GAAQjtH,KACR+zb,KAAO/zb,KAAK0zb,kBAEZ1zb,KAAKm0b,YACLn0b,KAAKywU,UAAU1lT,OAAO/qB,KAAKm0b,YAE/Bn0b,KAAK0zb,gBAAkBK,GACvBK,IACIL,GAAG7H,UAAelsb,KAClBA,KAAKywU,UAAUt8S,IAAIn0B,KAAKm0b,WAAa,WACtBlnU,GAAMmgU,UACRnmT,0BACL8sT,GAAG1qT,UAGHslT,GAAoBoF,cAKrB/zb,KAAKm0b,aAGpBZ,GAAU1xb,UAAUssI,OAAS,WACzB,IAAIlhB,GAAQjtH,KACZ4zb,GAAoB5zb,MAChBA,KAAKq0b,gBACLr0b,KAAKywU,UAAUzuT,QAAQ,SAAUogJ,IAAY,OAAOA,GAASn1C,MAEjEjtH,KAAKqyH,OAAQ,GAEjBkhU,GAAU1xb,UAAUwyb,aAAe,WAC/B,IAAKr0b,KAAKqyH,QAAUryH,KAAKywU,UAAUr9T,KAC/B,OAAO,EAEX,GAAI85a,EAAyBltb,KAAKunb,gBAC9Bvnb,KAAK0zb,gBAAiB,CACtB,IAAI1uX,GAAchlE,KAAK0zb,gBAAgB9wb,QAAQoiE,YAC/C,GAAoB,eAAhBA,IACgB,sBAAhBA,GACA,OAAO,EAGf,OAAO,GAEXuuX,GAAU1xb,UAAUyyb,KAAO,WACvB,IAAKt0b,KAAKyzb,QAAS,CACfzzb,KAAKyzb,SAAU,EACfzzb,KAAK8qD,QACL9qD,KAAKixD,SACLjxD,KAAKixD,OAASsiY,GAAU1xb,UAAUovD,OAClCjxD,KAAKs1J,cAActzI,QAAQ,SAAU7V,IAAO,OAAOA,GAAIC,gBACvD,IAAI2nb,GAAK/zb,KAAK0zb,gBACVK,IACAA,GAAGniZ,gBAGf2hZ,GAAU1xb,UAAUovD,OAAS,aAC7BsiY,GAAU1xb,UAAUiyb,YAAc,SAAUzvX,IACxC,IAAI4oD,GAAQjtH,UACM,IAAdqkE,KAAwBA,GAAYrkE,KAAKqkE,WAC7C,IAAI0vX,GAAK/zb,KAAK0zb,gBACd,IAAIK,IAAiC,aAA3BA,GAAGnxb,QAAQoiE,YAGrB,KAAIuvX,IAAelxX,SAASA,QAAS,GAAIrjE,KAAK6zb,eAAexvX,KAAa,CAAEmwX,QAASx0b,KAAMo2C,SAAU,SAAU4vF,IAAQ,OAAO/Y,GAAMgnU,QAAQjuT,SACvIhmI,KAAKy0b,aACL9+T,QAAM4+T,GAAcv0b,KAAKy0b,cAC1Bz0b,KAAKixD,SACLjxD,KAAKixD,OAASjxD,KAAKivH,MAAMgX,MAAMjmI,KAAKy0b,UAAYF,OAGxDhB,GAAU1xb,UAAUosb,eAAiB,WACjCjub,KAAK00b,eAAY,GAErBnB,GAAU1xb,UAAU8yb,YAAc,SAAU1jb,GAAQozD,IAChD,IAAIqwX,GAAY10b,KAAK00b,UACrB,QAASA,IACLA,GAAUE,UAAYvB,GAAwBjyb,IAAIpB,KAAKivH,SACvD0G,QAAMtxD,GAAWqwX,GAAUrwX,aAC3BsxD,QAAM1kH,GAAOnH,KAAM4qb,GAAUzjb,OAAOnH,QAE5Cypb,GAAU1xb,UAAUgzb,WAAa,SAAU5jb,GAAQrO,GAASkyb,IACxD,IAAI7nU,GAAQjtH,KACZA,KAAK6sH,eAAgBsO,QAAgBlqH,GAAO6f,QAAU7f,GAAO6f,OAAS,GACtE9wB,KAAK8qD,QACuB,aAA5BukY,GAAYrqX,YACRhlE,KAAKg0b,eAAe,CAAE/ib,OAAQA,GAAOnH,KAAMm2E,UAAU,GAAQjgF,KAAK6zb,eAAejxb,GAAQyhE,YAE7D,IAAvBywX,KACDC,GAAkB9jb,GAAQrO,GAAQoyb,aAClCh1b,KAAKivH,MAAMtB,mBAAmB,SAAUsB,IACpC,GAAIhC,GAAM0nU,YAAY1jb,GAAQrO,GAAQyhE,WAClC4qD,GAAMN,WAAW,CACbvqD,MAAO6oD,GAAM7rC,SACbt3E,KAAMmH,GAAOnH,KACbu6D,UAAWzhE,GAAQyhE,UACnBg8D,UAAkC,IAAvBy0T,KAEf7nU,GAAMynU,UAAY,CACdzjb,OAAQA,GACRozD,UAAWzhE,GAAQyhE,UACnBuwX,QAASvB,GAAwBjyb,IAAI6rH,GAAMgC,gBAI3ChC,GAAM+Z,UACN/Z,GAAM+Z,SAAShB,KAAK/lD,SAEpB,YADAhvE,GAAOnH,KAAOmjH,GAAM+Z,SAAShB,KAAK/0H,QAI1C,IAAIgkb,GAAchoU,GAAM4mU,eAAejxb,GAAQyhE,WAC3C2hE,GAAO/W,GAAM+W,KAAKivT,IACjBhoU,GAAMwmU,SACPxmU,GAAM6mU,YAAYlxb,GAAQyhE,WAE9B4oD,GAAM+mU,eAAehuT,GAAMivT,IACvBjvT,GAAK/lD,WACLhvE,GAAOnH,KAAOk8H,GAAK/0H,UAK3BjR,KAAK00b,eAAY,IAI7BnB,GAAU1xb,UAAUqzb,UAAY,WAC5B,YAAKnoU,aAAe,KACb/sH,KAAKunb,cAAgBL,SAEhCqM,GAAU1xb,UAAUszb,UAAY,SAAU70b,IACtC,YAAKinb,cAAgBL,QACrBlnb,KAAK00b,eAAY,EACjB10b,KAAK8qD,QACDxqD,GAAMusH,gBACN7sH,KAAK6sH,cAAgBvsH,GAAMusH,eAE3BvsH,GAAMysH,eACN/sH,KAAK+sH,aAAezsH,GAAMysH,cAEvBzsH,IAEJizb,GA9OM,GAiPV,YAA2Btib,GAAQ+jb,SAClB,IAAhBA,KAA0BA,GAAc,QAC5C,IAAII,GAA+B,WAAhBJ,IACC,QAAhBA,GACAK,IAAmBC,GAAsBrkb,IAC7C,OAAKokb,IAAmBD,IAAgBnkb,GAAOnH,OAC3Curb,IAAkB,GAEfA,GCpQX,IAAI/ub,GAAiB1E,OAAOC,UAAUyE,eAClCivb,GAAgB,WAChB,YAAsBvtb,IAClB,IAAIinH,GAAQjnH,GAAGinH,MAAOn5G,GAAO9N,GAAG8N,KAAMm3E,GAAiBjlF,GAAGilF,eAAgBhlF,GAAKD,GAAGwtb,mBAAoBA,QAA4B,IAAPvtb,IAAwBA,GAAIwtb,GAAcztb,GAAGytb,YAAa/9T,GAAK1vH,GAAGynb,QAASA,QAAiB,IAAP/3T,IAAwBA,GAAIE,GAAK5vH,GAAGogI,gBAAiBA,QAAyB,IAAPxQ,GAAgB,GAAKA,GAAI89T,GAAa1tb,GAAG0tb,WAAY9F,GAAyB5nb,GAAG4nb,uBACxW5vb,KAAKooI,gBAAkB,GACvBpoI,KAAK4rP,QAAU,IAAIt+N,IACnBttB,KAAK21b,eAAiB,IAAIroa,IAC1BttB,KAAK41b,eAAiB,IAAKjhU,MAAgB18B,QAAU3qE,KACrDttB,KAAK61b,eAAiB,EACtB71b,KAAK81b,iBAAmB,EACxB91b,KAAK+1b,kBAAoB,EACzB/1b,KAAKg2b,wBAA0B,IAAI1oa,IACnCttB,KAAKivH,MAAQA,GACbjvH,KAAK8V,KAAOA,GACZ9V,KAAKitF,eAAiBA,IAAkBrrF,OAAO2Y,OAAO,MACtDva,KAAKw1b,mBAAqBA,GAC1Bx1b,KAAKooI,gBAAkBA,GACvBpoI,KAAK01b,WAAaA,IAAc,IAAInF,EAAW,CAAEthU,MAAOA,KACxDjvH,KAAKyvb,QAAUA,GACfzvb,KAAK4vb,yBAA2BA,IAC3B5vb,KAAKy1b,YAAcA,MACpBz1b,KAAKi2b,cAAgBr0b,OAAO2Y,OAAO,OAG3Cg7a,UAAa1zb,UAAUyyb,KAAO,WAC1B,IAAIrnU,GAAQjtH,KACZA,KAAK4rP,QAAQ5pO,QAAQ,SAAU6iO,GAAO6nM,IAClCz/T,GAAMipU,qBAAqBxJ,MAE/B1sb,KAAKm2b,qBAAqB/mU,QAAU,IAAIsR,KAAe,kDAAoD,IAAIA,KAAe,MAElI60T,GAAa1zb,UAAUs0b,qBAAuB,SAAU71b,IACpDN,KAAK21b,eAAe3za,QAAQ,SAAUivC,IAAU,OAAOA,GAAO3wD,MAC9DN,KAAK21b,eAAexxb,SAExBoxb,GAAa1zb,UAAUijE,OAAS,SAAU98D,IACtC,IAAIC,GAAIyvH,GACJ3yD,GAAW/8D,GAAG+8D,SAAUV,GAAYr8D,GAAGq8D,UAAW+xX,GAAqBpub,GAAGoub,mBAAoBC,GAAgBrub,GAAGqub,cAAez+T,GAAK5vH,GAAGsub,eAAgBA,QAAwB,IAAP1+T,GAAgB,GAAKA,GAAIi8Q,GAAK7rY,GAAGuub,oBAAqBA,QAA6B,IAAP1iD,IAAwBA,GAAI2iD,GAAoBxub,GAAG0iB,OAAQ+ra,GAAiBzub,GAAGyub,eAAgBxlC,GAAKjpZ,GAAGg9D,YAAaA,QAAqB,IAAPisV,IAAuD,QAArChpZ,GAAKjI,KAAKitF,eAAenoB,cAA2B,IAAP78D,QAAgB,EAASA,GAAG+8D,cAAgB,eAAiBisV,GAAIC,GAAKlpZ,GAAGgtb,YAAaA,QAAqB,IAAP9jC,IAAuD,QAArCx5R,GAAK13H,KAAKitF,eAAenoB,cAA2B,IAAP4yD,QAAgB,EAASA,GAAGs9T,cAAgB,OAAS9jC,GAAIwlC,GAAiB1ub,GAAG0ub,eAAgB7qa,GAAU7jB,GAAG6jB,QACvsB,OAAOkL,QAAU/2B,UAAM,OAAQ,EAAQ,WACnC,IAAI22b,GAAYC,GAAoB3rb,GACpC,OAAOmmb,QAAYpxb,KAAM,SAAU62b,IAC/B,OAAQA,GAAG/zb,YACF,EAQD,OAPAssH,SAAU59D,QAAUuT,GAAU,gGAAiGvT,QAAUuT,GAAU,IACnJqqD,SAAU59D,QAA0B,iBAAhBwT,IACA,aAAhBA,GAA4B,+MAAgNxT,QAA0B,iBAAhBwT,IACtO,aAAhBA,GAA4B,IAChC2xX,GAAa32b,KAAK82b,qBAClB/xX,GAAW/kE,KAAKmkF,UAAUpf,IAAUqc,SACpC/c,GAAYrkE,KAAK+2b,aAAahyX,GAAUV,IACpCrkE,KAAMmkF,UAAUpf,IAAUiyX,iBACvB,CAAC,EAAGh3b,KAAK01b,WAAW7D,qBAAqB9sX,GAAUV,GAAWx4C,KADd,CAAC,EAAG,QAE1D,EACDw4C,GAAawyX,GAAGI,OAChBJ,GAAG/zb,MAAQ,OACV,EACD8zb,UAAqB52b,KAAKi2b,gBACrBj2b,KAAKi2b,cAAcU,IAAc,CAC9B5xX,SAAUA,GACVV,UAAWA,GACXpjB,SAAS,EACT3gD,MAAO,OAEX81b,IACAp2b,KAAKk3b,uBAAuBd,GAAoB,CAC5CO,WAAYA,GACZv1W,SAAUrc,GACVV,UAAWA,GACXW,YAAaA,GACbgwX,YAAaA,GACbnpa,QAASA,GACTwqa,cAAeA,GACf3ra,OAAQ8ra,GACRE,eAAgBA,KAGxB12b,KAAKgvb,mBACL/jb,GAAOjL,KACA,CAAC,EAAG,IAAI42B,QAAQ,SAAUC,GAASC,IAClC,OAAOqga,GAASlsb,GAAKmsb,sBAAsBryX,IAAU1B,SAASA,QAAS,GAAIx3C,IAAU,CAAEuqa,mBAAoBA,KAAuB/xX,IAAW,GAAQ,SAAUpzD,IAC3J,GAAIqkb,GAAsBrkb,KAA2B,SAAhB+jb,GACjC,MAAM,IAAIpJ,GAAY,CAClB/+T,cAAe57G,GAAO6f,SAG1B8la,KACAA,GAAmB31Y,SAAU,EAC7B21Y,GAAmBt2b,MAAQ,MAE/B,IAAI+2b,IAAch0X,QAAS,GAAIpyD,IAC/B,MAA8B,mBAAnBqlb,KACPA,GAAiBA,GAAee,KAEhB,WAAhBrC,IACAM,GAAsB+B,YACfA,GAAYvma,OAEhB7lB,GAAKqsb,mBAAmB,CAC3BX,WAAYA,GACZ1lb,OAAQomb,GACRj2W,SAAUrc,GACVV,UAAWA,GACXW,YAAaA,GACbgwX,YAAaA,GACbnpa,QAASA,GACTnB,OAAQ8ra,GACRH,cAAeA,GACfE,oBAAqBA,GACrBD,eAAgBA,GAChB9vT,iBAAkB4vT,GAAqBO,QAAa,EACpDF,eAAgBA,GAChBC,eAAgBA,OAErB/ub,UAAU,CACTzD,KAAM,SAAUmzb,IACZpsb,GAAK+jb,mBACLn4Z,GAAQwga,KAEZ/2b,MAAO,SAAUqV,IACTihb,KACAA,GAAmB31Y,SAAU,EAC7B21Y,GAAmBt2b,MAAQqV,IAE3Bygb,IACAnrb,GAAKgkH,MAAMuX,iBAAiBmwT,IAEhC1rb,GAAK+jb,mBACLl4Z,GAAOnhB,cAAei2a,GAAcj2a,GAAM,IAAIi2a,GAAY,CACtD7+T,aAAcp3G,kBAStD4/a,GAAa1zb,UAAUy1b,mBAAqB,SAAUvyX,GAAUkqD,IAC5D,IAAIhC,GAAQjtH,UACE,IAAVivH,KAAoBA,GAAQjvH,KAAKivH,OACrC,IAAIh+G,GAAS8zD,GAAS9zD,OAClBsmb,GAAc,GACdC,GAAqC,aAAzBzyX,GAASC,YACzB,IAAKwyX,IAAazC,GAAkB9jb,GAAQ8zD,GAASiwX,aAAc,CAC/DuC,GAAY3mb,KAAK,CACbK,OAAQA,GAAOnH,KACfglH,OAAQ,gBACR1qD,MAAOW,GAASqc,SAChB/c,UAAWU,GAASV,YAExB,IAAIozX,GAAkB1yX,GAASsxX,cAC3BoB,IACAz3b,KAAK4rP,QAAQ5pO,QAAQ,SAAUha,GAAI0kb,IAC/B,IAAIgH,GAAkB1rb,GAAG0rb,gBACrB7G,GAAY6G,IAAmBA,GAAgB7G,UACnD,GAAKA,IAAcvmb,GAAexE,KAAK21b,GAAiB5K,IAGxD,KAAItgP,GAAUkrP,GAAgB5K,IAC1B5kb,GAAKglH,GAAM2+H,QAAQxqP,IAAIsrb,IAAUtrW,GAAWn5E,GAAGm5E,SAAU/c,GAAYp8D,GAAGo8D,UACxEqzD,GAAKzI,GAAM+W,KAAK,CAChB5hE,MAAOgd,GACP/c,UAAWA,GACXszD,mBAAmB,EACnB/J,YAAY,IACZ8pU,GAAqBhgU,GAAGzmH,OAC5B,GAD+CymH,GAAGz3C,UAClCy3W,GAAoB,CAChC,IAAIC,GAAkBprP,GAAQmrP,GAAoB,CAC9CE,eAAgB3mb,GAChB47a,UAAWzrW,KAAYokU,SAAiBpkU,UAAa,EACrDy2W,eAAgBxzX,KAEhBszX,IACAJ,GAAY3mb,KAAK,CACbK,OAAQ0mb,GACR7oU,OAAQ,aACR1qD,MAAOgd,GACP/c,UAAWA,SAOnC,GAAIkzX,GAAY92b,OAAS,GACrBskE,GAASuxX,gBACTvxX,GAASr6C,QACTq6C,GAAS0xX,gBACT1xX,GAASyhE,iBAAkB,CAC3B,IAAIsxT,GAAY,GAwChB,GAvCA93b,KAAKs2b,eAAe,CAChByB,YAAa,SAAU9oU,IACduoU,IACDD,GAAYv1a,QAAQ,SAAU6sG,IAAS,OAAOI,GAAMJ,MAAMA,MAE9D,IAAInkG,GAASq6C,GAASr6C,OACtB,GAAIA,GAAQ,CACR,IAAK8sa,GAAW,CACZ,IAAIxxT,GAAO/W,GAAM+W,KAAK,CAClBjlI,GAAI,gBACJqjE,MAAO6oD,GAAM9oC,UAAUpf,GAASqc,UAAU42W,QAC1C3zX,UAAWU,GAASV,UACpBupD,YAAY,EACZ+J,mBAAmB,IAEnBqO,GAAK/lD,WACLhvE,IAASoyD,SAASA,QAAS,GAAIpyD,IAAS,CAAEnH,KAAMk8H,GAAK/0H,UAG7DyZ,GAAOukG,GAAOh+G,GAAQ,CAClB4a,QAASk5C,GAASl5C,QAClBw4C,UAAWU,GAASV,aAGvBmzX,KAAczyX,GAAS2xX,gBACxBznU,GAAMb,OAAO,CACTrtH,GAAI,gBACJo+D,OAAQ,SAAU59D,GAAOyG,IAErB,MAAqB,eADLA,GAAGipH,UACiB1vH,GADGyG,GAAG6nH,WAM1DooU,QAASlzX,GAASuxX,eAClB1oU,YAAY,EACZ4Y,iBAAkBzhE,GAASyhE,iBAC3BiwT,eAAgB1xX,GAAS0xX,gBAAkB,OAC5Cz0a,QAAQ,SAAU/Q,IAAU,OAAO6mb,GAAUlnb,KAAKK,MACjD8zD,GAASwxX,qBAAuBxxX,GAAS0xX,eACzC,OAAO7/Z,QAAQ8zJ,IAAIotQ,IAAW1ha,KAAK,WAAc,OAAOnlB,KAGhE,OAAO2lB,QAAQC,QAAQ5lB,KAE3Bskb,GAAa1zb,UAAUq1b,uBAAyB,SAAUd,GAAoBrxX,IAC1E,IAAIkoD,GAAQjtH,KACR8J,GAAqC,mBAAvBssb,GACZA,GAAmBrxX,GAASV,WAC5B+xX,GACN,OAAOp2b,KAAKivH,MAAMpB,4BAA4B,SAAUoB,IACpD,IACIhC,GAAMqqU,oBAAmBj0X,SAASA,QAAS,GAAI0B,IAAW,CAAE9zD,OAAQ,CAAEnH,KAAMA,MAAWmlH,UAEpF3uH,IACH8uH,SAAW59D,WAAgBlxD,MAEhCykE,GAAS4xX,aAEhBpB,GAAa1zb,UAAU2sb,WAAa,SAAU9B,GAAS9pb,GAAS2kb,IAC5D,OAAOvnb,KAAKwvb,qBAAqB9C,GAAS9pb,GAAS2kb,IAAevqN,SAEtEu4N,GAAa1zb,UAAUq2b,cAAgB,WACnC,IAAI78Z,GAAQz5B,OAAO2Y,OAAO,MAC1B,YAAKqxO,QAAQ5pO,QAAQ,SAAU7hB,GAAMusb,IACjCrxZ,GAAMqxZ,IAAW,CACbroX,UAAWlkE,GAAKkkE,UAChBkjX,cAAepnb,GAAKonb,cACpBx6T,aAAc5sH,GAAK4sH,aACnBF,cAAe1sH,GAAK0sH,iBAGrBxxF,IAEXk6Z,GAAa1zb,UAAUksb,YAAc,SAAUrB,IAC3C,IAAIR,GAAYlsb,KAAK4rP,QAAQxqP,IAAIsrb,IAC7BR,KACAA,GAAUn/T,kBAAe9pH,EACzBipb,GAAUr/T,cAAgB,KAGlC0oU,GAAa1zb,UAAUsiF,UAAY,SAAU/C,IACzC,IAAIw0W,GAAiB51b,KAAK41b,eAC1B,IAAKA,GAAevzX,IAAI+e,IAAW,CAC/B,IAAI+2W,GAAcn4b,KAAKivH,MAAMjB,kBAAkB5sC,IAC3Cg3W,IAAUC,SAAsCr4b,KAAKivH,MAAMZ,iBAAiB8pU,KAC5E3G,GAAcxxb,KAAK01b,WAAWlE,YAAY2G,IAC1C1G,GAAc2G,IAAWp4b,KAAK01b,WAAWjE,YAAY2G,IACrDE,GAAe,CACfl3W,SAAU+2W,GACVnB,kBAAkBA,SAAiBmB,IACnChL,mBAAoBntb,KAAK01b,WAAW1D,qBAAqBmG,IACzD3G,YAAaA,GACbC,YAAaA,GACb8G,aAAa1gU,UAAiByJ,SAAuB62T,KACrDH,SAAS30X,SAASA,QAAS,GAAI80X,IAAc,CAAE/8X,YAAa+8X,GAAY/8X,YAAY31D,IAAI,SAAUyiI,IAC1F,MAAiB,wBAAbA,GAAIjwE,MACc,UAAlBiwE,GAAI3rE,WACG8G,SAASA,QAAS,GAAI6kE,IAAM,CAAE3rE,UAAW,UAE7C2rE,QAGf/zG,GAAM,SAAUsuC,IACZA,KAAQmzX,GAAevzX,IAAII,KAC3BmzX,GAAet0b,IAAImhE,GAAK61X,KAGhCnka,GAAIitD,IACJjtD,GAAIgka,IACJhka,GAAIq9Z,IACJr9Z,GAAIs9Z,IAER,OAAOmE,GAAex0b,IAAIggF,KAE9Bm0W,GAAa1zb,UAAUk1b,aAAe,SAAU31W,GAAU/c,IACtD,OAAOhB,SAASA,QAAS,GAAIrjE,KAAKmkF,UAAU/C,IAAUm3W,aAAcl0X,KAExEkxX,GAAa1zb,UAAUsiE,WAAa,SAAUvhE,SAES,KADnDA,IAAUygE,SAASA,QAAS,GAAIzgE,IAAU,CAAEyhE,UAAWrkE,KAAK+2b,aAAan0b,GAAQwhE,MAAOxhE,GAAQyhE,cAC7EiqX,8BACf1rb,GAAQ0rb,6BAA8B,GAE1C,IAAIpC,GAAY,IAAIqH,GAAUvzb,MAC1ByxI,GAAa,IAAIu6S,GAAgB,CACjCC,aAAcjsb,KACdksb,UAAWA,GACXtpb,QAASA,KAEb,YAAKgpP,QAAQtqP,IAAImwI,GAAWi7S,QAASR,IACrCA,GAAUzpb,KAAK,CACX2+E,SAAUqwD,GAAWrtE,MACrBsvX,gBAAiBjiT,GACjBptE,UAAWotE,GAAWptE,YAEnBotE,IAEX8jT,GAAa1zb,UAAUuiE,MAAQ,SAAUxhE,GAAS8pb,IAC9C,IAAIz/T,GAAQjtH,KACZ,YAAgB,IAAZ0sb,KAAsBA,GAAU1sb,KAAK2sb,mBACzCv9T,SAAU59D,QAAU5uD,GAAQwhE,MAAO,0FACL5S,QAAU5uD,GAAQwhE,MAAO,IACvDgrD,SAAU59D,QAAiC,aAAvB5uD,GAAQwhE,MAAMnM,KAAqB,mDAAoDzG,QAAiC,aAAvB5uD,GAAQwhE,MAAMnM,KAAqB,IACxJm3D,SAAU59D,SAAW5uD,GAAQ+0H,kBAAmB,2DAA4DnmE,SAAW5uD,GAAQ+0H,kBAAmB,IAClJvI,SAAU59D,SAAW5uD,GAAQijE,aAAc,sDAAuDrU,SAAW5uD,GAAQijE,aAAc,IAC5H7lE,KAAKwub,WAAW9B,GAAS9pb,IAAS8rb,QAAQ,WAAc,OAAOzhU,GAAMojU,UAAU3D,OAE1F6I,GAAa1zb,UAAU8qb,gBAAkB,WACrC,OAAOzqb,OAAOlC,KAAK61b,mBAEvBN,GAAa1zb,UAAU22b,kBAAoB,WACvC,OAAOx4b,KAAK81b,oBAEhBP,GAAa1zb,UAAUi1b,mBAAqB,WACxC,OAAO50b,OAAOlC,KAAK+1b,sBAEvBR,GAAa1zb,UAAU42b,iBAAmB,SAAU/L,IAChD1sb,KAAK04b,4BAA4BhM,IACjC1sb,KAAKgvb,oBAETuG,GAAa1zb,UAAU62b,4BAA8B,SAAUhM,IAC3D,IAAIR,GAAYlsb,KAAK4rP,QAAQxqP,IAAIsrb,IAC7BR,IACAA,GAAUoI,QAElBiB,GAAa1zb,UAAU82b,WAAa,SAAU/1b,IAC1C,YAAgB,IAAZA,KAAsBA,GAAU,CAChC2jI,gBAAgB,IAEpBvmI,KAAKm2b,qBAAqB/mU,QAAU,IAAIsR,KAAe,uEAAyE,IAAIA,KAAe,KACnJ1gI,KAAK4rP,QAAQ5pO,QAAQ,SAAUkqa,IACvBA,GAAUwH,gBACVxH,GAAU3E,cAAgBL,UAG1BgF,GAAUoI,SAGdt0b,KAAKi2b,gBACLj2b,KAAKi2b,cAAgBr0b,OAAO2Y,OAAO,OAEhCva,KAAKivH,MAAMnkE,MAAMloD,KAE5B2yb,GAAa1zb,UAAU+2b,qBAAuB,SAAUX,IACpD,IAAIhrU,GAAQjtH,UACI,IAAZi4b,KAAsBA,GAAU,UACpC,IAAIrsM,GAAU,IAAIt+N,IACdura,GAAoB,IAAIvra,IACxBwra,GAAqB,IAAIn2X,IAC7B,OAAIn9D,MAAM0L,QAAQ+mb,KACdA,GAAQj2a,QAAQ,SAAUorT,IACF,iBAATA,GACPyrH,GAAkBv3b,IAAI8rU,IAAM,IAE3B,EAAI2rH,OAAe3rH,IACpByrH,GAAkBv3b,IAAI2rH,GAAM9oC,UAAUipP,IAAMhsP,UAAU,IAEjDiuC,QAAgB+9M,KAASA,GAAKhpQ,OACnC00X,GAAmB3ka,IAAIi5S,MAInCptU,KAAK4rP,QAAQ5pO,QAAQ,SAAUha,GAAI0kb,IAC/B,IAAIqH,GAAK/rb,GAAG0rb,gBAAiBtyW,GAAWp5E,GAAGo5E,SAC3C,GAAI2yW,GAAI,CACJ,GAAgB,QAAZkE,GAEA,YADArsM,GAAQtqP,IAAIorb,GAASqH,IAGzB,IAAIlH,GAAYkH,GAAGlH,UACnB,GAAoB,YADwBkH,GAAGnxb,QAAQoiE,aAEtC,WAAZizX,KAAyBlE,GAAG3D,eAC7B,QAEY,WAAZ6H,IACCpL,IAAagM,GAAkBx2X,IAAIwqX,KACnCzrW,IAAYy3W,GAAkBx2X,IAAI+e,OACnCwqK,GAAQtqP,IAAIorb,GAASqH,IACjBlH,IACAgM,GAAkBv3b,IAAIurb,IAAW,GACjCzrW,IACAy3W,GAAkBv3b,IAAI8/E,IAAU,OAI5C03W,GAAmB1lb,MACnB0lb,GAAmB92a,QAAQ,SAAUpf,IACjC,IAAI8pb,IAAUlsT,QAAa,sBACvB0rT,GAAYj/T,GAAM+rU,SAAStM,IAASjqb,KAAK,CACzC2+E,SAAUx+E,GAAQwhE,MAClBC,UAAWzhE,GAAQyhE,YAEnB0vX,GAAK,IAAI/H,GAAgB,CACzBC,aAAch/T,GACdi/T,UAAWA,GACXtpb,SAASygE,SAASA,QAAS,GAAIzgE,IAAU,CAAEoiE,YAAa,oBAE5DxT,QAAUuiY,GAAGrH,UAAYA,IACzBR,GAAUqD,mBAAmBwE,IAC7BnoM,GAAQtqP,IAAIorb,GAASqH,MAGzB3kU,SAAWypU,GAAkBzlb,MAC7Bylb,GAAkB72a,QAAQ,SAAUi3a,GAAUC,IACrCD,IACD7pU,SAAW59D,UAAe,iBAAiB93C,OAA4B,iBAAdw/a,GAAyB,SAAW,IAAIx/a,OAAOvT,KAAK2kB,UAAUoua,GAAW,KAAM,GAAI,yDAIjJttM,IAEX2pM,GAAa1zb,UAAUs3b,yBAA2B,SAAUC,IACxD,IAAInsU,GAAQjtH,UACW,IAAnBo5b,KAA6BA,IAAiB,GAClD,IAAIC,GAA0B,GAC9B,YAAKT,qBAAqBQ,GAAiB,MAAQ,UAAUp3a,QAAQ,SAAU0xa,GAAiBhH,IAC5F,IAAI1nX,GAAc0uX,GAAgB9wb,QAAQoiE,YAC1C0uX,GAAgB7F,oBACZuL,IACiB,YAAhBp0X,IACmB,eAAhBA,KACJq0X,GAAwBzob,KAAK8ib,GAAgBrM,WAEjDp6T,GAAM+rU,SAAStM,IAASuH,QAAQ,QAEpCj0b,KAAKgvb,mBACEp4Z,QAAQ8zJ,IAAI2uQ,KAEvB9D,GAAa1zb,UAAU0tb,mBAAqB,SAAUmE,IAClD1zb,KAAKg5b,SAAStF,GAAgBhH,SAAS6C,mBAAmBmE,KAE9D6B,GAAa1zb,UAAUgtb,yBAA2B,SAAU7mb,IACxD,IAAIilH,GAAQjtH,KACRokE,GAAQp8D,GAAGo8D,MAAOY,GAAch9D,GAAGg9D,YAAagwX,GAAchtb,GAAGgtb,YAAa3wX,GAAYr8D,GAAGq8D,UAAWp8D,GAAKD,GAAG6jB,QAASA,QAAiB,IAAP5jB,GAAgB,GAAKA,GAC5Jm8D,GAAQpkE,KAAKmkF,UAAU/f,IAAOgd,SAC9B/c,GAAYrkE,KAAK+2b,aAAa3yX,GAAOC,IACrC,IAAIi1X,GAAiB,SAAUj1X,IAC3B,OAAO4oD,GAAMmqU,sBAAsBhzX,GAAOv4C,GAASw4C,IAAW5+D,IAAI,SAAUwL,IAYxE,GAXoB,aAAhB+zD,KACI+vX,GAAkB9jb,GAAQ+jb,KAC1B/nU,GAAMgC,MAAMJ,MAAM,CACdzqD,MAAOA,GACPnzD,OAAQA,GAAOnH,KACfglH,OAAQ,oBACRzqD,UAAWA,KAGnB4oD,GAAM+hU,oBAENsG,GAAsBrkb,IACtB,MAAM,IAAI26a,GAAY,CAClB/+T,cAAe57G,GAAO6f,SAG9B,OAAO7f,MAGf,GAAIjR,KAAKmkF,UAAU/f,IAAO4yX,iBAAkB,CACxC,IAAIuC,GAAsBv5b,KAAK01b,WAAW7D,qBAAqBztX,GAAOC,GAAWx4C,IAASuK,KAAKkja,IAC/F,OAAO,IAAIv6W,IAAW,SAAU2tC,IAC5B,IAAIvgH,GAAM,KACVotb,UAAoBnja,KAAK,SAAUq7G,IAAc,OAAOtlI,GAAMslI,GAAW9pI,UAAU+kH,KAAcA,GAASpsH,OACnG,WAAc,OAAO6L,IAAOA,GAAIC,iBAG/C,OAAOktb,GAAej1X,KAE1BkxX,GAAa1zb,UAAUwub,UAAY,SAAU3D,IACzC1sb,KAAKk2b,qBAAqBxJ,IAC1B1sb,KAAKgvb,oBAETuG,GAAa1zb,UAAUq0b,qBAAuB,SAAUxJ,IACpD1sb,KAAK04b,4BAA4BhM,IACjC1sb,KAAK8sb,YAAYJ,KAErB6I,GAAa1zb,UAAUirb,YAAc,SAAUJ,IAC3C1sb,KAAK21b,eAAe5qa,OAAO2ha,IACvB1sb,KAAK4rP,QAAQvpL,IAAIqqX,MACjB1sb,KAAKg5b,SAAStM,IAAS4H,OACvBt0b,KAAK4rP,QAAQ7gO,OAAO2ha,MAG5B6I,GAAa1zb,UAAUmtb,iBAAmB,WAClChvb,KAAKy1b,aACLz1b,KAAKy1b,cACTz1b,KAAK4rP,QAAQ5pO,QAAQ,SAAU7hB,IAAQ,OAAOA,GAAKguI,YAEvDonT,GAAa1zb,UAAU23b,cAAgB,WACnC,OAAOx5b,KAAK01b,YAEhBH,GAAa1zb,UAAUu1b,sBAAwB,SAAUhzX,GAAOv4C,GAASw4C,GAAWo1X,IAChF,IACIzxb,GADAilH,GAAQjtH,UAEU,IAAlBy5b,KAA4BA,GAAwG,QAAvFzxb,GAAiB,MAAZ6jB,QAAyC,EAASA,GAAQ2pa,0BAAuC,IAAPxtb,GAAgBA,GAAKhI,KAAKw1b,oBAC1K,IAAI/jT,GACAggT,GAAczxb,KAAKmkF,UAAU/f,IAAOqtX,YACxC,GAAIA,GAAa,CACb,IAAeiI,GAAN15b,KAAqCg2b,wBAAyBlgb,GAA9D9V,KAAwE8V,KAC7EymD,GAAY,CACZ6H,MAAOqtX,GACPptX,UAAWA,GACXttD,eAAeyuY,SAAiBisC,UAAgB,EAChD5la,QAAS7rB,KAAK2xb,gBAAetuX,SAASA,QAAS,GAAIx3C,IAAU,CAAE8ta,YAAaF,OAGhF,GADA5ta,GAAU0wC,GAAU1wC,QAChB4ta,GAAe,CACf,IAAIG,GAAgBF,GAA0Bt4b,IAAIqwb,KAAgB,IAAInka,IACtEosa,GAA0Bp4b,IAAImwb,GAAamI,IAC3C,IAAIC,IAAY1hU,QAAmB9zD,IAEnC,KADAotE,GAAamoT,GAAcx4b,IAAIy4b,KACd,CACb,IAAI5J,GAAU,IAAIjF,GAAQ,CACtBvyR,EAAQ3iJ,GAAMymD,MAElBq9X,GAAct4b,IAAIu4b,GAAWpoT,GAAaw+S,IAC1CA,GAAQ5gK,QAAQ,WACRuqK,GAAc7ua,OAAO8ua,KACrBD,GAAcxmb,KAAO,GACrBsmb,GAA0B3ua,OAAO0ma,YAM7ChgT,GAAa,IAAIu5S,GAAQ,CACrBvyR,EAAQ3iJ,GAAMymD,WAKtBk1E,GAAa,IAAIu5S,GAAQ,CACrBjsW,OAAc,CAAEj1E,KAAM,OAE1B+hB,GAAU7rB,KAAK2xb,eAAe9la,IAElC,IAAI2la,GAAcxxb,KAAKmkF,UAAU/f,IAAOotX,YACxC,OAAIA,KACA//S,GAAa0lT,GAAS1lT,GAAY,SAAUxgI,IACxC,OAAOg8G,GAAMyoU,WAAWzE,aAAa,CACjC7vW,SAAUowW,GACVN,aAAcjgb,GACd4a,QAASA,GACTw4C,UAAWA,QAIhBotE,IAEX8jT,GAAa1zb,UAAUi4b,mBAAqB,SAAU5N,GAAW4I,GAAoBlyb,IACjF,IAAIm3b,GAAY7N,GAAUsH,cAAgBxzb,KAAKw4b,oBAC/C,OAAOrB,GAASn3b,KAAKo3b,sBAAsBlL,GAAU9qW,SAAUx+E,GAAQipB,QAASjpB,GAAQyhE,WAAY,SAAUpzD,IAC1G,IAAI+ob,IAAY7+T,QAAgBlqH,GAAO6f,QACvC,GAAIipa,IAAa7N,GAAUsH,cAAe,CACtC,GAAIwG,IAAqC,SAAxBp3b,GAAQoyb,YACrB,MAAM9I,GAAUiJ,UAAU,IAAIvJ,GAAY,CACtC/+T,cAAe57G,GAAO6f,UAG9Bo7Z,GAAU2I,WAAW5jb,GAAQrO,GAASkyb,IACtC5I,GAAUgJ,YAEd,IAAI+E,GAAM,CACNnwb,KAAMmH,GAAOnH,KACbm3C,SAAS,EACTsmY,cAAeL,SAEnB,OAAI8S,IAAqC,WAAxBp3b,GAAQoyb,cACrBiF,GAAInpa,OAAS7f,GAAO6f,OACpBmpa,GAAI1S,cAAgBL,SAEjB+S,IACR,SAAUltU,IACT,IAAIzsH,GJlmBT,YAAuBqV,IAC1B,OAAOA,GAAIrP,eAAe,iBIimBN4zb,CAAcntU,IACpBA,GACA,IAAI6+T,GAAY,CAAE7+T,aAAcA,KACtC,MAAIgtU,IAAa7N,GAAUsH,eACvBtH,GAAUiJ,UAAU70b,IAElBA,MAGdi1b,GAAa1zb,UAAU2tb,qBAAuB,SAAU9C,GAAS9pb,GAAS2kb,IACtE,IAAIt6T,GAAQjtH,UACU,IAAlBunb,KAA4BA,GAAgBL,WAChD,IAAI9iX,GAAQpkE,KAAKmkF,UAAUvhF,GAAQwhE,OAAOgd,SACtC/c,GAAYrkE,KAAK+2b,aAAa3yX,GAAOxhE,GAAQyhE,WAC7C6nX,GAAYlsb,KAAKg5b,SAAStM,IAC1Bx3V,GAAWl1F,KAAKitF,eAAe9oB,WAC/Bn8D,GAAKpF,GAAQoiE,YAAmG/8D,GAAKrF,GAAQoyb,YAA4Ft9T,GAAK90H,GAAQ+0H,kBAAmEC,GAAKh1H,GAAQ0rb,4BAAuFz6C,GAAKjxY,GAAQipB,QAC1Zsua,GAAav4b,OAAOc,OAAO,GAAIE,GAAS,CACxCwhE,MAAOA,GACPC,UAAWA,GACXW,iBAJ+C,IAAPh9D,GAAgBktF,IAAYA,GAASlwB,aAAe,cAAgBh9D,GAK5Ggtb,iBAL+J,IAAP/sb,GAAgBitF,IAAYA,GAAS8/V,aAAe,OAAS/sb,GAMrN0vH,uBANoR,IAAPD,IAAwBA,GAOrS42T,iCAPwX,IAAP12T,IAAwBA,GAQzY/rG,aARob,IAAPgoX,GAAgB,GAAKA,KAUlcumD,GAAgB,SAAU/1X,IAC1B81X,GAAW91X,UAAYA,GACvB,IAAIg2X,GAAiBptU,GAAMqtU,mBAAmBpO,GAAWiO,GAAY5S,IACrE,MAA+B,YAA3B4S,GAAWn1X,aACXq1X,GAAe55b,OAAS,GACxByrb,GAAUwH,iBACVxH,GAAUwH,gBAAgBvE,qBAAwB,cAAevsb,IAE9Dy3b,IAEPE,GAAkB,WAAc,OAAOttU,GAAM0oU,eAAe5qa,OAAO2ha,KACvE1sb,KAAK21b,eAAer0b,IAAIorb,GAAS,SAAU/sD,IACvC46D,KACA5ia,WAAW,WAAc,OAAOs4Z,GAAQh/X,OAAO0uU,QAEnD,IAAIswD,GAAU,IAAIjF,GAAQhrb,KAAKmkF,UAAUg2W,GAAW/1X,OAAO4yX,iBACrDh3b,KAAK01b,WAAW7D,qBAAqBsI,GAAW/1X,MAAO+1X,GAAW91X,UAAW81X,GAAWtua,SAASuK,KAAKgka,IACtGA,GAAcD,GAAW91X,YAC/B4rX,UAAQjzN,QAAQ5mM,KAAKmka,GAAiBA,IAC/BtK,IAEXsF,GAAa1zb,UAAUy0b,eAAiB,SAAUtub,IAC9C,IAAIilH,GAAQjtH,KACR+3b,GAAc/vb,GAAG+vb,YAAaE,GAAUjwb,GAAGiwb,QAAShwb,GAAKD,GAAG4lH,WAAYA,QAAoB,IAAP3lH,IAAwBA,GAAIyvH,GAAK1vH,GAAGw+H,iBAAkBA,QAA0B,IAAP9O,GAAgB9J,IAAa4S,QAAa,uBAAoB,EAAS9I,GAAI++T,GAAiBzub,GAAGyub,eAC7P+D,GAAsB,IAAIlta,IAC1B2qa,IACAj4b,KAAK44b,qBAAqBX,IAASj2a,QAAQ,SAAU+xa,GAAIrH,IACrD8N,GAAoBl5b,IAAIorb,GAAS,CAC7BqH,GAAIA,GACJ/sT,SAAU/Z,GAAM+rU,SAAStM,IAASU,cAI9C,IAAIh+X,GAAU,IAAI9hC,IAClB,OAAIyqa,IACA/3b,KAAKivH,MAAMxB,MAAM,CACb/iG,OAAQqta,GACRnqU,WAAYA,IAAc4Y,KAAoB,EAC9CA,iBAAkBA,GAClBG,eAAgB,SAAUV,GAAOD,GAAMgB,IACnC,IAAI+sT,GAAK9tT,GAAMuuT,mBAAmBjB,IAC9BttT,GAAMuuT,QAAQd,gBAClB,GAAIK,GAAI,CACJ,GAAI0C,GAAgB,CAChB+D,GAAoBzva,OAAOgpa,GAAGrH,SAC9B,IAAIz7a,GAASwlb,GAAe1C,GAAI/tT,GAAMgB,IACtC,OAAe,IAAX/1H,KACAA,GAAS8ib,GAAG1M,YAED,IAAXp2a,IACAm+C,GAAQ9tD,IAAIyyb,GAAI9ib,IAEbA,GAEY,OAAnBwlb,IACA+D,GAAoBl5b,IAAIyyb,GAAGrH,QAAS,CAAEqH,GAAIA,GAAI/sT,SAAUA,GAAUhB,KAAMA,SAMxFw0T,GAAoBpnb,MACpBonb,GAAoBx4a,QAAQ,SAAUha,GAAI0kb,IACtC,IACIz7a,GADA8ib,GAAK/rb,GAAG+rb,GAAI/sT,GAAWh/H,GAAGg/H,SAAUhB,GAAOh+H,GAAGg+H,KAElD,GAAIywT,GAAgB,CAChB,IAAKzwT,GAAM,CACP,IAAI7lI,GAAO4zb,GAAG7H,UACd/rb,GAAK2qD,QACLk7E,GAAO7lI,GAAKitb,UAEhBn8a,GAASwlb,GAAe1C,GAAI/tT,GAAMgB,MAEjCyvT,KAA6B,IAAXxlb,MACnBA,GAAS8ib,GAAG1M,YAED,IAAXp2a,IACAm+C,GAAQ9tD,IAAIyyb,GAAI9ib,IAEhBy7a,GAAQpnb,QAAQ,uBAAyB,GACzC2nH,GAAMipU,qBAAqBxJ,MAInClmT,IACAxmI,KAAKivH,MAAMuX,iBAAiBA,IAEzBp3E,IAEXmmY,GAAa1zb,UAAUy4b,mBAAqB,SAAUpO,GAAWlkb,GAAIu/a,IACjE,IAAIt6T,GAAQjtH,KACRokE,GAAQp8D,GAAGo8D,MAAOC,GAAYr8D,GAAGq8D,UAAWW,GAAch9D,GAAGg9D,YAAay1X,GAAqBzyb,GAAGyyb,mBAAoBzF,GAAchtb,GAAGgtb,YAAar9T,GAAoB3vH,GAAG2vH,kBAAmB9rG,GAAU7jB,GAAG6jB,QAASyia,GAA8Btmb,GAAGsmb,4BACrPoM,GAAmBxO,GAAU3E,cACjC2E,GAAUzpb,KAAK,CACX2+E,SAAUphF,KAAKmkF,UAAU/f,IAAOgd,SAChC/c,UAAWA,GACXkjX,cAAeA,KAEnB,IAAIoT,GAAY,WAAc,OAAOzO,GAAUkB,QAAQ/oX,KACnDu2X,GAAmB,SAAU50T,GAAMuhT,SACb,IAAlBA,KAA4BA,GAAgB2E,GAAU3E,eAAiBL,WAC3E,IAAIp9a,GAAOk8H,GAAK/0H,OACZm+G,UACCuI,MACAhC,QAAM7rH,GAAM,KACbyjb,GAAsBvnT,GAAKjO,SAE/B,IAAI8iU,GAAW,SAAU/wb,IAAQ,OAAOi1E,QAAc1b,QAAS,CAAEv5D,KAAMA,GAAMm3C,QAASisY,EAAyB3F,IAAgBA,cAAeA,IAAkBvhT,GAAK/lD,SAAW,KAAO,CAAEg5H,SAAS,MAClM,OAAInvM,IAAQmjH,GAAM9oC,UAAU/f,IAAO+oX,mBACxBlgU,GAAMyoU,WAAWzE,aAAa,CACjC7vW,SAAUhd,GACV8sX,aAAc,CAAEpnb,KAAMA,IACtB+hB,QAASA,GACTw4C,UAAWA,GACX8sX,wBAAwB,IACzB/6Z,KAAK,SAAUiuM,IAAY,OAAOw2N,GAASx2N,GAASv6N,WAAQ,KAE5D+wb,GAAS/wb,KAEhBgrb,GAAqC,aAAhB9vX,GAA6B,EACjDuiX,KAAkBL,WACQ,UAAvBuT,GAAkC,EAChC,EACNK,GAAkB,WAAc,OAAO7tU,GAAM6sU,mBAAmB5N,GAAW4I,GAAoB,CAC/FzwX,UAAWA,GACXx4C,QAASA,GACTm5C,YAAaA,GACbgwX,YAAaA,MAEbX,GAAe/F,IACa,iBAArBoM,IACPA,KAAqBnT,IACrB2F,EAAyB3F,IAC7B,OAAQviX,gBAEC,cAED,OADIghE,GAAO20T,MACF16W,SACE,CACH26W,GAAiB50T,GAAMkmT,GAAUgJ,cAGrCv9T,IAAqB08T,GACd,CACHuG,GAAiB50T,IACjB80T,MAGD,CACHA,UAGH,oBACD,IAAI90T,GACJ,OADIA,GAAO20T,MACF16W,UAAY03C,IAAqB08T,GAC/B,CACHuG,GAAiB50T,IACjB80T,MAGD,CACHA,UAGH,aACD,MAAO,CACHF,GAAiBD,KAAazO,GAAUgJ,kBAE3C,eACD,OAAIb,GACO,CACHuG,GAAiBD,MACjBG,MAGD,CAACA,UACP,WACD,OAAIzG,GACO,CACHuG,GAAiB1O,GAAUkB,WAC3B0N,MAGD,CAACA,UACP,UACD,MAAO,KAGnBvF,GAAa1zb,UAAUm3b,SAAW,SAAUtM,IACxC,OAAIA,KAAY1sb,KAAK4rP,QAAQvpL,IAAIqqX,KAC7B1sb,KAAK4rP,QAAQtqP,IAAIorb,GAAS,IAAI6G,GAAUvzb,KAAM0sb,KAE3C1sb,KAAK4rP,QAAQxqP,IAAIsrb,KAE5B6I,GAAa1zb,UAAU8vb,eAAiB,SAAU9la,SAC9B,IAAZA,KAAsBA,GAAU,IACpC,IAAIkva,GAAa/6b,KAAK01b,WAAW/D,eAAe9la,IAChD,OAAOw3C,SAASA,QAAS,GAAI03X,IAAa,CAAE3yT,gBAAiBpoI,KAAKooI,mBAE/DmtT,GA1zBS,GCVb,YAAsBrgW,GAAUtyF,IACnC,OAAOyzH,QAAQnhC,GAAUtyF,GAASA,GAAQyhE,WAAa,CACnDA,WAAWhB,SAASA,QAAS,GAAK6xB,IAAYA,GAAS7wB,WAAazhE,GAAQyhE,aCGpF,IAAI22X,IAAuB,EAGvBC,GAAgB,WAChB,YAAsBr4b,IAClB,IAAIqqH,GAAQjtH,KACZA,KAAKk7b,oBAAsB,GAC3Bl7b,KAAKm7b,oBAAsB,GAC3B,IAAIrxT,GAAMlnI,GAAQknI,IAAmE7a,GAAQrsH,GAAQqsH,MAAOjnH,GAAKpF,GAAQ6sb,QAASA,QAAiB,IAAPznb,IAAwBA,GAAIC,GAAKrF,GAAQw4b,mBAAoBA,QAA4B,IAAPnzb,GAAgB,EAAIA,GAAIyvH,GAAK90H,GAAQy4b,kBAAmBA,QAA2B,IAAP3jU,GAAkC,iBAAX3hG,SAC5TA,OAAOula,mBACRlsU,QAAUsI,GAAIE,GAAKh1H,GAAQ4yb,mBAAoBA,QAA4B,IAAP59T,IAAuBA,GAAI3qC,GAAiBrqF,GAAQqqF,eAAgB4mT,GAAKjxY,GAAQgtb,uBAAwBA,QAAgC,IAAP/7C,IAAwBA,GAAI48C,GAAY7tb,GAAQ6tb,UAAW8K,GAAW34b,GAAQ24b,SAAU7K,GAAkB9tb,GAAQ8tb,gBAAiB8K,GAAsB54b,GAAQuL,KAAMstb,GAAyB74b,GAAQnE,QAC9YqX,GAAOlT,GAAQkT,KAMnB,GALKA,KACDA,GAAOg0H,GACD,IAAIH,GAAS,CAAEG,IAAKA,GAAK6+S,YANE/lb,GAAQ+lb,YAMgBp2W,QANO3vE,GAAQ2vE,UAOlEi6C,cAELyC,GACD,MAAMG,QAAU,IAAIsR,KAAe,8JAEuC,IAAIA,KAAe,GAmBjG,GAjBA1gI,KAAK8V,KAAOA,GACZ9V,KAAKivH,MAAQA,GACbjvH,KAAK07b,sBAAwBjM,IAAW2L,GAAqB,EAC7Dp7b,KAAKw1b,mBAAqBA,GAC1Bx1b,KAAKitF,eAAiBA,IAAkBrrF,OAAO2Y,OAAO,MACtDva,KAAKu7b,SAAWA,GACZH,IACAzja,WAAW,WAAc,OAAQs1F,GAAMyuU,uBAAwB,GAAWN,IAE9Ep7b,KAAKmkE,WAAankE,KAAKmkE,WAAW2oD,KAAK9sH,MACvCA,KAAKokE,MAAQpkE,KAAKokE,MAAM0oD,KAAK9sH,MAC7BA,KAAK8kE,OAAS9kE,KAAK8kE,OAAOgoD,KAAK9sH,MAC/BA,KAAK27b,WAAa37b,KAAK27b,WAAW7uU,KAAK9sH,MACvCA,KAAKm5b,yBAA2Bn5b,KAAKm5b,yBAAyBrsU,KAAK9sH,MAC/Dq7b,IAAuC,iBAAXtla,SAC5BA,OAAOula,kBAAoBt7b,OAE1Bg7b,IAAwB5rU,UACzB4rU,IAAuB,EACD,oBAAXjla,QACPA,OAAOqrD,UACPrrD,OAAOy0D,MAAQz0D,OAAO9qB,OACrB8qB,OAAO6la,iCAAiC,CACzC,IAAIp9C,GAAMzoX,OAAO4rD,UACbk6W,GAAKr9C,IAAOA,GAAI58T,UAChBpsD,QAAM,EACQ,iBAAPqma,KACHA,GAAGv2b,QAAQ,YAAa,EACxBkwB,GAAM,uGAGDqma,GAAGv2b,QAAQ,aAAc,IAC9BkwB,GAAM,2EAGVA,IACA45F,SAAW59D,SAAc,qEACJh8B,IAIjCx1B,KAAKvB,QCtEQ,QDuEbuB,KAAK01b,WAAa,IAAInF,EAAW,CAC7BthU,MAAOA,GACPuhU,OAAQxwb,KACRywb,UAAWA,GACXC,gBAAiBA,KAErB1wb,KAAKisb,aAAe,IAAIsJ,GAAa,CACjCtmU,MAAOjvH,KAAKivH,MACZn5G,KAAM9V,KAAK8V,KACXm3E,eAAgBjtF,KAAKitF,eACrBuoW,mBAAoBA,GACpB/F,QAASA,GACTrnT,gBAAiB,CACbj6H,KAAMqtb,GACN/8b,QAASg9b,IAEb/F,WAAY11b,KAAK01b,WACjB9F,uBAAwBA,GACxB6F,YAAa4F,GAAoB,WACzBpuU,GAAM6uU,gBACN7uU,GAAM6uU,eAAe,CACjBr5a,OAAQ,GACR8Q,MAAO,CACHq4N,QAAS3+H,GAAMg/T,aAAaiM,gBAC5BtqM,UAAW3gI,GAAMg/T,aAAagK,eAAiB,IAEnD8F,0BAA2B9uU,GAAMgC,MAAMmE,SAAQ,WAGvD,IAGZ6nU,UAAap5b,UAAUyyb,KAAO,WAC1Bt0b,KAAKisb,aAAaqI,QAEtB2G,GAAap5b,UAAUsiE,WAAa,SAAUvhE,IAC1C,OAAI5C,KAAKitF,eAAe9oB,aACpBvhE,GAAUo5b,GAAah8b,KAAKitF,eAAe9oB,WAAYvhE,KAEvD5C,KAAK07b,wBACoB,iBAAxB94b,GAAQoiE,aACmB,sBAAxBpiE,GAAQoiE,eACZpiE,IAAUygE,SAASA,QAAS,GAAIzgE,IAAU,CAAEoiE,YAAa,iBAEtDhlE,KAAKisb,aAAa9nX,WAAWvhE,KAExCq4b,GAAap5b,UAAUuiE,MAAQ,SAAUxhE,IACrC,OAAI5C,KAAKitF,eAAe7oB,QACpBxhE,GAAUo5b,GAAah8b,KAAKitF,eAAe7oB,MAAOxhE,KAEtDwsH,SAAU59D,QAAkC,sBAAxB5uD,GAAQoiE,YAAqC,sSAGYxT,QAAkC,sBAAxB5uD,GAAQoiE,YAAqC,GAChIhlE,KAAK07b,uBAAiD,iBAAxB94b,GAAQoiE,cACtCpiE,IAAUygE,SAASA,QAAS,GAAIzgE,IAAU,CAAEoiE,YAAa,iBAEtDhlE,KAAKisb,aAAa7nX,MAAMxhE,KAEnCq4b,GAAap5b,UAAUijE,OAAS,SAAUliE,IACtC,OAAI5C,KAAKitF,eAAenoB,SACpBliE,GAAUo5b,GAAah8b,KAAKitF,eAAenoB,OAAQliE,KAEhD5C,KAAKisb,aAAannX,OAAOliE,KAEpCq4b,GAAap5b,UAAU8F,UAAY,SAAU/E,IACzC,OAAO5C,KAAKisb,aAAa4C,yBAAyBjsb,KAEtDq4b,GAAap5b,UAAUysH,UAAY,SAAU1rH,GAASgrH,IAClD,YAAmB,IAAfA,KAAyBA,IAAa,GACnC5tH,KAAKivH,MAAMX,UAAU1rH,GAASgrH,KAEzCqtU,GAAap5b,UAAU4sH,aAAe,SAAU7rH,GAASgrH,IACrD,YAAmB,IAAfA,KAAyBA,IAAa,GACnC5tH,KAAKivH,MAAMR,aAAa7rH,GAASgrH,KAE5CqtU,GAAap5b,UAAU8sH,WAAa,SAAU/rH,IAC1C5C,KAAKivH,MAAMN,WAAW/rH,IACtB5C,KAAKisb,aAAa+C,oBAEtBiM,GAAap5b,UAAUktH,cAAgB,SAAUnsH,IAC7C5C,KAAKivH,MAAMF,cAAcnsH,IACzB5C,KAAKisb,aAAa+C,oBAEtBiM,GAAap5b,UAAUo6b,wBAA0B,SAAU7tT,IACvDpuI,KAAK87b,eAAiB1tT,IAE1B6sT,GAAap5b,UAAUq6b,aAAe,SAAUxxZ,IAC5C,OAAO+tH,EAAQz4J,KAAK8V,KAAM40B,KAE9BuwZ,GAAap5b,UAAU85b,WAAa,WAChC,IAAI1uU,GAAQjtH,KACZ,OAAO42B,QAAQC,UACVT,KAAK,WAAc,OAAO62F,GAAMg/T,aAAa0M,WAAW,CACzDpyT,gBAAgB,MAEfnwG,KAAK,WAAc,OAAOQ,QAAQ8zJ,IAAIz9D,GAAMiuU,oBAAoBz1b,IAAI,SAAUqmB,IAAM,OAAOA,UAC3FsK,KAAK,WAAc,OAAO62F,GAAMksU,8BAEzC8B,GAAap5b,UAAU82b,WAAa,WAChC,IAAI1rU,GAAQjtH,KACZ,OAAO42B,QAAQC,UACVT,KAAK,WAAc,OAAO62F,GAAMg/T,aAAa0M,WAAW,CACzDpyT,gBAAgB,MAEfnwG,KAAK,WAAc,OAAOQ,QAAQ8zJ,IAAIz9D,GAAMkuU,oBAAoB11b,IAAI,SAAUqmB,IAAM,OAAOA,WAEpGmva,GAAap5b,UAAUs6b,aAAe,SAAU/tT,IAC5C,IAAInhB,GAAQjtH,KACZ,YAAKk7b,oBAAoBtqb,KAAKw9H,IACvB,WACHnhB,GAAMiuU,oBAAsBjuU,GAAMiuU,oBAAoB9mb,OAAO,SAAU1O,IAAK,OAAOA,KAAM0oI,OAGjG6sT,GAAap5b,UAAUu6b,aAAe,SAAUhuT,IAC5C,IAAInhB,GAAQjtH,KACZ,YAAKm7b,oBAAoBvqb,KAAKw9H,IACvB,WACHnhB,GAAMkuU,oBAAsBluU,GAAMkuU,oBAAoB/mb,OAAO,SAAU1O,IAAK,OAAOA,KAAM0oI,OAGjG6sT,GAAap5b,UAAUs3b,yBAA2B,SAAUC,IACxD,OAAOp5b,KAAKisb,aAAakN,yBAAyBC,KAEtD6B,GAAap5b,UAAUy0b,eAAiB,SAAU1zb,IAC9C,IAAI6C,GAAMzF,KAAKisb,aAAaqK,eAAe1zb,IACvCgpP,GAAU,GACVx8L,GAAU,GACd3pD,GAAIuc,QAAQ,SAAU/Q,GAAQq/a,IAC1B1kM,GAAQh7O,KAAK0/a,IACblhY,GAAQx+C,KAAKK,MAEjB,IAAIA,GAAS2lB,QAAQ8zJ,IAAIt7H,IACzBn+C,UAAO26O,QAAUA,GACjB36O,GAAOm+C,QAAUA,GACjBn+C,GAAOqlB,MAAM,SAAUh2B,IACnB8uH,SAAW59D,WAAgB,qEAAqE93C,OAAOpZ,OAEpG2Q,IAEXgqb,GAAap5b,UAAU+2b,qBAAuB,SAAUX,IACpD,YAAgB,IAAZA,KAAsBA,GAAU,UAC7Bj4b,KAAKisb,aAAa2M,qBAAqBX,KAElDgD,GAAap5b,UAAUuxH,QAAU,SAAUxF,IACvC,OAAO5tH,KAAKivH,MAAMmE,QAAQxF,KAE9BqtU,GAAap5b,UAAUgkI,QAAU,SAAUw2T,IACvC,OAAOr8b,KAAKivH,MAAM4W,QAAQw2T,KAE9BpB,GAAap5b,UAAU8ub,aAAe,SAAUF,IAC5Czwb,KAAK01b,WAAW/E,aAAaF,KAEjCwK,GAAap5b,UAAUkvb,aAAe,SAAUN,IAC5Czwb,KAAK01b,WAAW3E,aAAaN,KAEjCwK,GAAap5b,UAAUmvb,aAAe,WAClC,OAAOhxb,KAAK01b,WAAW1E,gBAE3BiK,GAAap5b,UAAUy6b,6BAA+B,SAAU5L,IAC5D1wb,KAAK01b,WAAW9E,mBAAmBF,KAEvCuK,GAAap5b,UAAU06b,QAAU,SAAUC,IACvCx8b,KAAK8V,KAAO9V,KAAKisb,aAAan2a,KAAO0mb,IAElCvB,GAlOS,+EEJpB,YAAqBwB,IACjB,OAAO,IAAI19W,KAAYmvD,KACnBuuT,KAAYrma,KAAMnlB,KACTi9H,GAAW/zC,SACZ+zC,GAAWhqI,KAAK+M,IAChBi9H,GAAWjuD,aAEf3/E,KACK4tI,GAAW/zC,QACZ+zC,GAAW5tI,MAAMA,MAGlB,IAAM4tI,GAAW9hI,gBAWhC,SACIzM,YAAY+W,IACR1W,KAAK0W,KAAOA,GACZ1W,KAAK2wB,IAAMxvB,KAAKwvB,IAAMxvB,KAAKwvB,IAAM,KAAO,IAAIxvB,KAEhDwnE,SAASuvF,GAAMpiH,GAAQ,EAAGviB,IACtB,OAAOvzB,KAAK0W,KAAK2/E,IAAI,IAAMyuI,cAAwB5sE,GAAMpiH,GAAOviB,MAGxE,YAAuBspM,IACnBA,UAAIprF,MAAc,IAAMorF,GACjBA,GAEX,YAAsBA,GAAKxnI,IACvB,OAAOwnI,GAAI/xN,MAAKuwN,QAAU,IAAIqhO,GAAcrnW,MAEhD,YAAkB0/L,GAAO0S,GAAMr3Q,IAC3B,OAAO2kQ,SAAgC,IAAhBA,GAAM0S,IACvB1S,GAAM0S,IACNr3Q,GAsBV,SACIzwB,YAAY2wb,GAAUj7V,GAAQzyF,IAC1B5C,KAAKswb,SAAWA,GAChB,MAAM1lO,GAAU+xO,IAAa/pU,QAAKgqU,GAAc58b,KAAKswb,WAAYj7V,IACjEr1F,KAAKukE,aAAe3hE,GAAQi6b,kBACtBjyO,GAAQ9/M,KAxBtB,YAA2Bwlb,IACvB,OAAO,SAAmCx2a,IACtC,OAAO,IAAIilE,KAAW,SAAuCmvD,IACzD,MAAM4uT,GAAgBxM,GAASvD,oBACvB9rY,WAASnwB,UAAQxwB,SAAO24M,WAASnvM,SAASgzb,IAC1CxP,kBAAgBtoX,gBAAgBsrX,GAAS1tb,QAC3CW,GAAWutB,IAAUxwB,GAC3B,OAAIgtb,IACAr0O,MACEnvM,IAAqC,IAA7BlI,OAAOgqC,KAAK9hC,IAAMrJ,SACZ,eAAhBukE,KACC/jB,KACA19C,IACD2qI,GAAWhqI,KAAKtC,OAAOc,OAAOd,OAAOc,OAAO,GAAIo6b,IAAgB,CAAE77Y,SAAS,EAAMsmY,cAAeL,aAE7Fpta,GAAOnS,UAAUumI,OAST2uT,CAAkB78b,KAAKswb,WACpC1lO,GACN5qN,KAAK0sb,QAAU1sb,KAAKswb,SAAS5D,QAG7B9pb,cACA,OAAO5C,KAAKswb,SAAS1tb,QAErByhE,gBACA,OAAOrkE,KAAKswb,SAASjsX,UAEzBpzD,SACI,OAAOjR,KAAKswb,SAASr/a,SAEzB87a,mBACI,OAAO/sb,KAAKswb,SAASvD,mBAEzBE,gBACI,OAAOjtb,KAAKswb,SAASrD,gBAEzBW,eACI,OAAO5tb,KAAKswb,SAAS1C,eAEzBC,mBACI,OAAO7tb,KAAKswb,SAASzC,mBAEzBxG,QAAQhjX,IACJ,OAAOrkE,KAAKswb,SAASjJ,QAAQhjX,IAEjC+iX,UAAU8G,IACN,OAAOlub,KAAKswb,SAASlJ,UAAU8G,IAEnCU,gBAAgBhsb,IAGZ,OAAO5C,KAAKswb,SAAS1B,gBAAgBhsb,IAEzCosH,YAAYq7T,IACR,OAAOrqb,KAAKswb,SAASthU,YAAYq7T,IAErCz4Y,cACI,OAAO5xC,KAAKswb,SAAS1+Y,cAEzBq9Y,aAAappX,IACT,OAAO7lE,KAAKswb,SAASrB,aAAappX,IAEtCkpX,WAAW76J,IACP,OAAOl0R,KAAKswb,SAASvB,WAAW76J,IAEpCizJ,aAAa9iX,IACT,OAAOrkE,KAAKswb,SAASnJ,aAAa9iX,KAI1C,MAAM04X,GAAe,IAAI14b,MAAe,gBAClC8lI,GAAiB,IAAI9lI,MAAe,kBACpC24b,GAAuB,IAAI34b,MAAe,wBAEhD,SACI1E,YAAY01F,GAAQ0/L,GAAOkoK,IACvBj9b,KAAKq1F,OAASA,GACdr1F,KAAK+0R,MAAQA,GACb/0R,KAAKi9b,QAAUA,GACfj9b,KAAK68b,kBAAoBK,GAASnoK,GAAO,qBAAqB,GAC9D/0R,KAAKm9b,mBAAqBD,GAASnoK,GAAO,sBAAsB,GAEpE5wN,WAAWvhE,IACP,OAAO,IAAIw6b,GAASp9b,KAAKq9b,eAAel5X,WAAWviE,OAAOc,OAAO,GAAIE,KAAW5C,KAAKq1F,OAAQzzF,OAAOc,OAAO,CAAEm6b,kBAAmB78b,KAAK68b,mBAAqBj6b,KAE9JwhE,MAAMxhE,IACF,OAAOq6N,GAAY,IAAMj9N,KAAKq9b,eAAej5X,MAAMxiE,OAAOc,OAAO,GAAIE,MAEzEkiE,OAAOliE,IACH,IAAIoF,GACJ,OAhIR,YAA4B8R,GAAQ8vD,IAChC,OAAKA,GAGE9vD,GAAOhP,MAAKwoC,QAAU,CACzB2N,SAAS,KACTx7C,QAAKwL,IAAYrP,OAAOc,OAAOd,OAAOc,OAAO,GAAIuO,IAAS,CAAEgwC,UAAWhwC,GAAOgwC,YAJvEnnC,GAAOhP,MAAKrF,QAAKwL,IAAYrP,OAAOc,OAAOd,OAAOc,OAAO,GAAIuO,IAAS,CAAEgwC,SAAS,MA8HjFk8Y,CAAmBlgO,GAAY,IAAMj9N,KAAKq9b,eAAev4X,OAAOljE,OAAOc,OAAO,GAAIE,MAAkD,QAArCoF,GAAKpF,GAAQu6b,0BAAuC,IAAPn1b,GAAgBA,GAAKhI,KAAKm9b,oBAEjLx1b,UAAU/E,GAASwrU,IACf,MAAMvxG,IAAMjqG,QAAKgqU,GAAc58b,KAAKq9b,eAAe11b,UAAU/F,OAAOc,OAAO,GAAIE,OAC/E,OAAOwrU,KAA2B,IAAlBA,GAAMkvH,QAChBzgO,GACA8/N,GAAa9/N,GAAK78N,KAAKq1F,QAMjCkoW,YACI,OAAOv9b,KAAKwwb,OAShBgN,UAAUhN,IACNxwb,KAAKwwb,OAASA,GAKdA,aACA,OAAOxwb,KAAKi9b,QAQZzM,WAAOA,IACP,GAAIxwb,KAAKi9b,QACL,MAAM,IAAIp4b,MAAM,mCAEpB7E,KAAKi9b,QAAUzM,GAEnB6M,eACI,YAAKI,gBACEz9b,KAAKi9b,QAEhBQ,gBACI,IAAKz9b,KAAKi9b,QACN,MAAM,IAAIp4b,MAAM,wCAItB64b,SAAN,iBAAqBC,GACjBh+b,YAAYqlF,GAAS44W,GAAeC,GAAoB9oK,IAOpD,GANAxhO,MAAMyxB,GAAS+vM,IACf/0R,KAAKglF,QAAUA,GACfhlF,KAAKyF,IAAM,IAAI6nB,IACXswa,IACA59b,KAAK89b,cAAcF,IAEnBC,IAAoD,iBAAvBA,GAC7B,QAAS1vb,MAAQ0vb,GACTA,GAAmBv3b,eAAe6H,KAElCnO,KAAK+9b,YAAY5vb,GADD0vb,GAAmB1vb,KAWnDoM,OAAO3X,GAASuL,IACRurC,GAAUvrC,IACVnO,KAAK89b,cAAcl7b,IAGnB5C,KAAK+9b,YAAY5vb,GAAMvL,IAM/BmhE,UACI,OAAO/jE,KAMXg+b,IAAI7vb,IACA,OAAIurC,GAAUvrC,IACHnO,KAAK+jE,UAET/jE,KAAKyF,IAAIrE,IAAI+M,IAMxB2vb,cAAcl7b,IACV,GAAI5C,KAAKu9b,YACL,MAAM,IAAI14b,MAAM,oCAEpB,OAAO7E,KAAKw9b,UAAU,IAAIvC,GAAar4b,KAO3Cm7b,YAAY5vb,GAAMvL,IACd,GAAI5C,KAAKyF,IAAI48D,IAAIl0D,IACb,MAAM,IAAItJ,MAAO,UAASsJ,+BAE9BnO,KAAKyF,IAAInE,IAAI6M,GAAM,IAAIwvb,GAAW39b,KAAKglF,QAAShlF,KAAK+0R,MAAO,IAAIkmK,GAAar4b,MAMjFq7b,aAAa9vb,IACLurC,GAAUvrC,IACVnO,KAAKi9b,aAAUh6b,EAGfjD,KAAKyF,IAAIslB,OAAO5c,KAI5Buvb,UAAO12b,UAAP,4BAAmG02b,IAAVh9b,MAAkCA,OAAlCA,MAAwDypI,GAAjJ,GAAyFzpI,MAAmGs8b,GAA5L,GAAyFt8b,MAAoJq8b,GAA7O,KACAW,GAAOv2b,WADkFzG,MACzF,OAAuGg9b,GAAvG/8b,QAAuG+8b,GAAvG,YAjFMA,OAsGN,YAAmBvvb,IACf,OAAQA,IAAiB,YAATA,GAGpB,MAAM+vb,GAAY,CAACR,QACbrzT,SAAN,UAEAA,UAAarjI,UAAb,4BAAyGqjI,KACzGA,GAAajoD,UA9B4E1hF,MA8BzF,MAA0G2pI,KAC1GA,GAAahoD,UA/B4E3hF,MA+BzF,WAAmIw9b,KAJ7H7zT,oCCrTC,WAAmBn5E,EAAWpxD,GAGnC,IAFyBuwD,QAAQa,GAG/B,MAAM,IAAIrsD,MAAM/E,oDCEb,WAAiByB,GACtB,OAAOg4Q,EAAYh4Q,EAAO,IAG5B,WAAqBA,EAAO48b,GAC1B,cAAe58b,OACR,SACH,OAAO4E,KAAK2kB,UAAUvpB,OAEnB,WACH,OAAOA,EAAM4M,KAAQ,aAAY5M,EAAM4M,QAAU,iBAE9C,SACH,OAON,WAA2B5M,EAAO68b,GAChC,GAAc,OAAV78b,EACF,MAAO,OAGT,GAAI68b,EAAqB31b,SAASlH,GAChC,MAAO,aAGT,MAAM48b,EAAa,IAAIC,EAAsB78b,GAE7C,GAeF,WAAoBA,GAClB,MAA+B,mBAAjBA,EAAMqzD,OAhBhBypY,CAAW98b,GAAQ,CACrB,MAAM+8b,EAAY/8b,EAAMqzD,SAExB,GAAI0pY,IAAc/8b,EAChB,MAA4B,iBAAd+8b,EACVA,EACA/kL,EAAY+kL,EAAWH,WAEpB34b,MAAM0L,QAAQ3P,GACvB,OA2BJ,WAAqBuzD,EAAOqpY,GAC1B,GAAqB,IAAjBrpY,EAAMr0D,OACR,MAAO,KAGT,GAAI09b,EAAW19b,OA7EW,EA8ExB,MAAO,UAGT,MAAM00J,EAAMj9I,KAAKqkC,IAlFM,GAkFgBuY,EAAMr0D,QACvCi0M,EAAY5/I,EAAMr0D,OAAS00J,EAC3B9kI,EAAQ,GAEd,QAAS/iB,EAAI,EAAGA,EAAI6nJ,IAAO7nJ,EACzB+iB,EAAMzf,KAAK2oQ,EAAYzkN,EAAMxnD,GAAI6wb,IAGnC,OAAkB,IAAdzpP,EACFrkL,EAAMzf,KAAK,mBACF8jM,EAAY,GACrBrkL,EAAMzf,KAAM,OAAM8jM,gBAGb,IAAMrkL,EAAMxqB,KAAK,MAAQ,IAlDvB04b,CAAYh9b,EAAO48b,GAG5B,OAOF,WAAsBjwU,EAAQiwU,GAC5B,MAAM7jR,EAAU14K,OAAO04K,QAAQpsD,GAE/B,OAAuB,IAAnBosD,EAAQ75K,OACH,KAGL09b,EAAW19b,OA9DW,EA+DjB,IAmCX,WAAsBytH,GACpB,MAAM8yE,EAAMp/L,OAAOC,UAAUZ,SAC1Ba,KAAKosH,GACLtpH,QAAQ,aAAc,IACtBA,QAAQ,KAAM,IAEjB,GAAY,WAARo8L,GAAkD,mBAAvB9yE,EAAOvuH,YAA4B,CAChE,MAAMwO,EAAO+/G,EAAOvuH,YAAYwO,KAEhC,GAAoB,iBAATA,GAA8B,KAATA,EAC9B,OAAOA,EAIX,OAAO6yL,EAjDQw9P,CAAatwU,GAAU,IAM/B,KAHYosD,EAAQ70K,IACzB,EAAE5C,EAAKtB,KAAWsB,EAAM,KAAO02Q,EAAYh4Q,EAAO48b,IAE3Bt4b,KAAK,MAAQ,KArB/B44b,CAAal9b,EAAO48b,GA9BhBO,CAAkBn9b,EAAO48b,WAGhC,OAAOj8b,OAAOX,4GClBb,QAoBL5B,YAAYuhE,EAAY0B,EAAU9oD,GAChC9Z,KAAK2zD,MAAQuN,EAAWvN,MACxB3zD,KAAKo4D,IAAMwK,EAASxK,IACpBp4D,KAAKkhE,WAAaA,EAClBlhE,KAAK4iE,SAAWA,EAChB5iE,KAAK8Z,OAASA,EAGJ26C,IAAPC,OAAOD,eACV,MAAO,WAGTG,SACE,MAAO,CACLjB,MAAO3zD,KAAK2zD,MACZyE,IAAKp4D,KAAKo4D,MAST,QAiCLz4D,YAAYs4D,EAAMtE,EAAOyE,EAAK9G,EAAMG,EAAQlwD,GAC1CvB,KAAKi4D,KAAOA,EACZj4D,KAAK2zD,MAAQA,EACb3zD,KAAKo4D,IAAMA,EACXp4D,KAAKsxD,KAAOA,EACZtxD,KAAKyxD,OAASA,EAEdzxD,KAAKuB,MAAQA,EACbvB,KAAKq4D,KAAO,KACZr4D,KAAKkE,KAAO,KAGFuwD,IAAPC,OAAOD,eACV,MAAO,QAGTG,SACE,MAAO,CACLqD,KAAMj4D,KAAKi4D,KACX12D,MAAOvB,KAAKuB,MACZ+vD,KAAMtxD,KAAKsxD,KACXG,OAAQzxD,KAAKyxD,SAWZ,MAAMktY,EAAoB,CAC/BC,KAAM,GACNC,SAAU,CAAC,eACXrwC,oBAAqB,CACnB,OACA,sBACA,aACA,gBAEFswC,mBAAoB,CAAC,WAAY,OAAQ,eAAgB,cACzDhxC,SAAU,CAAC,QACXoB,aAAc,CAAC,cACfnB,MAAO,CAAC,QAAS,OAAQ,YAAa,aAAc,gBACpDc,SAAU,CAAC,OAAQ,SACnBV,eAAgB,CAAC,OAAQ,cACzB4wC,eAAgB,CAAC,gBAAiB,aAAc,gBAChD/vC,mBAAoB,CAClB,OACA,sBACA,gBACA,aACA,gBAEFgwC,SAAU,GACVC,WAAY,GACZC,YAAa,GACbC,aAAc,GACdC,UAAW,GACXC,UAAW,GACXC,UAAW,CAAC,UACZC,YAAa,CAAC,UACdC,YAAa,CAAC,OAAQ,SACtBr0C,UAAW,CAAC,OAAQ,aACpBs0C,UAAW,CAAC,QACZC,SAAU,CAAC,QACXC,YAAa,CAAC,QACdC,iBAAkB,CAAC,cAAe,aAAc,kBAChDC,wBAAyB,CAAC,QAC1BC,qBAAsB,CAAC,cAAe,OAAQ,cAC9CC,qBAAsB,CACpB,cACA,OACA,aACA,aACA,UAEFC,gBAAiB,CAAC,cAAe,OAAQ,YAAa,OAAQ,cAC9DC,qBAAsB,CACpB,cACA,OACA,OACA,eACA,cAEFC,wBAAyB,CACvB,cACA,OACA,aACA,aACA,UAEFC,oBAAqB,CAAC,cAAe,OAAQ,aAAc,SAC3DC,mBAAoB,CAAC,cAAe,OAAQ,aAAc,UAC1DC,oBAAqB,CAAC,cAAe,OAAQ,cAC7CC,0BAA2B,CAAC,cAAe,OAAQ,aAAc,UACjEC,oBAAqB,CAAC,cAAe,OAAQ,YAAa,aAC1DC,gBAAiB,CAAC,aAAc,kBAChCC,oBAAqB,CAAC,OAAQ,cAC9BC,oBAAqB,CAAC,OAAQ,aAAc,aAAc,UAC1DC,uBAAwB,CAAC,OAAQ,aAAc,aAAc,UAC7DC,mBAAoB,CAAC,OAAQ,aAAc,SAC3CC,kBAAmB,CAAC,OAAQ,aAAc,UAC1CC,yBAA0B,CAAC,OAAQ,aAAc,WAE7CC,EAAa,IAAIp+X,IAAI/gE,OAAOgqC,KAAK+yZ,IAKhC,WAAgBqC,GACrB,MAAMC,EACU,MAAdD,OAA6C,EAASA,EAAU/oY,KAClE,MAA4B,iBAAdgpY,GAA0BF,EAAW1+X,IAAI4+X,GAIlD,IAAIzkY,EAEV,IAAUA,KAIRA,IAAsBA,EAAoB,KAHzBvH,MAAW,QAC7BuH,EAAkBtH,SAAc,WAChCsH,EAAkBrH,aAAkB,wFClM/B,WAAgCjD,GACrC,IAAIgvY,EAEJ,IAAIC,EAAe9xO,OAAOt+B,iBACtBqwQ,EAAoB,KACpBC,GAAmB,EAEvB,QAAS/zb,EAAI,EAAGA,EAAI4kD,EAAMzxD,SAAU6M,EAAG,CACrC,IAAIg0b,EAEJ,MAAMhwY,EAAOY,EAAM5kD,GACbi0b,EAASC,EAAkBlwY,GAE7BiwY,IAAWjwY,EAAK7wD,SAIpB2gc,EAC+C,QAA5CE,EAAqBF,SACC,IAAvBE,EACIA,EACAh0b,EACN+zb,EAAmB/zb,EAET,IAANA,GAAWi0b,EAASJ,IACtBA,EAAeI,IAInB,OAAOrvY,EACJzsD,IAAI,CAAC6rD,EAAMhkD,IAAa,IAANA,EAAUgkD,EAAOA,EAAK1rD,MAAMu7b,IAC9Cv7b,MAC+C,QAA7Cs7b,EAAsBE,SACG,IAAxBF,EACEA,EACA,EACJG,EAAmB,GAIzB,WAA2B38b,GACzB,IAAI4I,EAAI,EAER,KAAOA,EAAI5I,EAAIjE,SAAUghc,QAAa/8b,EAAIiB,WAAW2H,OACjDA,EAGJ,OAAOA,EAiFF,WAA0B/L,EAAOqB,GACtC,MAAM8+b,EAAengc,EAAMqD,QAAQ,OAAQ,SAErCstD,EAAQwvY,EAAaz7b,MAAM,gBAC3B07b,EAAgC,IAAjBzvY,EAAMzxD,OAErBmhc,EACJ1vY,EAAMzxD,OAAS,GACfyxD,EACGtsD,MAAM,GACN28H,MAAOjxE,GAAyB,IAAhBA,EAAK7wD,SAAgBghc,QAAanwY,EAAK3rD,WAAW,KAEjEk8b,EAA0BH,EAAa1mR,SAAS,SAEhD8mR,EAAmBvgc,EAAMy5K,SAAS,OAAS6mR,EAC3CE,EAAmBxgc,EAAMy5K,SAAS,MAClCgnR,EAAuBF,GAAoBC,EAC3CE,IACU,MAAZr/b,GAA0CA,EAAQs/b,aAClDP,GACApgc,EAAMd,OAAS,IACfuhc,GACAJ,GACAC,GACJ,IAAI5wb,EAAS,GAEb,MAAMkxb,EAAqBR,IAAgBF,QAAalgc,EAAMoE,WAAW,IAEzE,OAAKs8b,IAAyBE,GAAuBP,KACnD3wb,GAAU,MAGZA,GAAUywb,GAENO,GAAwBD,KAC1B/wb,GAAU,MAGL,MAAQA,EAAS,sCCxKnB,WAAsBoU,GAC3B,OAAgB,IAATA,GAA4B,KAATA,EAUrB,WAAiBA,GACtB,OAAOA,GAAQ,IAAUA,GAAQ,GAa5B,WAAkBA,GACvB,OACGA,GAAQ,IAAUA,GAAQ,KAC1BA,GAAQ,IAAUA,GAAQ,GAYxB,WAAqBA,GAC1B,OAAO+8a,EAAS/8a,IAAkB,KAATA,EAYpB,WAAwBA,GAC7B,OAAO+8a,EAAS/8a,IAAS4zC,EAAQ5zC,IAAkB,KAATA,+EC3DrC,IAAI61C,EAOV,IAAUA,uBA4CRA,IAASA,EAAO,KA3CZ7D,KAAU,OACf6D,EAAKqsB,SAAc,WACnBrsB,EAAKmnY,qBAA0B,sBAC/BnnY,EAAK1F,oBAAyB,qBAC9B0F,EAAKonY,cAAmB,eACxBpnY,EAAK9F,MAAW,QAChB8F,EAAKqnY,SAAc,WACnBrnY,EAAK5F,gBAAqB,iBAC1B4F,EAAK3F,gBAAqB,iBAC1B2F,EAAK7F,oBAAyB,qBAC9B6F,EAAKsnY,SAAc,WACnBtnY,EAAK5D,IAAS,WACd4D,EAAK3D,MAAW,aAChB2D,EAAK1D,OAAY,cACjB0D,EAAKunY,QAAa,eAClBvnY,EAAKypP,KAAU,YACfzpP,EAAKlF,KAAU,YACfkF,EAAKwnY,KAAU,YACfxnY,EAAKvF,OAAY,cACjBuF,EAAKynY,aAAkB,cACvBznY,EAAK0nY,UAAe,YACpB1nY,EAAK2nY,WAAgB,YACrB3nY,EAAK4nY,UAAe,WACpB5nY,EAAK6nY,cAAmB,cACxB7nY,EAAK8nY,kBAAuB,mBAC5B9nY,EAAK+nY,0BAA+B,0BACpC/nY,EAAKgoY,uBAA4B,uBACjChoY,EAAKioY,uBAA4B,uBACjCjoY,EAAKtF,iBAAsB,kBAC3BsF,EAAKkoY,uBAA4B,uBACjCloY,EAAKmoY,0BAA+B,0BACpCnoY,EAAKooY,sBAA2B,sBAChCpoY,EAAKqoY,qBAA0B,qBAC/BroY,EAAKsoY,sBAA2B,sBAChCtoY,EAAKuoY,6BAAkC,4BACvCvoY,EAAKwoY,qBAA0B,sBAC/BxoY,EAAKyoY,iBAAsB,kBAC3BzoY,EAAK0oY,sBAA2B,sBAChC1oY,EAAK2oY,sBAA2B,sBAChC3oY,EAAK4oY,yBAA8B,yBACnC5oY,EAAK6oY,qBAA0B,qBAC/B7oY,EAAK8oY,oBAAyB,oBAC9B9oY,EAAK+oY,4BAAiC,0FC7CxC,MAAMC,EAAgB,gCAEtB,WAAyBx/b,GACvB,OAAOy/b,EAAgBz/b,EAAIiB,WAAW,IAGxC,MAAMw+b,EAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,yBCtKK,WAAerhY,GACpB,OAAOooV,QAAMpoV,EAAKshY,GAEpB,MACMA,EAAqB,CACzBxF,KAAM,CACJyF,MAAQ3wY,GAASA,EAAKnyD,OAExBusZ,SAAU,CACRu2C,MAAQ3wY,GAAS,IAAMA,EAAKvlD,MA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+BAD9wTA,MAC8wT,2CAD9wTA,oCAC00T,+CAD10TA,CAC00T,oEAD10TA,cAC2pR,cAD3pRA,MAC6tS,mCAD7tSA,IAC6tS25M,qBAAe0sB,EAD5uSrmO,IAC6tS,GAAey5c,gBAD5uSz5c,CAC6tS,8BAD7tSA,IAC6tS25M,qBAAmF0sB,EADhzSrmO,IAC6tS,GAAmF05c,YADhzS15c,MACw4S,mBADx4SA,MAC8sT,+BAD9sTA,0GAC47R4qb,uBAD57R5qb,MACm2R,wCADn2RA,MAC2jS,kCAD3jSA,CAC2jS,mCAD3jSA,MACu7S,GADv7SA,MACu7S,oCADv7SA,CACu7S,6CADv7SA,MAC2nP,WAD3nPA,MAC8uP,sBAD9uPA,MACotQ,+BADptQA,aACijR,WADjjRA,MAC2pR,kBAD3pRA,0EACwxP,GADxxPA,MACwxP,mCADxxPA,CACwxP,eADxxPA,MACwtR,GADxtRA,MACwtR,qBADxtRA,CACwtR,wDADxtRA,MACizV,2BADjzVA,yBACi7V,qBADj7VA,uCAC2oW,+BAD3oWA,MAC2oW,2CAD3oWA,qCAC+rW,+CAD/rWA,CAC+rW,oEAD/rWA,cACwqU,cADxqUA,MACgpV,wBADhpVA,MACgpV25M,aADhpV35M,QACgpVyuF,iBAAe43I,EAD/pVrmO,IACgpV,GAAey5c,gBAD/pVz5c,CACgpV,mBADhpVA,MACgpV25M,aADhpV35M,QACgpVyuF,iBAAkF43I,EADluVrmO,IACgpV,GAAkF05c,YADluV15c,MACizV,mBADjzVA,MACwlW,+BADxlWA,mGAC03U4qb,uBAD13U5qb,MAC4yU,iCAD5yUA,MACg/U,kCADh/UA,CACg/U,mCADh/UA,MACw1V,GADx1VA,MACw1V,oCADx1VA,CACw1V,6CADx1VA,MACwgP,GADxgPA,MAC2nP,kBAD3nPA,MACwqU,kBADxqUA,2CACgoP,GADhoPA,MACgoP,mBADhoPA,MAC0sU,GAD1sUA,MAC0sU,iDAD1sUA,MAC0+W,0BAD1+WA,eACgqX,+BADhqXA,0CACivX,0BADjvXA,eACu5X,iCADv5XA,2DACu8K,WADv8KA,CACu8K,cADv8KA,CACu8K,WADv8KA,CACu8K,iBADv8KA,MACwsM,uBADxsMA,aACwsM25M,IAAY0sB,EADptMrmO,MACotM25c,aADptM35c,CACwsM,qBADxsMA,aACwsM25M,IAA6D0sB,EADrwMrmO,MACqwM45c,kBADrwM55c,CACwsM,sBADxsMA,aACwsM25M,IAAoH0sB,EAD5zMrmO,MAC4zM65c,iBAD5zM75c,gBACsvN,WADtvNA,CACsvN,cADtvNA,MACw1O,sBADx1OA,aACw1O25M,IAAa0sB,EADr2OrmO,MACq2O85c,SAAS,SAD92O95c,CACw1O,wBADx1OA,aACw1O25M,IAAoE0sB,EAD55OrmO,MAC45O85c,SAAS,OADr6O95c,CACw1O,uBADx1OA,aACw1O25M,IAAsH0sB,EAD98OrmO,MAC88O25c,cAD98O35c,MACwgP,4BADxgPA,MAC0+W,mBAD1+WA,MACivX,mBADjvXA,0DACgjL,oCADhjLA,CACgjL,6BADhjLA,CACgjL,kDADhjLA,MAC4yL,GAD5yLA,MAC4yL,2CAD5yLA,CAC4yL,2CAD5yLA,MAC2+L,GAD3+LA,MAC2+L,wCAD3+LA,MACymM,GADzmMA,MACymM,2BADzmMA,CACymM,uBADzmMA,MAC+oN,uCAD/oNA,MACs5N,GADt5NA,MACs5N,iCADt5NA,MAC8jO,wDAD9jOA,CAC8jO,mDAD9jOA,CAC8jO,mDAD9jOA,CAC8jO,8BAD9jOA,MACijP,GADjjPA,MACijP,0BADjjPA,CACijP,2BADjjPA,MACqlX,GADrlXA,MACqlX,6EADrlXA,MACk2X,GADl2XA,MACk2X,qHAriC79X+5c,GAAkB,CACpB,CAAE5sT,EAAG,IAAK9xB,EAAG,wMACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,KAAM9xB,EAAG,wBACd,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,KAAM9xB,EAAG,oBACd,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,wDACb,CAAE8xB,EAAG,IAAK9xB,EAAG,8EACb,CAAE8xB,EAAG,IAAK9xB,EAAG,sFACb,CAAE8xB,EAAG,KAAM9xB,EAAG,oBACd,CAAE8xB,EAAG,IAAK9xB,EAAG,oLACb,CAAE8xB,EAAG,IAAK9xB,EAAG,sCACb,CAAE8xB,EAAG,IAAK9xB,EAAG,4FACb,CAAE8xB,EAAG,IAAK9xB,EAAG,4FACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,wHACb,CAAE8xB,EAAG,IAAK9xB,EAAG,sCACb,CAAE8xB,EAAG,IAAK9xB,EAAG,sFACb,CAAE8xB,EAAG,IAAK9xB,EAAG,0HACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,kDACb,CAAE8xB,EAAG,IAAK9xB,EAAG,sGACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,8PACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,8DACb,CAAE8xB,EAAG,IAAK9xB,EAAG,sCACb,CAAE8xB,EAAG,IAAK9xB,EAAG,wGACb,CAAE8xB,EAAG,IAAK9xB,EAAG,kHACb,CAAE8xB,EAAG,IAAK9xB,EAAG,kGACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,sMACb,CAAE8xB,EAAG,IAAK9xB,EAAG,kDACb,CAAE8xB,EAAG,KAAM9xB,EAAG,YACd,CAAE8xB,EAAG,IAAK9xB,EAAG,oEACb,CAAE8xB,EAAG,IAAK9xB,EAAG,gCACb,CAAE8xB,EAAG,IAAK9xB,EAAG,8FACb,CAAE8xB,EAAG,IAAK9xB,EAAG,uFAGX2+U,GAAgB,IAAItkc,OAAO,sDAAuD,KAExF,SAAmBugB,wBACS7sB,GAAMvI,IAC1B,GAAIiE,MAAM0L,QAAQpH,IACd,UAAW6wc,MAAiB7wc,GAAM,CAC9B,MAAMlH,GAAU+3c,GAAc/3c,QAC9B,GAAIA,IACA,UAAW62Z,MAAU72Z,GACjB,GAAI62Z,GAAOl4Z,QAAUA,GACjB,OAAOk4Z,WAIVkhD,GAAcp5c,QAAUA,GAC7B,OAAOo5c,GAInB,OAAO,8BAEc7wc,GAAMvI,GAAOoyZ,IAClC,GAAIA,GAAU,CACV,MAAM10V,GAASz5D,MAAM0L,QAAQ3P,IAASA,GAAQ,GACxC0P,GAAS,GACf,UAAWyE,MAAKupD,GAAQ,CACpB,MAAMw6V,GAASmhD,GAAaC,iBAAiB/wc,GAAM4L,IAC/C+jZ,IACAxoZ,GAAOL,KAAK6oZ,IAGpB,OAAOxoZ,GAEX,OAAO2pc,GAAaC,iBAAiB/wc,GAAMvI,mCAEhBuI,IAC3B,GAAItE,MAAM0L,QAAQpH,IACd,UAAW6wc,MAAiB7wc,GAAM,CAC9B,MAAMlH,GAAU+3c,GAAc/3c,QAC9B,GAAIA,IACA,UAAW62Z,MAAU72Z,GACjB,IAAK62Z,GAAOltW,SACR,OAAOktW,GAAOl4Z,UAIrB,CACD,MAAMk4Z,GAASkhD,GACf,IAAKlhD,GAAOltW,SACR,OAAOktW,GAAOl4Z,OAK9B,OAAO,qCAEqBu5c,GAAcv5c,IAC1C,GAAIq5c,GAAan4S,kBAAkBlhK,IAC/B,OAAO,EAEX,UAAWo5c,MAAiBG,GAAc,CACtC,MAAMl4c,GAAU+3c,GAAc/3c,QAC9B,GAAIA,IACA,UAAW62Z,MAAU72Z,GACjB,GAAI62Z,GAAOl4Z,QAAUA,GACjB,OAAO,UAIVo5c,GAAcp5c,QAAUA,GAC7B,OAAO,EAGf,OAAO,2BAGcu5c,GAAcC,IACnC,IAAIC,GAASJ,GAAan4S,kBAAkBs4S,IAC5C,QAASztc,GAAIwtc,GAAar6c,OAAS,EAAG6M,IAAK,EAAGA,KAAK,CAC/C,MAAMqtc,GAAgBG,GAAaxtc,IAC7B1K,GAAU+3c,GAAc/3c,QAC9B,GAAIA,GACA,QAAS2K,GAAI3K,GAAQnC,OAAS,EAAG8M,IAAK,EAAGA,KAAK,CAC1C,MAAMksZ,GAAS72Z,GAAQ2K,IACvB,GAAIytc,KAAWvhD,GAAOltW,WAAaktW,GAAOvpW,KACtC,OAAOupW,GAENuhD,KACDA,GAASvhD,GAAOl4Z,QAAUw5c,QAIjC,CACD,MAAMthD,GAASkhD,GACf,GAAIK,KAAWvhD,GAAOltW,WAAaktW,GAAOvpW,KACtC,OAAOupW,GAENuhD,KACDA,GAASvhD,GAAOl4Z,QAAUw5c,KAItC,OAAO,0BAGUD,GAAcC,IAC/B,IAAIC,GAASJ,GAAan4S,kBAAkBs4S,IAC5C,UAAWJ,MAAiBG,GAAc,CACtC,MAAMl4c,GAAU+3c,GAAc/3c,QAC9B,GAAIA,GACA,UAAW62Z,MAAU72Z,GACjB,GAAIo4c,IACA,IAAKvhD,GAAOltW,WAAaktW,GAAOvpW,KAC5B,OAAOupW,QAGLuhD,KACNA,GAASvhD,GAAOl4Z,QAAUw5c,QAIjC,CACD,MAAMthD,GAASkhD,GACf,GAAIK,IACA,IAAKvhD,GAAOltW,WAAaktW,GAAOvpW,KAC5B,OAAOupW,QAGLuhD,KACNA,GAASvhD,GAAOl4Z,QAAUw5c,KAItC,OAAO,0BAEUjxc,GAAMmxc,GAAa,GACpC,GAAIA,GAAa,EAAG,CAChB,IAAIC,GAAU,EACd,MAAMjqc,GAAS,GAEf,UAAW0pc,MAAiB7wc,GAAM,CAC9B,MAAMlH,GAAU+3c,GAAc/3c,QAC9B,GAAIA,GAAS,CACT,MAAMmsB,GAAQntB,OAAOc,OAAOd,OAAOc,OAAO,GAAIi4c,IAAgB,CAAE/3c,QAAS,KACzEqO,GAAOL,KAAKme,IACZ,UAAWhV,MAAQnX,GAGf,GAFAmsB,GAAMnsB,QAAQgO,KAAKmJ,IACnBmhc,KACIA,KAAYD,GACZ,MAAO,CAAEhqc,UAAQiJ,QAAQ,QAKjCjJ,GAAOL,KAAK+pc,IACZO,KAEJ,GAAIA,KAAYD,GACZ,MAAO,CAAEhqc,UAAQiJ,QAAQ,GAGjC,MAAO,CAAEjJ,UAAQiJ,QAAQ,GAGzB,MAAO,CAAEjJ,OAAQnH,GAAMoQ,QAAQ,0BAGhBpQ,GAAMqxc,GAAYC,IACrC,GAAID,GAAY,CACZ,MAAMlqc,GAAS,GACf,UAAW0pc,MAAiB7wc,GAAM,CAC9B,MAAMlH,GAAU+3c,GAAc/3c,QAC9B,GAAIA,IACA,GAAIA,GAAQqG,KAAK8lB,IAAS6rb,GAAaS,kBAAkBtsb,GAAMjsB,MAAOq4c,GAAYC,KAAe,CAC7F,MAAME,GAAkB14c,GAAQwR,OAAO2a,IAAS6rb,GAAaS,kBAAkBtsb,GAAMjsB,MAAOq4c,GAAYC,KACxGnqc,GAAOL,KAAKhP,OAAOc,OAAOd,OAAOc,OAAO,GAAIi4c,IAAgB,CAAE/3c,QAAS04c,YAGtEV,GAAaS,kBAAkBV,GAAc73c,MAAOq4c,GAAYC,KACrEnqc,GAAOL,KAAK+pc,IAGpB,OAAO1pc,GAGP,OAAOnH,kCAGgBA,GAAMm/U,IACjC,MAAMh4U,GAAS,GACf,UAAW0pc,MAAiB7wc,GAAM,CAC9B,MAAMlH,GAAU+3c,GAAc/3c,QAC9B,GAAIA,GAAS,CACT,MAAM04c,GAAkB14c,GAAQwR,OAAO2a,IAAmE,UAA1D6rb,GAAazuP,WAAW88H,GAAiBl6T,IAAO,IAC5Fusb,GAAgB76c,QAChBwQ,GAAOL,KAAKhP,OAAOc,OAAOd,OAAOc,OAAO,GAAIi4c,IAAgB,CAAE/3c,QAAS04c,UAGJ,UAAlEV,GAAazuP,WAAW88H,GAAiB0xH,IAAe,IAC7D1pc,GAAOL,KAAK+pc,IAGpB,OAAO1pc,4BAEcnH,GAAMyxc,IAC3B,OAA0B,KAAtBA,UACAA,IAEA7ma,OAAO6ma,OACPA,GAlNqB,GAqNlBC,GAD0BC,gBAAgB3xc,KAC3Byxc,qBAER34c,GAAS62Z,GAAQ9F,IAC/B,OAAOA,GACD/wZ,IAAWA,GAAQqG,KAAKygI,IAAMA,GAAGnoI,QAAUk4Z,GAAOl4Z,OAC9C,OACA,QACJqB,IAAW62Z,GAAOl4Z,QAAUqB,GAAQrB,MAChC,OACA,+BAESqB,GAAS62Z,IAC5B,QAASnsZ,GAAI,EAAGA,GAAI1K,GAAQnC,OAAQ6M,KAChC,GAAI1K,GAAQ0K,IAAG/L,QAAUk4Z,GAAOl4Z,MAE5B,YADAqB,GAAQ8sF,OAAOpiF,GAAG,GAClBqpB,uBAIW7sB,IACnB,IAAI0P,GAAQ,EACZ,GAAIhU,MAAM0L,QAAQpH,IACd,UAAW6wc,MAAiB7wc,GAAM,CAC9B,MAAMlH,GAAU+3c,GAAc/3c,QAC1BA,GACA4W,IAAS5W,GAAQnC,OAGjB+Y,KAIZ,OAAOA,4BAEcjY,IACrB,OAAiB,MAAVA,GAAUo1B,yBAEI7zB,GAAOq4c,GAAYC,IACxC,OAAOD,IACqH,OAAtHP,GAAac,kBAAkB54c,IAAO++C,MAAM,IAAIzrC,OAAOwkc,GAAae,cAAcR,GAAYC,IAAc,MAC5Gzkb,sBAEYjyB,IAClB,OAAOA,GAAIE,QAAQ81c,GAAe,iCAEbh2c,IACrB,UAAWk3c,MAAkBnB,GACzB/1c,GAAMA,GAAIE,QAAQg3c,GAAe7/U,EAAG6/U,GAAe/tT,GAEvD,OAAOnpJ,wBAEUA,GAAK02c,IACtB12c,UAAMk2c,GAAac,kBAAkBd,GAAaiB,eAAen3c,KAC7D02c,IAAsC,mBAAhBA,KACtB12c,GAAM02c,GAAY12c,KAEfA,IAIf,IAAI86P,GAAe,EACnB,MAAMs8M,GAA0B,CAAC,UAAW,SAAU,cAChDC,SAAN,SACIp8c,YAAY6uP,GAAgB5pK,GAAoBgpQ,GAAaD,GAAkBt7L,GAAU/rE,IACrFtmF,KAAKwuP,eAAiBA,GACtBxuP,KAAK4kF,mBAAqBA,GAC1B5kF,KAAK4tV,YAAcA,GACnB5tV,KAAK2tV,iBAAmBA,GACxB3tV,KAAKqyJ,SAAWA,GAChBryJ,KAAKg8c,iBAAmB,EACxBh8c,KAAK0tN,eAAiB,EACtB1tN,KAAKi8c,aAAe,QAEpBj8c,KAAKk8c,UAAY,UAEjBl8c,KAAKi7c,WAAa,EAElBj7c,KAAKm8c,kBAAoB,yBAEzBn8c,KAAKg5c,uBAAyB,IAE9Bh5c,KAAKk5c,uBAAyB,IAE9Bl5c,KAAKo8c,gBAAkB,QACvBp8c,KAAK0qB,OAAS,IAAIy6D,MAClBnlF,KAAK0gD,KAAO,IAAIykC,MAChBnlF,KAAK2pF,MAAQ,IAAIxE,MACjBnlF,KAAK0mF,MAAQ,IAAIvB,MACjBnlF,KAAKuwZ,KAAO,IAAIprU,MAChBnlF,KAAKkpN,OAAS,IAAI/jI,MAClBnlF,KAAKsvP,OAAS,IAAInqK,MAClBnlF,KAAKq8c,aAAe,IAAIl3X,MACxBnlF,KAAKy5Z,OAAS,KACdz5Z,KAAKkgJ,QAAS,EAEdlgJ,KAAKmua,SAAU,EACfnua,KAAK+6c,cAAgB,KACrB/6c,KAAKs8c,gBAAkB,GACvBt8c,KAAKy8V,cAAgB,IAAI/4V,IACzB1D,KAAKkuP,WAAY,EACjBluP,KAAKu8c,WAAY,EACjBv8c,KAAKw8c,WAAY,EACjBx8c,KAAK+oP,WAAY,EACjB/oP,KAAK4rF,UAAW,EAChB5rF,KAAKy8c,aAAc,EACnBz8c,KAAK08c,oBAAqB,EAC1B18c,KAAK28c,iBAAkB,EACvB38c,KAAK48c,KAAQ,WAAUp9M,KACvBx/P,KAAK68c,iBAAkB,EAEvB78c,KAAKssa,WAAa,OAIlBtsa,KAAK0iV,UAAY,OAIjB1iV,KAAKe,GAAKf,KAAKe,GACff,KAAKitV,UAAY1sU,SAAS+lE,GAAU,KAAO,EACvCtmF,KAAKqyJ,WACLryJ,KAAKqyJ,SAASipL,cAAgBt7U,MAElCA,KAAK88c,kBAAoB98c,KAAK+8c,eAAejwV,KAAK9sH,MAGlD8J,SAAKA,IACL9J,KAAK6sN,MAAQ/iN,GACb9J,KAAKg9c,qBAELrpD,eACA,OAAO3zZ,KAAK+oP,UAEZ4qK,aAASpyZ,IACTvB,KAAK+oP,UAAY/oP,KAAKi9c,uBAAuB17c,IAC7CvB,KAAK68C,WAGL4uC,cACA,OAAOzrF,KAAK4rF,SAEZH,YAAQlqF,IACRvB,KAAK4rF,SAAW5rF,KAAKi9c,uBAAuB17c,IAG5C27c,qBACA,OAAOl9c,KAAK68c,gBAEZK,mBAAe37c,IACfvB,KAAK68c,gBAAkB78c,KAAKi9c,uBAAuB17c,IAEnD47c,qBACA,OAAOn9c,KAAK2zZ,SAAW3zZ,KAAKy5Z,OAAS,KAErC2jD,oBACA,OAAOp9c,KAAK2zZ,SAAW,KAAO3zZ,KAAKy5Z,OAEnC0hD,iBACA,OAAOn7c,KAAKs8c,gBAEZnB,eAAW5hU,IACPv5I,KAAKq9c,qBACLr9c,KAAKkpN,OAAOv7C,KAAK,CACbhvF,UAAW3+E,KACXuB,MAAOvB,KAAKu1F,OACZ2zH,OAAQ3vE,KAGhBv5I,KAAKs8c,gBAAkB/iU,GAGvBgiU,wBACA,OAAOv7c,KAAKs9c,mBAEZ/B,sBAAkBh6c,IAClBvB,KAAKs9c,mBAAqB/7c,GAC1BvB,KAAKu9c,kBAGLx8c,SACA,OAAOf,KAAK6oF,IAEZ9nF,OAAGQ,IACHvB,KAAK6oF,IAAMtnF,IAASvB,KAAK48c,KAGzB75c,eACA,OAAO/C,KAAKu8c,UAEZx5c,aAASxB,IACTvB,KAAKu8c,UAAYv8c,KAAKi9c,uBAAuB17c,IAG7CgrD,eACA,OAAOvsD,KAAKqyJ,SAAWryJ,KAAKqyJ,SAAS9lG,SAAWvsD,KAAKkuP,UAErD3hM,aAAShrD,IACTvB,KAAKkuP,UAAYluP,KAAKi9c,uBAAuB17c,IAG7Ci8c,wBACA,OAAOx9c,KAAK08c,mBAEZc,sBAAkBj8c,IAClBvB,KAAK08c,mBAAqB18c,KAAKi9c,uBAAuB17c,IAGtD68Z,eACA,OAAOp+Z,KAAKw8c,UAEZp+C,aAAS78Z,IACTvB,KAAKw8c,UAAYx8c,KAAKi9c,uBAAuB17c,IAG7CA,YACA,OAAOvB,KAAKu1F,OAEZh0F,UAAMA,IACFvB,KAAKy9c,gBAAgBz9c,KAAKu1F,OAAQh0F,KAClCo2B,WAAW,KACP33B,KAAKu1F,OAASh0F,GACdvB,KAAKmrK,WAAW5pK,KACjB,IAIP+kF,eACA,OAAOtmF,KAAKusD,UAAW,EAAKvsD,KAAKitV,UAEjC3mQ,aAAS/kF,SACY,IAAVA,KACPvB,KAAKitV,UAAY1rV,IAIrBm8c,iBACA,OAAO19c,KAAKy8c,YAEZiB,eAAWn8c,IACXvB,KAAKy8c,YAAcz8c,KAAKi9c,uBAAuB17c,IAE/Co8c,kBACA,OAAO39c,KAAK49c,gBAEZC,oBACA,MAA0B,aAAnB79c,KAAKk8c,UAEZ4B,mBACA,MAA0B,YAAnB99c,KAAKk8c,UAEZ6B,mBACA,OAAO/9c,KAAMyrF,QAA0CzrF,KAAKg+c,kBAAf,UAAtBh+c,KAAKi8c,aAE5BgC,iBACA,GAA0B,SAAtBj+c,KAAKi8c,aAiBL,OAAO,KAGXiC,qBACA,IAAIl2c,GACJ,OAAuC,QAA/BA,GAAKhI,KAAKm+c,uBAAoC,IAAPn2c,QAAgB,EAASA,GAAG49E,cAE/E/oC,WACI78C,KAAKwuP,eAAe/+J,OAAO,KAAK9nF,UAAU,KAClC3H,KAAKkgJ,QACLlgJ,KAAKo+c,gBAGb,MAAM3kD,GAASmhD,GAAayD,kBAAkBr+c,KAAK6sN,MAAO7sN,KAAKqyJ,SAAWryJ,KAAKqyJ,SAAS9wJ,MAAQvB,KAAKuB,MAAOvB,KAAK2zZ,UAClG,OAAX8F,KACAz5Z,KAAKy5Z,OAASA,IAEbj0Z,MAAM0L,QAAQuoZ,MACfz5Z,KAAK+6c,cAAgB/6c,KAAKuB,OAE9BvB,KAAKu9c,kBAETzzS,kBACI9pK,KAAKs+c,oBAAoBh9M,eAAe35P,UAAW42c,KAC/C,IAAIv2c,GACsB,SAAtBhI,KAAKi8c,eACgC,QAAnCj0c,GAAKu2c,GAAUztN,sBAAmC,IAAP9oP,QAAgB,EAASA,GAAGkxP,UACzEl5P,KAAKw+c,mBAAqBD,GAAUztN,eAAeoI,UACnDl5P,KAAKo+c,cACLp+c,KAAKw+c,iBAAmBD,GAAUztN,eAAeoI,QACjDl5P,KAAK4kF,mBAAmB64D,mBAGhCz9I,KAAKy+c,iBAAmBz+c,KAAKg5H,UAAUpzC,cACvC5lF,KAAKo+c,cAET18L,YACI,IAAI15Q,GACJhI,KAAKu9c,kBACLv9c,KAAK0+c,yBACD1+c,KAAK2+c,eACD3+c,KAAK4+c,eAAiB5+c,KAAK2+c,aAAav7X,QACxCpjF,KAAK4+c,aAAe5+c,KAAK2+c,aAAav7X,QAEP,QAA7Bp7E,GAAKhI,KAAK6+c,qBAAkC,IAAP72c,QAAgB,EAASA,GAAGq7E,QAAU,GAAKrjF,KAAK8+c,gBAAkB9+c,KAAK6+c,cAAcx7X,SAC5HrjF,KAAK8+c,cAAsC,SAAtB9+c,KAAKi8c,aAA0Bj8c,KAAK6+c,cAAcx7X,OAAS,IAI5Fn3E,cACI6pB,OAAOqrD,SAAS7vC,KAAKi1C,oBAAoB,QAASxmF,KAAK88c,mBAE3DS,kBACI,MAAM5/T,IAAS39I,KAAKq9c,qBAEdzC,GAAamE,kBAAkB/+c,KAAK6sN,MAAO7sN,KAAKs9c,oBAClDt9c,KAAKg/c,oBAAsBrhU,KAC3B39I,KAAKg/c,kBAAoBrhU,IAGjCshU,aACI,MAAMC,GAAsBpD,GAAwBx2c,QAAQtF,KAAKk/c,sBAAuB,EAAKl/c,KAAKk/c,oBAAsB,UACxH,MAAgC,YAAxBA,IAAqCl/c,KAAKg/c,mBAA8C,WAAxBE,GAE5EC,eAAe1lD,IACX,MAAQ,4BACHA,GAAOvpW,KAAO,iCAAmC,KACjDupW,GAAOl4Z,QAAUvB,KAAK+6c,cAAgB,wCAA0C,KAChFthD,GAAO/6W,SAAW,IAE3By7Z,WAAW1gD,IACFA,GAAOltW,WACRvsD,KAAK+6c,cAAgBthD,GAAOl4Z,OAGpC64c,MAAM3gD,IACEz5Z,KAAKo/c,cAAc3lD,KACnBz5Z,KAAKu7B,OAAOk+X,IAGpB3uW,MAAMrb,IACFzvC,KAAKu7B,OAAO,MACZkU,GAAE+T,iBACF/T,GAAEulI,kBAENulS,WAAWjlb,IACPA,GAAM0/I,kBAEVqqS,qBACQr/c,KAAKusD,WAGTvsD,KAAKs/c,QAAO,GACZt/c,KAAKkgJ,QAAUlgJ,KAAKkgJ,OACpBlgJ,KAASkgJ,QACLlgJ,KAAKs8c,gBAAkB,GACvBt8c,KAAKg9c,qBACLh9c,KAAKu/c,kCACL5nb,WAAW,KACH33B,KAAKy5Z,OAELz5Z,KAAKw/c,uBADUx/c,KAAKy5Z,kBAAkBj0Z,MAAQxF,KAAKy5Z,OAAO,GAAKz5Z,KAAKy5Z,QAG/Dz5Z,KAAKk+c,iBACVl+c,KAAKk+c,eAAehiX,UAAY,GAEpCvkE,WAAW,KACP,IAAI3vB,GAAIC,GACRjI,KAAKo+c,cACyF,QAA7Fn2c,GAAyC,QAAnCD,GAAKhI,KAAKs+c,2BAAwC,IAAPt2c,QAAgB,EAASA,GAAGolF,kBAA+B,IAAPnlF,IAAyBA,GAAGgiF,kBACnI,OAEPjqF,KAAK0gD,KAAKitH,KAAK3tK,OAGfA,KAAK2pF,MAAMgkF,KAAK3tK,MAEhBA,KAAKkgJ,SAAWlgJ,KAAK28c,iBACrBhlb,WAAW,KACP5B,OAAOqrD,SAAS7vC,KAAKuwC,iBAAiB,QAAS9hF,KAAK88c,mBAAmB,GACvE98c,KAAK28c,iBAAkB,GAzoBvB,KA4oBR38c,KAAK4kF,mBAAmBuD,gBAE5Bs3X,YAAYhmD,GAAQimD,IAChB,IAAI13c,GAAIC,GACR,OAAQjI,KAAK2sB,qBAAqBsiE,QACH,QAAzBjnF,GAAKhI,KAAK2sB,iBAA8B,IAAP3kB,QAAgB,EAASA,GAAGyxZ,GAAOj8X,uBAAwByxD,QACnE,QAAzBhnF,GAAKjI,KAAK2sB,iBAA8B,IAAP1kB,QAAgB,EAASA,GAAGy3c,eAAoBzwX,MAE3F0wX,YAAYlmD,GAAQimD,IAChB,OAAO1/c,KAAKy/c,YAAYhmD,GAAQimD,IAC1B1/c,KAAK2sB,UAAU8sY,GAAOj8X,aAAex9B,KAAK2sB,UAAU+yb,KAAW1/c,KAAK2sB,eACpE1pB,EAEVm7c,cACI,IAAIp2c,GACJhI,KAAK2+c,aAAe3+c,KAAKy+c,iBAAiBl6S,wBAC1CvkK,KAAK6+c,eAA0C,QAAxB72c,GAAKhI,KAAK4/c,gBAA6B,IAAP53c,QAAgB,EAASA,GAAG49E,eAC7E5lF,KAAK4/c,SAASh6X,cAAc2+E,6BAC5BthK,EAEVm8c,cAAc3lD,IACV,QAAIA,GAAOltW,UAGNvsD,KAAK2zZ,UACL3zZ,KAAK0tN,kBACLloN,MAAM0L,QAAQlR,KAAKu1F,SAAWv1F,KAAKu1F,OAAO90F,OAAST,KAAK0tN,iBAKjE+vP,gBAAgB/2K,GAAQC,IACpB,GAAiB,MAAXD,IAAwD,MAAXC,IAC/CD,KAAWC,GACX,OAAO,EAEX,GAAI3mS,KAAK2zZ,WACO,MAAXjtH,QAAuC,EAASA,GAAOjmS,UAC5C,MAAXkmS,QAAuC,EAASA,GAAOlmS,SACxDimS,GAAOjmS,SAAWkmS,GAAOlmS,OAAQ,CACjC,UAAWo/c,MAAMn5K,GAEb,KADaC,GAAOrhS,QAAQu6c,KAAM,GAE9B,OAAO,EAGf,OAAO,EAEX,OAAO,EAEX7C,qBACIrlb,WAAW,KACP,IAAI1mB,GAASjR,KAAK6sN,MAOlB,GANI7sN,KAAK2zZ,UAAY3zZ,KAAKw9c,oBACtBvsc,GAAS2pc,GAAakF,wBAAwB7uc,GAAQjR,KAAKy5Z,UAE1Dz5Z,KAAKq9c,qBAAuBr9c,KAAKm7c,YAAcn7c,KAAKm7c,WAAW16c,SAAWT,KAAKg8c,mBAChF/qc,GAAS2pc,GAAamF,gBAAgB9uc,GAAQjR,KAAKm7c,WAAYn7c,KAAKo7c,cAEpEp7c,KAAKi7c,WAAa,EAAG,CACrB,MAAMnxc,GAAO8wc,GAAaoF,cAAc/uc,IAASjR,KAAKi7c,YACtDhqc,GAASnH,GAAKmH,OACdjR,KAAKigd,mBAAqBn2c,GAAKoQ,YAG/Bla,KAAKigd,oBAAqB,EAE1BrF,GAAasF,yBAAyBjvc,GAAQjR,KAAK+6c,iBACnD/6c,KAAK+6c,cAAgBH,GAAauF,wBAAwBlvc,KAE9DjR,KAAK86c,aAAe7pc,GACpBjR,KAAK4kF,mBAAmBuD,iBAGhC40X,eAAetta,IACNzvC,KAAKogd,sBAAsB3wa,GAAEr+B,OAAQ,aAQjCpR,KAAKkgJ,SAAWlgJ,KAAKqgd,mBAAmB5wa,GAAEr+B,OAAQpR,KAAK6oF,OAC5D7oF,KAAKq/c,qBACLr/c,KAAKsgd,cATDtgd,KAAKkgJ,SAAWlgJ,KAAKogd,sBAAsB3wa,GAAEr+B,OAAQ,qBACrDpR,KAAKq/c,qBAEJr/c,KAAKqgd,mBAAmB5wa,GAAEr+B,OAAQpR,KAAK6oF,MACxC7oF,KAAKsgd,aAQjBA,YACItgd,KAAKs/c,QAAO,GACZvpb,OAAOqrD,SAAS7vC,KAAKi1C,oBAAoB,QAASxmF,KAAK88c,mBACvD98c,KAAK28c,iBAAkB,EAE3ByD,sBAAsBh6X,GAAS3nC,IAC3B,OAA2D,OAApDz+C,KAAKugd,wBAAwBn6X,GAAS3nC,IAEjD4ha,mBAAmBj6X,GAASrlF,IACxB,OAAkD,OAA3Cf,KAAKwgd,qBAAqBp6X,GAASrlF,IAE9Cw/c,wBAAwBn6X,GAAS3nC,IAC7B,OAAIz+C,KAAKygd,eAAer6X,GAAS3nC,GAASyjB,OAAOj8D,MAAM,QAC5CmgF,GAEJA,GAAQ0J,cAAgB9vF,KAAKugd,wBAAwBn6X,GAAQ0J,cAAerxC,IAAY,KAEnG+ha,qBAAqBp6X,GAASrlF,IAC1B,OAAIqlF,GAAQrlF,KAAOA,GACRqlF,GAEJA,GAAQ0J,cAAgB9vF,KAAKwgd,qBAAqBp6X,GAAQ0J,cAAe/uF,IAAM,KAE1F0/c,eAAer6X,GAASstK,IACpB,IAAKttK,GAAQwQ,UACT,OAAO,EAEX,UAAWn4C,MAAYi1M,GACnB,IAAKttK,GAAQwQ,UAAUxP,SAAS3oC,IAC5B,OAAO,EAGf,OAAO,EAEXiia,UACS1gd,KAAKusD,UACNvsD,KAAKs/c,QAAO,GAGpBqB,WACQ3gd,KAAKy+c,mBAAqBz+c,KAAKy+c,iBAAiB7nX,UAAUxP,SAAS,qBACnEpnF,KAAKs/c,QAAO,GACZt/c,KAAKssa,cAGb/wY,OAAOk+X,IACH,IAAIl4Z,GACJ,GAAe,OAAXk4Z,GACA,GAAIz5Z,KAAK2zZ,SAAU,CACf,MAAM/wZ,GAAU5C,KAAKy5Z,OACfvsY,GAAQtqB,GAAQ0sC,UAAUo6F,IAAMA,GAAGnoI,QAAUk4Z,GAAOl4Z,QAC5C,IAAV2rB,GACAtqB,GAAQgO,KAAK6oZ,IAGb72Z,GAAQ8sF,OAAOxiE,GAAO,GAE1B3rB,GAAQvB,KAAKy5Z,OAAOh0Z,IAAIikI,IAAMA,GAAGnoI,YAGjCvB,KAAKy5Z,OAASA,GACVz5Z,KAAKkgJ,SACLlgJ,KAAKkgJ,QAAS,EACdlgJ,KAAK2pF,MAAMgkF,KAAK3tK,MACZA,KAAKy+c,kBACLz+c,KAAKy+c,iBAAiB/3X,SAG9BnlF,GAAQvB,KAAKy5Z,OAAOl4Z,WAIxBvB,KAAKy5Z,OAAS,KAEdz5Z,KAAK2zZ,UAAY3zZ,KAAKw9c,mBACtBx9c,KAAKg9c,qBAETh9c,KAASqyJ,SACLryJ,KAAK0iV,UAAUnhV,IAGfvB,KAAKu1F,OAASh0F,GAElBvB,KAAK0qB,OAAOijJ,KAAK,CACbhvF,UAAW3+E,KACXuB,MAAOA,GACPqB,QAAS4C,MAAM0L,QAAQlR,KAAKy5Z,QAAUz5Z,KAAKy5Z,OAASz5Z,KAAKy5Z,OAAS,CAACz5Z,KAAKy5Z,QAAU,OAG1F4gD,QAAQ5qa,IACAzvC,KAAK4gd,SAASnxa,GAAG,CAAC,YAAa,MAC/BzvC,KAAK6gd,WACLpxa,GAAE+T,kBAEDxjD,KAAS4gd,SAASnxa,GAAG,CAAC,UAAW,MAClCzvC,KAAKk8Z,SACLzsX,GAAE+T,kBAEDxjD,KAAS4gd,SAASnxa,GAAG,CAAC,QAAS,MAChCzvC,KAAK8gd,gBACLrxa,GAAE+T,kBAEGxjD,KAAK4gd,SAASnxa,GAAG,CAAC,SAAU,MAAO,EAAG,MAAQzvC,KAAKkgJ,SACxDlgJ,KAAKq/c,qBACLr/c,KAAKs/c,QAAO,IAGpByB,QAAQtxa,IACAzvC,KAAK4gd,SAASnxa,GAAG,CAAC,YAAa,UAAW,QAAS,GAAI,GAAI,MAC3DzvC,KAAKq/c,qBACL5va,GAAE+T,kBAEGxjD,KAAK4gd,SAASnxa,GAAG,CAAC,SAAU,MAAO,EAAG,OAC3CzvC,KAAKs/c,QAAO,GACZt/c,KAAKssa,cAGb00C,QAAQlvP,GAAQ/3M,IACZ,OAAOA,GAAKxY,MAEhB+4c,aAAa7qa,IACTzvC,KAAKm7c,WAAa1ra,GAAEr+B,OAAO7P,MAC3BvB,KAAKg9c,qBAET7wP,WAAWstM,IACP,OAAOmhD,GAAazuP,WAAWnsN,KAAKy5Z,OAAQA,GAAQz5Z,KAAK2zZ,UAE7DpoP,WAAWkuP,IACP,OAAOA,GAAOltW,SAAW,OAAS,QAEtC2tZ,gBAAgBzqa,GAAGgqX,IACfmhD,GAAaV,gBAAgBl6c,KAAKy5Z,OAAQA,IACtCz5Z,KAAK2zZ,UAAY3zZ,KAAKw9c,mBACtBx9c,KAAKg9c,qBAET,MAAMz7c,GAAQvB,KAAKy5Z,OAAOh0Z,IAAIikI,IAAMA,GAAGnoI,OACnCvB,KAAKqyJ,SACLryJ,KAAK0iV,UAAUnhV,IAGfvB,KAAKu1F,OAASh0F,GAElBvB,KAAK0qB,OAAOijJ,KAAK,CACbhvF,UAAW3+E,KACXuB,MAAOA,GACPqB,QAAS4C,MAAM0L,QAAQlR,KAAKy5Z,QAAUz5Z,KAAKy5Z,OAASz5Z,KAAKy5Z,OAAS,CAACz5Z,KAAKy5Z,QAAU,OAEtFz5Z,KAAKq8c,aAAa1uS,KAAK,CACnBhvF,UAAW3+E,KACXuB,MAAOA,GACP0/c,cAAexnD,KAEnBhqX,GAAE+T,iBACF/T,GAAEulI,kBACEh1K,KAAKkgJ,QACLlgJ,KAAKu/c,kCAObp0S,WAAW5pK,IACPvB,KAAKkhd,qBAAqB3/c,IAS9B6pK,iBAAiBt/I,IACb9rB,KAAK0iV,UAAY52T,GASrBu/I,kBAAkBv/I,IACd9rB,KAAKssa,WAAaxgZ,GAOtBw/I,iBAAiBC,IACbvrK,KAAKusD,SAAWg/G,GAEpBivS,SAAS2G,IACLnhd,KAAKsvP,OAAO3hF,KAAK,CACbhvF,UAAW3+E,KACXmhd,OACAj4P,OAAQlpN,KAAKs8c,kBAGrBsB,gBAKI,SAJkB59c,KAAKqyJ,UAAYryJ,KAAKqyJ,SAAS7zE,UAC/Bx+E,KAAKqyJ,UAAYryJ,KAAKqyJ,SAASrwG,SAC5BhiD,KAAK2tV,kBAAoB3tV,KAAK2tV,iBAAiBtvQ,WAC/Dr+E,KAAK4tV,aAAe5tV,KAAK4tV,YAAYvvQ,YAG9C69U,SACIl8Z,KAAKw/c,uBAAuB5E,GAAawG,kBAAkBphd,KAAK86c,aAAc96c,KAAK+6c,gBAEvF8F,WACI7gd,KAAKw/c,uBAAuB5E,GAAayG,cAAcrhd,KAAK86c,aAAc96c,KAAK+6c,gBAEnFyE,uBAAuB/lD,IACnB,GAAIA,GAAQ,CACRz5Z,KAAK+6c,cAAgBthD,GAAOl4Z,MAC5B,MAAM+/c,GAAathd,KAAKovD,QAAQv2C,KAAKkuN,IAAKA,GAAEnhJ,cAAckV,UAAU54B,SAAWu3V,GAAO32Z,OACtF,GAAIw+c,IAActhd,KAAKk+c,eAAgB,CACnCl+c,KAAKk+c,eAAehiX,UAAY,EAChC,MAAMqlX,GAAiBvhd,KAAKk+c,eAAe35S,wBACrCi9S,GAAmBF,GAAW17X,cAAc2+E,wBAClDvkK,KAAKk+c,eAAehiX,UAAYslX,GAAiBh3X,IAAM+2X,GAAe/2X,MAIlFs2X,gBACI,GAAI9gd,KAAK+6c,cAAe,CACpB,MAAMthD,GAASmhD,GAAaC,iBAAiB76c,KAAK6sN,MAAO7sN,KAAK+6c,eAC9D/6c,KAAKu7B,OAAOk+X,KAGpBmnD,SAAStrb,GAAO46F,GAAO,IACnB,OAAOlwH,KAAKyhd,OAAOzhd,KAAK0hd,QAAQpsb,IAAQ46F,IAE5CwxV,QAAQpsb,IACJ,IAAIjQ,GACJ,YAAkBpiB,IAAdqyB,GAAMzyB,IACNwiB,GAAOiQ,GAAMzyB,SAEmBI,IAA/Bo3M,GAAU6iL,cACX73W,GAAOiQ,GAAM4nW,mBAEaj6X,IAAzBo3M,GAAU/wH,QACXjkE,GAAOiQ,GAAMg0D,QAGbh0D,GAAMkuB,iBAEHn+B,GAEXo8b,OAAOp8b,GAAM6qG,GAAO,IAChB,SAAOA,IAAQA,GAAKzvH,OAAS,KAA2B,IAAvByvH,GAAK5qH,QAAQ+f,IAMlD67b,qBAAqB3/c,IACjB,GAAIvB,KAAKy5Z,QAA4C,MAAjCl4Z,GAAwC,CACxD,MAAM2P,GAAU1L,MAAM0L,QAAQ3P,IAC9B,GAAIvB,KAAK2zZ,UAAYpyZ,KAAU2P,GAC3B,MAAM,IAAIrM,MAAM,oBAEX7E,KAAK6sN,MACV7sN,KAAS2zZ,UACL3zZ,KAAKy5Z,OAAS,GACVvoZ,IAGA87Z,GADoCqxC,kBAAkBr+c,KAAK6sN,MAAOtrN,GAAOvB,KAAK2zZ,UAC/DluZ,IAAIsU,IAAQ/Z,KAAKu7B,OAAOxhB,MAI3C/Z,KAAKu7B,OAAOq/a,GAAaC,iBAAiB76c,KAAK6sN,MAAOtrN,KAGrDvB,KAAKqyJ,UACVryJ,KAAKqyJ,SAASiqL,kBAAkB/6U,IAEpCvB,KAAK4kF,mBAAmBuD,gBAIhCu2X,yBACI,MAAMhoX,GAAW12F,KAAKuB,MAClBvB,KAAK2hd,uBAAyBjrX,KAC9B12F,KAAK2hd,qBAAuBjrX,GAC5B12F,KAAKy8V,cAAcv4V,QAG3B+4c,uBAAuB17c,IACnB,OAAgB,MAATA,IAAgC,SAAd,GAAEA,KAE/Bg+c,kCACSv/c,KAAKg/c,kBAODh/c,KAAKk+c,gBACVl+c,KAAKk+c,eAAex3X,QAPpB/uD,WAAW,KACH33B,KAAK2ua,aAAe3ua,KAAK2ua,YAAY/oV,eACrC5lF,KAAK2ua,YAAY/oV,cAAcc,UAQ/C44X,OAAO/rb,KACEA,IAASvzB,KAAKmua,SACfnua,KAAKmua,QAAU56Y,GACfvzB,KAAKuwZ,KAAK5iP,KAAK3tK,OAEVuzB,KAAUvzB,KAAKmua,UACpBnua,KAAKmua,QAAU56Y,GACfvzB,KAAK0mF,MAAMinF,KAAK3tK,OAGxBg+c,kBACI,OAAOh+c,KAAKyrF,SAAWzrF,KAAKw+c,kBAA0C,SAAtBx+c,KAAKi8c,aACrB,QAA1Bj8c,KAAKw+c,iBACiB,UAAtBx+c,KAAKi8c,cAGmBF,UAAQ/0c,UAAR,4BAAqG+0c,IAAVr7c,MAAmC4mF,MAAnC5mF,MAAgEA,OAAhEA,MAAiGgwF,IAA5L,GAA2FhwF,MAAuIgwF,KAAlO,GAA2FhwF,MAAyLgwF,KAApR,IAA2FhwF,MAA8O,cACzUq7c,GAAQ3zX,UADmF1nF,MAC3F,MAAyFq7c,GAAzFj/Z,4DAD2Fp8C,KAC0yCggQ,KAAr4C,GAD2FhgQ,KAC3Fkhd,MAD2Flhd,KAC3FmqN,MAD2FnqN,KAC3Fo9H,MAD2Fp9H,KAC3F+4M,MAD2F/4M,KAC3Fo7P,oBAD2Fp7P,MAC3F0zb,GAD2F1zb,WAC3Fmhd,iCAD2Fnhd,MAC3F0zb,GAD2F1zb,WAC3Fmhd,uBAD2Fnhd,MAC3F0zb,GAD2F1zb,WAC3Fmhd,6BAD2Fnhd,MAC3F0zb,GAD2F1zb,WAC3Fmhd,yBAD2Fnhd,MAC3F0zb,GAD2F1zb,WAC3Fmhd,sBAD2Fnhd,MAC3F0zb,GAD2F1zb,WAC3Fmhd,gEAD2Fnhd,MAC3F,YAD2FA,MAC3F,+BAD2FA,MAC3F,4BAD2FA,CAC3F,0BAD2FA,CAC3F,ukIAD2FA,MAC3FkiW,IAD2FliW,MAC6yD,WAD7yDA,MAC00D,0BAAUmhd,0BADp1Dnhd,MACi3D,GADj3DA,MACy6D,mBADz6DA,cAC8+D,UAD9+DA,CAC8+D,aAD9+DA,MAC+8E,0BAAUmhd,yBADz9Enhd,CAC+8E,0BAAoDmhd,cADngFnhd,CAC+8E,yBAAkFmhd,eADjiFnhd,CAC+8E,8BAAoHmhd,iBADnkFnhd,MAC4qF,WAD5qFA,MAC44F,mBAD54FA,MACw2G,mBADx2GA,MAC8oH,mBAD9oHA,MACuvH,kBADvvHA,gBAC2nJ,6BAD3nJA,MACwwJ,aADxwJA,MAC2zJ,MAD3zJA,gBACo4J,4BADp4JA,MACuxK,kCAAkBmhd,0BADzyKnhd,MACi6K,kCADj6KA,QAC3F,eAD2FA,MAC3F,GAD2FA,MACg7D,GADh7DA,MACg7D,oBADh7DA,MACqlE,GADrlEA,MACqlE,4CADrlEA,CACqlE,2CADrlEA,CACqlE,oCADrlEA,CACqlE,2CADrlEA,MACwnF,GADxnFA,MACwnF,8BADxnFA,MACm5E,uCADn5EA,MACuuF,GADvuFA,MACuuF,0CADvuFA,CACuuF,0CADvuFA,MACm5F,GADn5FA,MACm5F,qBADn5FA,MAC26G,GAD36GA,MAC26G,mFAD36GA,MACqpH,GADrpHA,MACqpH,qBADrpHA,MAC4vH,GAD5vHA,MAC4vH,oBAD5vHA,MAC0oJ,GAD1oJA,MAC0oJ,oBAD1oJA,MACshK,GADthKA,MACshK,+BADthKA,CACshK,gDADthKA,CACshK,8CADthKA,CACshK,6CADthKA,CACshK,gDAAjnKg8D,YAAgg8B2rB,KAAiFiiR,KAAuIjiR,KAA0GA,KAAwHiiR,KAAq8BjqG,IAA/3+B/3K,+mwBAtuBhCyzX,OAo3BA18X,SAAN,UAEsCA,UAAcr4E,UAAd,4BAA2Gq4E,KAC3GA,GAAc+C,UAlJ6E1hF,MAkJ3F,MAA4G2+E,KAC5GA,GAAcgD,UAnJ6E3hF,MAmJ3F,UAAqI,CAAC8vD,KAAckpC,KAAa7I,KAAezR,KAAqB66X,IAAuBvgX,KAAata,QAJzQC,mMC9qC4F3+E,MAqH8sB,cArH9sBA,MAqHs0B,GArHt0BA,oCAqH+vB,UArH/vBA,MAqH+vB,mBArH/vBA,MAqHs0B,GArHt0BA,MAqHs0B,kGA7Hl6Bohd,QAAN,QACInid,cAEIK,KAAK+hd,aAAc,EAEnB/hd,KAAKshJ,YAAa,GAG1BwgU,SAAgB96c,UAAhB,0BAA4G86c,IAC5GA,EAAgB36c,WADkFzG,MAClG,OAAgHohd,EAAhHnhd,QAAgHmhd,EAAhH,qBAA6I,SATvIA,MAkBAE,QAAN,QACIrid,YAAY4E,GAERvE,KAAKshJ,YAAa,EAElBthJ,KAAK+hd,aAAc,EACnB/hd,KAAKw3B,OAAS,GACd51B,OAAOc,OAAO1C,KAAMuE,GAExB09c,iBAAiBC,IACRlid,KAAK+hd,aAGV/hd,KAAKw3B,OAAOxV,QAAS+M,IACbA,IAAUmzb,IACVnzb,EAAMmxH,QAAS,KAI3BqyQ,SAASxjY,GACLA,EAAMuyH,WAAathJ,KAAKshJ,WACxBthJ,KAAKw3B,OAAO5mB,KAAKme,GAErB4jY,YAAY5jY,GACR,MAAM7B,EAAQltB,KAAKw3B,OAAOlyB,QAAQypB,IACpB,IAAV7B,GACAltB,KAAKw3B,OAAOk4D,OAAOxiE,EAAO,IAItC80b,SAAmBh7c,UAAnB,0BAA+Gg7c,GAxCbthd,MAwCiDohd,KACnJE,EAAmB55X,UAzC+E1nF,MAyClG,MAAmGshd,EAAnGlla,4CAA8O,UAA9O,gFAzCkGp8C,MAyClG,mKAzCkGA,cAyCiT,KAAnZmlL,kBA/BMm8R,MAyDAG,QAAN,QACIxid,YAAYyid,GAERpid,KAAKshJ,YAAa,EAMlBthJ,KAAKgjF,WAAa,gBAElBhjF,KAAKurK,YAAa,EAElBvrK,KAAK8jD,aAAe,IAAIqhC,MACxBnlF,KAAKqid,SAAU,EACfrid,KAAKoid,UAAYA,EAIjBliU,aACA,OAAOlgJ,KAAKqid,QAEZniU,WAAO3+I,GACHA,IAAUvB,KAAKkgJ,SACX3+I,GACAvB,KAAKoid,UAAUH,iBAAiBjid,MAEpCA,KAAKqid,QAAU9gd,EACfq1B,QAAQC,QAAQ,MACXT,KAAK,KACNp2B,KAAK8jD,aAAa6pH,KAAKpsK,MAI/B+gd,YACA,OAAOA,UAEXzla,WACI78C,KAAKoid,UAAU7vD,SAASvyZ,MAE5BkM,cACIlM,KAAKoid,UAAUzvD,YAAY3yZ,MAE/Buid,aACSvid,KAAKurK,aACNvrK,KAAKkgJ,QAAUlgJ,KAAKkgJ,SAIhCiiU,SAAwBn7c,UAAxB,0BAAoHm7c,GApHlBzhd,MAoH2Dshd,KAC7JG,EAAwB/5X,UArH0E1nF,MAqHlG,MAAwGyhd,EAAxGrla,yIArHkGp8C,MAqHlG,mmBArHkGA,MAqHlGs1N,GArHkGt1N,MAqH+W,UArH/WA,CAqH+W,WArH/WA,MAqH2e,0BAAUywC,iBArHrfzwC,MAqHilB,UArHjlBA,CAqHilB,WArHjlBA,MAqH8sB,oBArH9sBA,MAqHg3B,GArHh3BA,kBAqHg9B,UArHh9BA,CAqHg9B,WArHh9BA,MAqHynC,KArHznCA,aAqHlG,MArHkGA,MAqHyY,wBArHzYA,MAqHygB,GArHzgBA,MAqHygB,yDArHzgBA,MAqHoqB,GArHpqBA,MAqHoqB,0BArHpqBA,MAqH8uB,GArH9uBA,MAqH8uB,kBArH9uBA,MAqHygC,GArHzgCA,MAqHygC,qBArHzgCA,CAqHygC,6BAA3mCg8D,YAAg8C4qB,KAA2EA,KAAiFoJ,KAA5lDpI,uOAlDM65X,MA6EA71U,QAAN,QAAsB31G,iBAEd,MAAO,CAAEi+G,SAAUtI,EAAiB39C,UAAW,KAGvD29C,SAAgBtlI,UAAhB,0BAA4GslI,IAC5GA,EAAgBlqD,UAtJkF1hF,MAsJlG,MAA6G4rI,IAC7GA,EAAgBjqD,UAvJkF3hF,MAuJlG,UAAwI,CAAC8vD,KAAc+7E,QAPjJD,6IClJwF5rI,cAyD4Y,cAzD5YA,MAyDmd,mBAzDndA,aAyDmdylO,GAAUY,EAzD7drmO,IAyDmd,GAAUipF,UAzD7djpF,MAyDif,YAzDjfA,MAyDsiB,UAzDtiBA,cAyD8jB,YAzD9jBA,MAyDsmB,WAzDtmBA,0CAyD8Q,WAzD9QA,MAyDgW,yBAzDhWA,MAyD6pB,GAzD7pBA,oCAyDmR,uBAzDnRA,MAyDoU,qBAzDpUA,MAyD6W,GAzD7WA,MAyD6W,yCAnErc8hd,QAAN,QACI7id,cAEIK,KAAKmD,KAAO,UAEZnD,KAAKyid,aAAc,EAEnBzid,KAAK0id,sBAAmBz/c,GAGhCu/c,SAAYx7c,UAAZ,0BAAwGw7c,IACxGA,EAAYr7c,WADkFzG,MAC9F,OAA4G8hd,EAA5G7hd,QAA4G6hd,EAA5G,qBAAqI,SAX/HA,MAmBAzka,QAAN,QACIp+C,YAAYmlF,EAASi5D,GACjB/9I,KAAK+9I,gBAAkBA,EAKvB/9I,KAAKmD,KAAO,UAEZnD,KAAKyid,aAAc,EAEnBzid,KAAKkgJ,QAAS,EAIdlgJ,KAAKggF,QAAU,IAAImF,MAEnBnlF,KAAK2id,SAAW,IAAIx9X,MACpBnlF,KAAK0+C,QAAU,GACf1+C,KAAK4id,kBAAoB,IAAIz9X,MAC7BvjF,OAAOc,OAAO1C,KAAM8kF,GACpB9kF,KAAK4id,kBAAkBj7c,UAAU,KAC7B3H,KAAK0+C,QAAU1+C,KAAKyid,YAAc,oBAAsB,GACxDzid,KAAK+9I,gBAAgB51D,iBAG7BtrC,WACQ78C,KAAK0id,kBAEL/qb,WAAW,IAAM33B,KAAK2pF,QAASppE,SAASvgB,KAAK0id,iBAAkB,KAQvE/4X,SACS3pF,KAAKkgJ,SAGVlgJ,KAAKggF,QAAQ2tF,KAAK3tK,MAClBA,KAAKkgJ,QAAS,EACdlgJ,KAAK+9I,gBAAgB51D,eACrBnoF,KAAK2id,SAASh1S,KAAK3tK,QAG3B+9C,SAAe/2C,UAAf,0BAA2G+2C,GAxDbr9C,MAwD6C8hd,GAxD7C9hd,MAwDqEA,SACnKq9C,EAAeqqC,UAzD+E1nF,MAyD9F,MAA+Fq9C,EAA/FjB,0bAzD8Fp8C,cAyD2O,0BAAzU,KAzD8FA,MAyDwP,kBAAtVg8D,YAAw0Bg0B,KAAiFA,MAAz5Bm1F,qCACA5mC,QAAW,EACP4jU,WACAC,QAAW,cAAelhd,SAC3Bm8C,EAAel8C,UAAW,mBAAe,GApDtCk8C,MAsEA0S,QAAN,QAAkB95B,iBAEV,MAAO,CAAEi+G,SAAUnkF,EAAak+B,UAAW,KAGnDl+B,SAAYzpD,UAAZ,0BAAwGypD,IACxGA,EAAY2xB,UArFkF1hF,MAqF9F,MAAyG+vD,IACzGA,EAAY4xB,UAtFkF3hF,MAsF9F,UAAgI,CAAC8vD,SAP3HC,0GC3FN,MAAMsyZ,EAAkC,CACpCxgY,QAAS8jF,KACTC,aAAaC,SAAW,IAAMy8S,GAC9B72U,OAAO,OAKL62U,QAAN,QACIrjd,cAEIK,KAAKijd,iBAAkB,EAEvBjjd,KAAKkjd,kBAAmB,EACxBljd,KAAKuzB,OAAQ,EACbvzB,KAAKurK,YAAa,EAClBvrK,KAAKmmD,SAAWyzH,SAAS/3K,UACzB7B,KAAK6uN,UAAYj1C,SAAS/3K,UAG9B6kL,UACQ1mL,KAAKurK,aAGTvrK,KAAKmlP,QAAQnlP,KAAKuzB,OAClBvzB,KAAKmmD,SAASnmD,KAAKuB,QAEvBs7C,WACI78C,KAAKmlP,OAAOnlP,KAAKmjd,YAAcnjd,KAAKuB,OAEpC4hd,gBACA,YAAuC,IAAzBnjd,KAAKijd,iBACbjjd,KAAKijd,gBAGXG,iBACA,YAAwC,IAA1Bpjd,KAAKkjd,kBACbljd,KAAKkjd,iBAGf/9N,OAAO5xN,GACHvzB,KAAKuzB,MAAQA,EACbvzB,KAAKuB,MAAQvB,KAAKuzB,MAAQvzB,KAAKmjd,UAAYnjd,KAAKojd,WAIpDj4S,WAAW5pK,GACPvB,KAAKuzB,MAAQvzB,KAAKmjd,YAAc5hd,EAChCvB,KAAKuB,MAAQA,EAAQvB,KAAKmjd,UAAYnjd,KAAKojd,WAE/C93S,iBAAiBC,GACbvrK,KAAKurK,WAAaA,EAEtBH,iBAAiBt/I,GACb9rB,KAAKmmD,SAAWr6B,EAEpBu/I,kBAAkBv/I,GACd9rB,KAAK6uN,UAAY/iM,GAGzBk3b,SAAwBh8c,UAAxB,0BAAoHg8c,IACpHA,EAAwBv7X,UADkF/mF,MAC1G,MAAwGsid,EAAxGlma,6EAD0Gp8C,MAC1G,0BAAwGylO,cAAxG,MAD0GzlO,MAC1G,wBAD0GA,MAC1G,6GAD0GA,MACmR,CAACqid,OArDxXC,MA2EN,MAAMK,EAAiC,CACnC9gY,QAAS8jF,KACTC,aAAaC,SAAW,IAAM+8S,GAC9Bn3U,OAAO,OAMLm3U,QAAN,QACI3jd,YAAYm6F,EAAIyjD,EAAK18D,EAAU9xD,GAC3B/uB,KAAK85F,GAAKA,EACV95F,KAAKu9I,IAAMA,EACXv9I,KAAK6gF,SAAWA,EAChB7gF,KAAK+uB,MAAQA,EACb/uB,KAAKmmD,SAAWyzH,SAAS/3K,UACzB7B,KAAK6uN,UAAYj1C,SAAS/3K,UAE1B7B,KAAKujd,aAAc,EACnBvjd,KAAKkJ,KAAO,QACZlJ,KAAKkuP,WAAY,EACjBluP,KAAKwjd,WAAY,EAGjBjid,YACA,OAAOvB,KAAK+uB,MAAQ/uB,KAAK+uB,MAAMxtB,MAAQvB,KAAKu1F,OAE5Ch0F,UAAMA,GACFvB,KAAK+uB,MACL/uB,KAAK+uB,MAAMxtB,MAAQA,GAGvBvB,KAAKu1F,OAASh0F,EACdvB,KAAK0iV,UAAUnhV,IAGfgrD,eACA,OAAOvsD,KAAKkuP,UAEZ3hM,aAASA,GACTvsD,KAAKsrK,iBAAiB/+G,GAEtBk3Z,6BACA,SAAOzjd,KAAKusD,UAAavsD,KAAK+uB,OAAS/uB,KAAK+uB,MAAMw9B,gBAAmBtpD,EAErEygd,uBAGA,OAAO1jd,KAAKyjd,yBAA2Bzjd,KAAKm4C,SAE5CA,eACA,OAAOn4C,KAAK2jd,WAAa3jd,KAAKuB,MAE9B4jK,eACA,IAAInlK,KAAKyjd,uBAIJ,OAAIzjd,KAAKm4C,UAA0B,MAAdn4C,KAAK+uB,MACpB,GAGA,EAGX6nY,eACA,OAAO52Z,KAAKwjd,UAEhBI,mBACS5jd,KAAK6jd,cAIN7jd,KAAKuB,MADLvB,KAAKujd,aAAevjd,KAAK2jd,WAAa3jd,KAAKuB,WAC9B0B,EAGAjD,KAAK2jd,UAG1BG,eAAexub,GACXt1B,KAAK4jd,kBACLtub,EAAMkuB,iBAEVkjC,QACI1mF,KAAK85F,GAAGlU,cAAcc,QAE1B8pU,UACIxwZ,KAAKwjd,WAAY,EAErBlzD,SACItwZ,KAAKwjd,WAAY,EACjBxjd,KAAK6uN,YAETg1P,YACI,OAAQ7jd,KAAKyjd,yBAA2Bzjd,KAAKujd,aAAevjd,KAAK2jd,WAAa3jd,KAAKuB,OAEvF84F,YAAYp9E,GACJ,gBAAiBA,IACjBjd,KAAKujd,aAAmC,IAArBvjd,KAAKujd,kBAAqD,IAArBvjd,KAAKujd,aAGrE7gI,UAAUnhV,GACFvB,KAAK+uB,MACL/uB,KAAK+uB,MAAMxtB,MAAQA,GAGvBvB,KAAK6uN,YACL7uN,KAAKmmD,SAAS5kD,IAIlB4pK,WAAW5pK,GACPvB,KAAKuB,MAAQA,EACbvB,KAAKu9I,IAAIp1D,eAEbijF,iBAAiBt/I,GACb9rB,KAAKmmD,SAAWr6B,EAEpBu/I,kBAAkBv/I,GACd9rB,KAAK6uN,UAAY/iM,EAErBw/I,iBAAiB/+G,GACbvsD,KAAKkuP,UAAY3hM,EACbA,EACAvsD,KAAK6gF,SAASgB,aAAa7hF,KAAK85F,GAAGlU,cAAe,WAAY,YAGlE5lF,KAAK6gF,SAAS4F,gBAAgBzmF,KAAK85F,GAAGlU,cAAe,aAG7D09X,SAAqBt8c,UAArB,0BAAiHs8c,GAzJP5id,MAyJ6CA,OAzJ7CA,MAyJuEA,OAzJvEA,MAyJwGA,OAzJxGA,OAyJiI6lK,SAAW,IAAMw9S,GAA5P,KACAT,EAAqB77X,UA1JqF/mF,MA0J1G,MAAqG4id,EAArGxma,0EA1J0Gp8C,MA0J1G,0BAAqGylO,qBA1JKzlO,CA0J1G,mCAAqGylO,qBA1JKzlO,CA0J1G,0BAAqGylO,aA1JKzlO,CA0J1G,yBAAqGylO,aAArG,MA1J0GzlO,MA0J1G,yCA1J0GA,CA0J1G,0BA1J0GA,CA0J1G,cA1J0GA,CA0J1G,uBA1J0GA,MA0J1G,8BA1J0GA,CA0J1G,0HA1J0GA,MA0JuhB,CAAC2id,IA1JxhB3id,SAgCpG4id,MAgLN,MAAMU,EAA+B,CACjCzhY,QAAS8jF,KACTC,aAAaC,SAAW,IAAMw9S,GAC9B53U,OAAO,OAML43U,QAAN,QACIpkd,YAAY49I,GACRv9I,KAAKu9I,IAAMA,EACXv9I,KAAKmmD,SAAWyzH,SAAS/3K,UACzB7B,KAAK6uN,UAAYj1C,SAAS/3K,UAC1B7B,KAAKkJ,KAAO,aACZlJ,KAAKkuP,WAAY,EAEjB3sP,YACA,OAAOvB,KAAKu1F,OAEZh0F,UAAMA,GACNvB,KAAKu1F,OAASh0F,EACdvB,KAAKmmD,SAAS5kD,GAEdgrD,eACA,OAAOvsD,KAAKkuP,UAEZ/oF,eACA,OAAInlK,KAAKkuP,UACE,KAGA,EAGf/iF,WAAW5pK,GACPvB,KAAKu1F,OAASh0F,EACdvB,KAAKu9I,IAAIp1D,eAEbijF,iBAAiBt/I,GACb9rB,KAAKmmD,SAAWr6B,EAEpBu/I,kBAAkBv/I,GACd9rB,KAAK6uN,UAAY/iM,EAErBw/I,iBAAiB/+G,GACTvsD,KAAKikd,eACLjkd,KAAKkuP,UAAY3hM,EACjBvsD,KAAKikd,aAAajic,QAAQ2+D,IACtBA,EAAQ2qF,iBAAiB/+G,KAE7BvsD,KAAKu9I,IAAIp1D,gBAGjBqoU,UACI,GAAIxwZ,KAAKkuP,UACL,OAEJ,MAAMg2N,EAAclkd,KAAKmkd,0BACzB,GAAID,EACAA,EAAYx9X,aAGhB,GAAI1mF,KAAKikd,aAAc,CACnB,MAAMG,EAAepkd,KAAKikd,aAAaprc,KAAKkuN,IAAMA,EAAEx6K,UAChD63Z,GACAA,EAAa19X,SAIzB4pU,SACQtwZ,KAAK6uN,WACL7uN,KAAK6uN,YAGbw1P,WAAW/ub,GACPt1B,KAAKskd,kBAAkB,QACvBhvb,EAAMkuB,iBAEV+ga,eAAejvb,GACXt1B,KAAKskd,kBAAkB,YACvBhvb,EAAMkuB,iBAEV8ga,kBAAkBn2X,GACd,GAAInuF,KAAKkuP,UACL,OAEJ,WAAmBnG,EAAcy8N,GAE7B,IAAIC,GAAa18N,GADU,SAAd55J,EAAuB,GAAI,IACAq2X,EAAsB/jd,OAC9D,OAAIgkd,EAAY,IACZA,EAAYD,EAAsB/jd,OAAS,GAExCgkd,EAEX,MAAMP,EAAclkd,KAAKmkd,0BACzB,GAAID,GAAelkd,KAAKikd,aAAc,CAClC,MAAMO,EAAwBxkd,KAAKikd,aAAaroS,UAC1C8oS,EAAqBF,EAAsBl/c,QAAQ4+c,GACzD,QAAS52c,EAAImja,EAAUi0C,EAAoBF,GAAwBl3c,IAAMo3c,EAAoBp3c,EAAImja,EAAUnja,EAAGk3c,GAC1G,GAAIA,EAAsBl3c,GAAGu2c,YAAa,CACtCW,EAAsBl3c,GAAGs2c,kBACzBY,EAAsBl3c,GAAGo5E,QACzB,QAKhBy9X,0BACI,GAAKnkd,KAAKikd,aAGV,OAAOjkd,KAAKikd,aAAaprc,KAAKqxV,GAAUA,EAAO/xT,WACxCn4C,KAAKikd,aAAaprc,KAAKqxV,GAAUA,EAAO0sD,WAGvDmtD,SAA0B/8c,UAA1B,0BAAsH+8c,GApUZrjd,MAoUuDA,SACjKqjd,EAA0Bt8X,UArUgF/mF,MAqU1G,MAA0Gqjd,EAA1Gjna,2EArU0Gp8C,MAqU1GqH,EAAumBu7c,EAAvmB,cArU0G5id,MAqU1GgF,EArU0GhF,WAqU1GylO,+DArU0GzlO,MAqU1G,0BAA0GylO,aArUAzlO,CAqU1G,yBAA0GylO,YArUAzlO,CAqU1G,wCAA0GylO,iBArUAzlO,CAqU1G,uCAA0GylO,iBArUAzlO,CAqU1G,uCAA0GylO,qBArUAzlO,CAqU1G,qCAA0GylO,sBAA1G,KArU0GzlO,MAqU1G,cArU0GA,CAqU1G,kCArU0GA,MAqUqY,CAACsjd,OA5G1eD,MAgJAtqX,QAAN,QAAoB9iE,iBAEZ,MAAO,CAAEi+G,SAAUn7C,EAAe9K,UAAW,KAGrD8K,SAAczyF,UAAd,0BAA0GyyF,IAC1GA,EAAcrX,UA/W4F1hF,MA+W1G,MAA2G+4F,IAC3GA,EAAcpX,UAhX4F3hF,MAgX1G,IAPM+4F,uFCraN,MAAMkrX,EAA4B,oCAC5BC,EAAkB,EACpB3gY,QAAM,CAAEZ,OAAQ,EAAGkgF,WAAY,YAC/Bl/E,QAAQsgY,GAA2B1gY,QAAM,CAAEZ,OAAQ,IAAKkgF,WAAY,cAElEshT,EAAoB,EACtB5gY,QAAM,CAAEZ,OAAQ,IAAKkgF,WAAY,aACjCl/E,QAAQsgY,GAA2B1gY,QAAM,CAAEZ,OAAQ,EAAGkgF,WAAY,iBAGhEuhT,QAAN,QACInld,YAAYold,EAAK/jM,EAAWgkM,GACxBhld,KAAK+kd,IAAMA,EACX/kd,KAAKghR,UAAYA,EAEjBhhR,KAAK+5F,UAAY,IAAI5U,MAErBnlF,KAAKild,UAAY,IAAI9/X,MAErBnlF,KAAKkld,SAAW,IAAI//X,MAEpBnlF,KAAKmld,QAAU,IAAIhgY,MAEnBnlF,KAAKold,YAAa,EAClBpld,KAAKqld,kBAAmB,EAExBrld,KAAKsld,aAAc,EAEnBtld,KAAKuld,YAAa,EAElBvld,KAAKwld,cAAe,EAEpBxld,KAAKshJ,YAAa,EAClBthJ,KAAKyld,SAAW,QAChBzld,KAAK0ld,eAAgB,EACrB1ld,KAAK2ld,sBAAwB,WAC7B3ld,KAAK4ld,oBAAsB,SAC3B5ld,KAAK6ld,0BAA4Bb,EAAS70L,MAAM00L,GAChD7kd,KAAK8ld,wBAA0Bd,EAAS70L,MAAMy0L,GAE9Cx4Z,YAAQ7qD,GACRvB,KAAKyld,SAAWlkd,EACF,SAAVA,EAIJvB,KAAKshJ,WAAathJ,KAAKmlP,SAAWnlP,KAAK0jD,OAHnC1jD,KAAKkwD,OAMT61Z,aAASxkd,GACTvB,KAAKqld,iBAAmB9jd,IACnBvB,KAAKgwX,SAAWhwX,KAAKgmd,oBACtBhmd,KAAKold,WAAa7jd,EAClBvB,KAAKmlP,UAGT4gO,eACA,OAAO/ld,KAAKold,WAEhBroL,qBACI/8R,KAAK0ld,eAAgB,EAChB1ld,KAAKgwX,SAAYhwX,KAAKgmd,mBAG3Bhmd,KAAKgwX,QAAQllU,QACb9qD,KAAKghR,UAAU8E,SAAS9lR,KAAK+kd,IAAIn/X,cAAe,SAAU,MAG9Du/J,SACQnlP,KAAKold,WACLpld,KAAKkwD,OAGLlwD,KAAK0jD,OAIbwM,OACIlwD,KAAKwld,cAAe,EACpBxld,KAAKold,YAAa,EAClBpld,KAAKsld,aAAc,EACnBtld,KAAKwld,cAAe,EACpBxld,KAAKild,UAAUt3S,KAAK3tK,MACpBA,KAAKgmd,kBAAmB,EACxBhmd,KAAKimd,aAAajmd,KAAKshJ,WAAYthJ,KAAK2ld,sBAAxC3ld,CAA+D,KAC3DA,KAAKgmd,kBAAmB,EACpBhmd,KAAKqld,mBAAqBrld,KAAKsld,aAAetld,KAAKshJ,WACnDthJ,KAAK0jD,QAGT1jD,KAAK+5F,UAAU4zE,KAAK3tK,MACpBA,KAAKghR,UAAU8E,SAAS9lR,KAAK+kd,IAAIn/X,cAAe,UAAW,WAInEliC,OACI1jD,KAAKghR,UAAU8E,SAAS9lR,KAAK+kd,IAAIn/X,cAAe,UAAW5lF,KAAKyld,UAChEzld,KAAKwld,cAAe,EACpBxld,KAAKold,YAAa,EAClBpld,KAAKsld,aAAc,EACnBtld,KAAKwld,cAAe,EACpBxld,KAAKmld,QAAQx3S,KAAK3tK,MAClBA,KAAKgmd,kBAAmB,EACxBhmd,KAAKimd,aAAajmd,KAAKshJ,WAAYthJ,KAAK4ld,oBAAxC5ld,CAA6D,KACzDA,KAAKgmd,kBAAmB,EACpBhmd,KAAKqld,mBAAqBrld,KAAKsld,aAAetld,KAAKshJ,WACnDthJ,KAAKkwD,QAGTlwD,KAAKkld,SAASv3S,KAAK3tK,MACnBA,KAAKghR,UAAU+E,YAAY/lR,KAAK+kd,IAAIn/X,cAAe,eAG3DqgY,aAAa3kU,EAAY7+H,GACrB,IAAK6+H,IAAethJ,KAAK0ld,cACrB,OAAQtva,GAAaA,IAEzBp2C,KAAKghR,UAAU8E,SAAS9lR,KAAK+kd,IAAIn/X,cAAe,WAAY,UAC5D5lF,KAAKghR,UAAU7/L,SAASnhF,KAAK+kd,IAAIn/X,cAAe,YAChD,MAAMsgY,EAAoBzjc,IAAWziB,KAAK4ld,oBACpC5ld,KAAK8ld,wBACL9ld,KAAK6ld,0BACX,OAAI7ld,KAAKgwX,SACLhwX,KAAKgwX,QAAQ9qU,UAEjBllD,KAAKgwX,QAAUk2F,EAAiB3rc,OAAOva,KAAK+kd,IAAIn/X,eAChD5lF,KAAKgwX,QAAQjuS,OACL3rC,IAAe,IAAIpuC,EAAI,OAA+B,QAAvBA,EAAKhI,KAAKgwX,eAA4B,IAAPhoX,OAAgB,EAASA,EAAGivO,OAAO7gM,KAGjH0ua,SAAkB99c,UAAlB,0BAA8G89c,GAAVpkd,MAA6CA,OAA7CA,MAAuEA,OAAvEA,MAAgG4mF,QACpMw9X,EAAkBr9X,UADkF/mF,MACpG,MAAkGokd,EAAlGhoa,2EADoGp8C,MACpG,6BADoGA,MACpG,wBADoGA,CACpG,kBADoGA,CACpG,oBADoGA,CACpG,6NAzHMokd,MAmKAv4U,QAAN,QAAqB51G,iBAEb,MAAO,CAAEi+G,SAAUrI,EAAgB59C,UAAW,KAGtD49C,SAAevlI,UAAf,0BAA2GulI,IAC3GA,EAAenqD,UAjDqF1hF,MAiDpG,MAA4G6rI,IAC5GA,EAAelqD,UAlDqF3hF,MAkDpG,IAPM6rI,wFCtKN,QACI5sI,YAEAqzD,EAAOuyM,EAEPR,GACI/kQ,KAAKgzD,MAAQA,EACbhzD,KAAKulQ,QAAUA,EACfvlQ,KAAK+kQ,aAAeA,GAK5B,QAMIplQ,YAAY8lQ,EAAmBub,EAAWt8L,EAAamH,EAAW4zK,EAA2Bz6K,EAASmhY,EAAiBC,GACnHpmd,KAAKylQ,kBAAoBA,EACzBzlQ,KAAKghR,UAAYA,EACjBhhR,KAAK0kF,YAAcA,EACnB1kF,KAAK6rF,UAAYA,EACjB7rF,KAAKy/P,0BAA4BA,EACjCz/P,KAAKglF,QAAUA,EACfhlF,KAAKmmd,gBAAkBA,EACvBnmd,KAAKomd,YAAcA,EACnBpmd,KAAKqmd,aAAe,IAAIlhY,MACxBnlF,KAAK6jD,QAAU,IAAIshC,MACnBnlF,KAAKsmd,aAAe,IAAInhY,MACxBnlF,KAAK4jD,SAAW,IAAIuhC,MACpBnlF,KAAKumd,WAAa,GAClBvmd,KAAKwmd,WAAY,EAIjBxmd,KAAKymd,yBAA2B,OAChCzmd,KAAK0md,YAAc,GACnB1md,KAAK2md,gBAAkB/sS,SAAS/3K,UAEhC+kd,cACA,OAAI5md,KAAKwmd,aAGAxmd,KAAK6md,cAElB73X,OAAO83X,GACH,YAAKC,kBAAoB/md,KAAKy/P,0BACzBqF,wBAAwBgiN,GACtB9md,KAGX4yK,GAAGxlI,GACC,YAAKA,UAAYA,GAAaptC,KAAKotC,UAC5BptC,KAEXoxD,SAAS8iO,GACL,OAAKA,GAGLl0R,KAAKgnd,WAAa9yL,EAAK8yL,YAAchnd,KAAKgnd,WAC1Chnd,KAAK0kF,YAAcwvM,EAAK9iR,QAAUpR,KAAK0kF,YAChC1kF,MAJIA,KAMfuiF,QAAQw/N,GACJ,YAAKwkK,WAAW31c,KAAKmxS,GACd/hT,KAGX0jD,KAAKwwO,EAAO,IAGR,GAFAl0R,KAAKind,wBACLjnd,KAAKknd,qBAAkB,GAClBlnd,KAAK6md,cAAe,CACrB7md,KAAKqmd,aAAa14S,OAClB3tK,KAAKmnd,YAAcnnd,KAAKond,eAAelzL,EAAK5yM,QAAS4yM,EAAKroQ,QAASqoQ,EAAKnzM,cACxE,MAAMyN,EAAWC,aAAgB,CAC7BE,UAAW3uF,KAAKumd,WAChBx5X,OAAQ/sF,KAAK6rF,YAEjB,IAAK7rF,KAAK+md,kBACN,OAWJ,GATA/md,KAAK6md,cAAgB7md,KAAK+md,kBAAkBxsc,OAAOi0E,EAAUxuF,KAAKmnd,YAAYn0Z,OAC9EhzD,KAAKmmd,gBAAgBlhN,WAAWjlQ,KAAK6md,cAAc3hN,UAGnDllQ,KAAKg3B,SAAWh3B,KAAK6md,cAAc7vb,SACnCp1B,OAAOc,OAAO1C,KAAK6md,cAAc7vb,SAAUk9P,GACvCl0R,KAAKotC,qBAAqBk6M,OAC1BtnP,KAAKotC,UAAUw4C,cAAcmS,YAAY/3F,KAAK6md,cAAcvyc,SAASsxE,eAE3C,iBAAnB5lF,KAAKotC,WAA8C,oBAAbg0C,SAA0B,CACvE,MAAMimY,EAAkBjmY,SAASC,cAAcrhF,KAAKotC,YAChDg0C,SAASC,cAAcrhF,KAAKymd,0BAChC,IAAKY,EACD,OAEJA,EAAgBtvX,YAAY/3F,KAAK6md,cAAcvyc,SAASsxE,gBAEvD5lF,KAAKotC,WACNptC,KAAK0kF,aACL1kF,KAAK0kF,YAAYkB,cAAckK,eAC/B9vF,KAAK0kF,YAAYkB,cAAckK,cAAciI,YAAY/3F,KAAK6md,cAAcvyc,SAASsxE,eAMrF5lF,KAAKmnd,YAAYpiN,eACjB/kQ,KAAKknd,gBAAkBlnd,KAAKmnd,YAAYpiN,aAAa/tO,SACrDh3B,KAAKmnd,YAAYpiN,aAAa5vK,kBAAkBhN,eAChDnoF,KAAKmnd,YAAYpiN,aAAa5vK,kBAAkBsoD,iBAEpDz9I,KAAK6md,cAAc1xX,kBAAkBhN,eACrCnoF,KAAK6md,cAAc1xX,kBAAkBsoD,gBACrCz9I,KAAK6jD,QAAQ8pH,KAAKumH,EAAKnzR,GAAK,CAAEA,GAAImzR,EAAKnzR,IAAOf,KAAK6md,cAAc7vb,UAErE,YAAKswb,wBACEtnd,KAAK6md,cAEhB32Z,KAAKnvD,GACD,IAAIiH,EAAIC,EAAIyvH,EAAIE,EAAIi8Q,EAAIod,EACxB,IAAKjxZ,KAAK6md,cACN,OAAO7md,KAEXA,KAAKomd,YAAYmB,sBAAsBvnd,KAAK6md,cAAcvyc,UAC1DtU,KAAKsmd,aAAa34S,KAAK3tK,KAAK6md,cAAc7vb,UAC1C,MAAMwwb,EAAcxnd,KAAK6md,cAAcvyc,SAASsxE,cAChD,OAAkC,QAAjC59E,EAAKw/c,EAAY7oO,kBAA+B,IAAP32O,GAAyBA,EAAGsnR,YAAYk4L,GACM,QAAvF9vV,EAAiC,QAA3BzvH,EAAKjI,KAAKmnd,mBAAgC,IAAPl/c,OAAgB,EAASA,EAAG88P,oBAAiC,IAAPrtI,GAAyBA,EAAGxyE,UACxHllD,KAAKylQ,oBAAkD,QAA3B7tI,EAAK53H,KAAKmnd,mBAAgC,IAAPvvV,OAAgB,EAASA,EAAG2tI,UAC3FvlQ,KAAKylQ,kBAAkBxyN,OAAOjzC,KAAKylQ,kBAAkBngQ,QAAQtF,KAAKmnd,YAAY5hN,UAEC,QAAlF0rJ,EAAiC,QAA3Bpd,EAAK7zY,KAAKmnd,mBAAgC,IAAPtzE,OAAgB,EAASA,EAAGtuI,eAA4B,IAAP0rJ,GAAyBA,EAAG/rW,UACvHllD,KAAKmnd,iBAAc,EACnBnnd,KAAK6md,mBAAgB,EACrB7md,KAAKymQ,wBACLzmQ,KAAK4jD,SAAS+pH,KAAK5sK,EAAK,CAAEA,MAAO,MAC1Bf,KAEXmlP,SACQnlP,KAAK4md,QACL5md,KAAKkwD,OAGTlwD,KAAK0jD,OAET0lC,UACQppF,KAAK4md,SACL5md,KAAKkwD,OAETlwD,KAAKynd,0BACDznd,KAAK0nd,wBACL1nd,KAAK0nd,yBAGb7kT,OAAO8kT,GACH,IAAI3/c,EACJhI,KAAK4nd,SAAWD,EAAWC,UAAY5nd,KAAK4nd,SAC5C5nd,KAAK0md,YAAYhgD,aAAeihD,EAAWjhD,aAC3C1ma,KAAK0md,YAAYmB,WAAaF,EAAWE,WACzCF,EAAWv2c,OAASu2c,EAAWv2c,SAAuC,QAA3BpJ,EAAKhI,KAAK0kF,mBAAgC,IAAP18E,OAAgB,EAASA,EAAG49E,eAC1G,MAAM11B,EAAQlwD,KAAK0md,YAAYx2Z,KAAO,IAAMy3Z,EAAWz3Z,KAAOy3Z,EAAWz3Z,YAAclwD,KAAKkwD,OACtFxM,EAAQ1jD,KAAK0md,YAAYhja,KAAQoka,IACnCH,EAAWjka,KAAOika,EAAWjka,KAAKoka,GAAgB9nd,KAAK0jD,KAAKoka,GAC5DA,KAMJ,OAAI9nd,KAAKghR,YACLhhR,KAAK0nd,wBAAyBK,QAAmB/nd,KAAKghR,UAAW,CAC7D5vQ,OAAQu2c,EAAWv2c,OACnBw2c,SAAUD,EAAWC,SACrBlka,OACAwM,OACAi1L,OATQ2iO,IACZ9nd,KAAK4md,QAAU12Z,IAASxM,EAAKoka,OAW1B9nd,KAEXymQ,wBACQzmQ,KAAK2md,kBACL3md,KAAK2md,kBACL3md,KAAK2md,gBAAkB/sS,SAAS/3K,WAGxCmmd,aAAaC,EAEbp7b,GACI,OAAIo7b,GAAQp7b,IACR7sB,KAAKkod,eAAiBD,EAAK7/R,mBAAmBv7J,IAE3C7sB,KAEXsnd,wBACI,GAAKtnd,KAAK6md,eAAkB7md,KAAK6md,cAAcvyc,SAI/C,IAAItU,KAAK0md,YAAYhgD,aAAc,CAC/B,MAAMt1Z,EAASpR,KAAK6md,cAAcvyc,SAASsxE,cAC3CjuD,WAAW,KACH33B,KAAKghR,WAAahhR,KAAK0kF,cACvB1kF,KAAK2md,iBAAkBwB,QAAqBnod,KAAKghR,UAAW,CACxDt8N,QAAS,CAACtzC,EAAQpR,KAAK0kF,YAAYkB,eACnC8gV,aAAc1ma,KAAK0md,YAAYhgD,aAC/Bx2W,KAAM,IAAMlwD,KAAK0md,YAAYx2Z,MAAQlwD,KAAK0md,YAAYx2Z,YAKlElwD,KAAK0md,YAAYmB,YAAc7nd,KAAKghR,WAAahhR,KAAK0kF,cAEtD1kF,KAAK2md,iBAAkByB,OAAiBpod,KAAKghR,UAAW,CACpDt8N,QAAS,CAFE1kD,KAAK6md,cAAcvyc,SAASsxE,cAErB5lF,KAAK0kF,YAAYkB,eACnCiiY,WAAY7nd,KAAK0md,YAAYmB,WAC7B33Z,KAAM,IAAMlwD,KAAK0md,YAAYx2Z,MAAQlwD,KAAK0md,YAAYx2Z,WAIlEm4Z,oBACI,OAAOrod,KAAKknd,gBAEhBD,wBACQjnd,KAAKsod,oBAAsBtod,KAAKgnd,aAGpChnd,KAAK6jD,QAAQl8C,UAAU,KACnB,IAAIK,EACJhI,KAAKomd,YAAYh1Z,SAAS,CACtBg1B,QAAuC,QAA7Bp+E,EAAKhI,KAAK6md,qBAAkC,IAAP7+c,OAAgB,EAASA,EAAGsM,SAC3ElD,OAAQpR,KAAK0kF,YACbsiY,WAAYhnd,KAAKgnd,WACjBuB,aAAiC,SAAnBvod,KAAKotC,cAG3BptC,KAAKsod,kBAAoBtod,KAAKglF,QAAQg7J,SAASr4O,UAAU,MAChD3H,KAAK6md,eAGV7md,KAAKomd,YAAYoC,kBAGzBf,2BACSznd,KAAKsod,oBAGVtod,KAAKsod,kBAAkBl8c,cACvBpM,KAAKsod,uBAAoB,GAE7BlB,eAEA9lY,EAEAz1D,EAEAk1D,GACI,IAAKO,EACD,OAAO,IAAImnY,EAAW,IAE1B,GAAInnY,aAAmB2N,MAAa,CAChC,GAAIjvF,KAAKylQ,kBAAmB,CACxB,MAAMwgB,EAAWjmR,KAAKylQ,kBACjBr9E,mBAAmB9mG,EAASz1D,GACjCo6P,SAAS99L,eACF,IAAIsgY,EAAW,CAACxiM,EAAS59F,WAAY49F,GAEhD,MAAM1gB,EAAUjkL,EAAQ8mG,mBAAmB,IAC3C,YAAK+9R,gBAAgBlhN,WAAWM,GACzB,IAAIkjN,EAAW,CAACljN,EAAQl9E,WAAYk9E,GAE/C,GAAuB,mBAAZjkL,EAAwB,CAC/B,MAAMonY,EAAqB1od,KAAKy/P,0BAA0BqF,wBAAwBxjL,GAC5EqnY,EAAuBl6X,aAAgB,CACzCE,UAAW3uF,KAAKumd,WAChBx5X,OAAQ/sF,KAAK6rF,YAEXk5K,EAAe2jN,EAAmBnuc,OAAOouc,GAC/C/md,cAAOc,OAAOqiQ,EAAa/tO,SAAU+pD,GACrC/gF,KAAKmmd,gBAAgBlhN,WAAWF,EAAaG,UACtC,IAAIujN,EAAW,CAAC,CAAC1jN,EAAazwP,SAASsxE,gBAAiBm/K,EAAaG,SAAUH,GAE1F,MAAM/xM,EAAQhzD,KAAKghR,UACb,CAAChhR,KAAKghR,UAAU2xC,WAAY,GAAErxO,MAC9B,GACN,OAAO,IAAImnY,EAAW,CAACz1Z,SAIzB6uF,QAAN,QACIliJ,YAAY8/P,EAA2Bz6K,EAAS6G,EAAWu6X,EAAaD,GACpEnmd,KAAKy/P,0BAA4BA,EACjCz/P,KAAKglF,QAAUA,EACfhlF,KAAK6rF,UAAYA,EACjB7rF,KAAKomd,YAAcA,EACnBpmd,KAAKmmd,gBAAkBA,EAQ3ByC,aAAalkY,EAAa+gL,EAAmBub,GACzC,OAAO,IAAI6nM,EAAgBpjN,EAAmBub,EAAWt8L,EAAa1kF,KAAK6rF,UAAW7rF,KAAKy/P,0BAA2Bz/P,KAAKglF,QAAShlF,KAAKmmd,gBAAiBnmd,KAAKomd,cAGvKvkU,SAAuB76I,UAAvB,0BAAmH66I,GAAVnhJ,MAAkDA,OAAlDA,MAA0FA,OAA1FA,MAAgHA,OAAhHA,MAAwI4mF,MAAxI5mF,MAA0KA,SACnRmhJ,EAAuB16I,WADkFzG,MACzG,OAAuHmhJ,EAAvHlhJ,QAAuHkhJ,EAAvH,qBAA2J,SAnBrJA,uHC7SN,WAAkBunC,GACd,OAAOA,EAAM,EAAIlxK,KAAKqyC,KAAK6+H,IAAQ,EAAIlxK,KAAKC,MAAMixK,GAGtD,WAAkB1kL,GACd,MAAsB,iBAARA,EAElB,WAAgBnD,GACZ,OAAOA,aAAiBJ,MAAkD,kBAA1CS,OAAOC,UAAUZ,SAASa,KAAKP,GAKnE,WAAqBgF,GACjB,OAAOA,GAAQA,EAAKpE,UAAYuyC,MAAMnuC,EAAKpE,WAG/C,WAAoB2pB,GAChB,OAAQA,aAAc8tJ,UACqB,sBAAvCh4K,OAAOC,UAAUZ,SAASa,KAAKgqB,GAEvC,WAAkBvqB,GACd,MAAwB,iBAAVA,GAAgE,oBAA1CK,OAAOC,UAAUZ,SAASa,KAAKP,GAEvE,WAAiBsQ,GACb,OAAQA,aAAiBrM,OACqB,mBAA1C5D,OAAOC,UAAUZ,SAASa,KAAK+P,GAEvC,WAAoB2a,EAAcnD,GAC9B,OAAOznB,OAAOC,UAAUyE,eAAexE,KAAK0qB,EAAGnD,GAEnD,WAAkBxX,GAGd,OAAiB,MAATA,GAA2D,oBAA1CjQ,OAAOC,UAAUZ,SAASa,KAAK+P,GAe5D,WAAqBA,GACjB,YAAiB,IAAVA,EAEX,YAAei3c,GACX,MAAMC,GAAiBD,EACvB,IAAIvnd,EAAQ,EACZ,OAAsB,IAAlBwnd,GAAuBnsR,SAASmsR,KAChCxnd,EAAQynd,EAASD,IAEdxnd,EAGX,MAAM0nd,EAAU,GACVC,EAAY,CACd3id,KAAM,MACN4id,KAAM,QACNvzO,OAAQ,UACR5/L,OAAQ,UACRoza,YAAa,gBAEjB,YAAsBvjM,EAAMwjM,GACxB,MAAMjtQ,EAAYypE,EAAKx8Q,cACvB,IAAIigd,EAAQzjM,EACRzpE,KAAa8sQ,IACbI,EAAQJ,EAAU9sQ,IAEtB6sQ,EAAQ7sQ,GAAa6sQ,EAAS,GAAE7sQ,MAAgB6sQ,EAAQI,GAAaC,EAEzE,YAAwB18Z,GACpB,OAAOgtJ,EAAShtJ,GAASq8Z,EAAQr8Z,IAAUq8Z,EAAQr8Z,EAAMvjD,oBAAiBpG,EA4B9E,YAAkBmmL,EAAKmgS,EAAcC,GACjC,MAAMC,EAAa,GAAEvxc,KAAKqpJ,IAAI6nB,KAM9B,OAHcvtK,GADM,EACE2tc,EAAY,IAAM,GAAM,KAE/Btxc,KAAKG,IAAI,GAAIH,KAAKskC,IAAI,EAJjB+sa,EAAeE,EAAUhpd,SAISQ,WAAW+X,OAAO,GAC/Cywc,EAG7B,MAAMC,GAAkB,GAClBC,GAAuB,GACvBC,GAAmB,uLAKzB,YAAwB7jd,EAAO8jd,EAAQC,EAAS1za,GACxCrwC,IACA4jd,GAAqB5jd,GAASqwC,GAE9Byza,IACAF,GAAqBE,EAAO,IAAM,WAC9B,OAAOE,GAAS3za,EAASprC,MAAM,KAAM+yD,WAAY8rZ,EAAO,GAAIA,EAAO,MAGvEC,IACAH,GAAqBG,GAAW,SAAUvjd,GAAM2tR,IAC5C,OAAOA,GAAKxe,OAAOo0M,QAAQ1za,EAASprC,MAAM,KAAM+yD,WAAYh4D,KAuBxE,YAAgC8L,GAC5B,OAAIA,EAAMgwC,MAAM,YACLhwC,EAAMjN,QAAQ,WAAY,IAE9BiN,EAAMjN,QAAQ,MAAO,IAIhC,YAAuB61J,EAAGxY,EAAG1tB,GAEzB,MAAMhuH,EAAO,IAAIpF,KAAKA,KAAK6od,IAAIh/c,MAAM,KAAM+yD,YAE3C,OAAI08F,EAAI,KAAOA,GAAK,GAAKmiC,SAASr2L,EAAK4pV,mBACnC5pV,EAAKmxQ,eAAej9G,GAEjBl0J,EAEX,YAAoBk0J,EAAGxY,EAAI,EAAG1tB,EAAI,EAAG06D,EAAI,EAAGs3C,GAAI,EAAGxqG,GAAI,EAAGg8I,GAAK,GAC3D,MAAMxxQ,GAAO,IAAIpF,KAAKs5J,EAAGxY,EAAG1tB,EAAG06D,EAAGs3C,GAAGxqG,GAAGg8I,IAExC,OAAIt9G,EAAI,KAAOA,GAAK,GAAKmiC,SAASr2L,GAAKitO,gBACnCjtO,GAAKoxQ,YAAYl9G,GAEdl0J,GAGX,YAAkBA,EAAM0jd,GAAQ,GAC5B,OAAOA,EAAQ1jd,EAAK2jd,cAAgB3jd,EAAKq0Q,WAE7C,YAAoBr0Q,EAAM0jd,GAAQ,GAC9B,OAAOA,EAAQ1jd,EAAK4jd,gBAAkB5jd,EAAKiyQ,aAE/C,YAAoBjyQ,EAAM0jd,GAAQ,GAC9B,OAAOA,EAAQ1jd,EAAK6jd,gBAAkB7jd,EAAKs0Q,aAE/C,YAAyBt0Q,EAAM0jd,GAAQ,GACnC,OAAOA,EAAQ1jd,EAAK8jd,qBAAuB9jd,EAAKizB,kBAKpD,YAAgBjzB,EAAM0jd,GAAQ,GAC1B,OAAOA,EAAQ1jd,EAAK+jd,YAAc/jd,EAAKu0Q,SAE3C,YAAiBv0Q,EAAM0jd,GAAQ,GAC3B,OAAOA,EAAQ1jd,EAAK+pV,aAAe/pV,EAAKo0Q,UAE5C,YAAkBp0Q,EAAM0jd,GAAQ,GAC5B,OAAOA,EAAQ1jd,EAAK8pV,cAAgB9pV,EAAKm0Q,WAE7C,YAAqBn0Q,EAAM0jd,GAAQ,GAC/B,OAAOA,EAAQ1jd,EAAK4pV,iBAAmB5pV,EAAKitO,cAoBhD,YAAqB+2O,EAAOC,GACxB,SAAKD,IAAUC,IAGRC,GAAWF,EAAOC,IAAU9vM,GAAS6vM,KAAW7vM,GAAS8vM,GAEpE,YAAoBD,EAAOC,GACvB,SAAKD,IAAUC,IAGRh3O,GAAY+2O,KAAW/2O,GAAYg3O,GAE9C,YAAqBD,EAAOC,GACxB,SAAKD,IAAUC,IAGPC,GAAWF,EAAOC,IACtBE,GAAYH,EAAOC,IACnB7vM,GAAQ4vM,KAAW5vM,GAAQ6vM,GAGnC,MAAMG,EAAS,KACTC,GAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WAEdC,GAAmB,0BACnBC,GAAiB,uBAGjBC,GAAY,2IACZC,GAAU,GAChB,YAAuB5ld,EAAOslB,EAAOugc,GAE7BD,GAAQ5ld,GADRynI,EAAWniH,GACMA,EAGJ,SAAUq5K,EAAUgxE,IACjC,OAAQhxE,GAAYknR,EAAeA,EAAcvgc,GAGzD,YAA+BtlB,EAAO2vQ,GAElC,OAAKm2M,EAAWF,GAAS5ld,GAGlB4ld,GAAQ5ld,IAAO+ld,EAASp2M,GAFpB,IAAIt/P,OAKnB,YAAwB1R,GACpB,OAAOqnd,GAAYrnd,EACdE,QAAQ,KAAM,IACdA,QAAQ,sCAAuC,CAACw1I,EAAS4xU,EAAIC,EAAIC,GAAIC,KAAOH,GAAMC,GAAMC,IAAMC,KAR7EC,CAAermd,IAUzC,YAAqBrB,GACjB,OAAOA,EAAIE,QAAQ,yBAA0B,QAGjD,MAAMuP,GAAS,GACf,YAAuBpO,EAAOqwC,GAC1B,MAAMi2a,EAASzyQ,EAAS7zM,GAAS,CAACA,GAASA,EAC3C,IAAIgzL,EAAO3iJ,EAOX,GANI4uK,EAAS5uK,KACT2iJ,EAAO,SAAUlnL,GAAOijD,GAAOvwD,IAC3BuwD,UAAM1e,GAAYk2a,GAAMz6c,IACjBtN,KAGX2M,EAAQm7c,IAAW7+U,EAAWurD,GAAO,CACrC,IAAIzrL,GACJ,IAAKA,GAAI,EAAGA,GAAI++c,EAAO5rd,OAAQ6M,KAC3B6G,GAAOk4c,EAAO/+c,KAAMyrL,GAIhC,YAA2BhzL,EAAOqwC,GAC9Bm2a,GAAcxmd,EAAO,SAAU8L,EAAOijD,EAAOvwD,GAAQ8nd,IACjD9nd,UAAOiod,GAAKjod,GAAOiod,IAAM,GAClBp2a,EAASvkC,EAAOtN,GAAOiod,GAAIjod,GAAQ8nd,MAGlD,YAAiCtmd,EAAO8L,EAAOtN,GAC3C,OAAa,MAATsN,GAAiBg6c,EAAW13c,GAAQpO,IACpCoO,GAAOpO,GAAO8L,EAAOtN,EAAOyD,GAAIzD,EAAQwB,GAErCxB,EAGX,MAAMkod,GAAa,GACnB,YAAyB5mM,EAAM6mM,GAC3BD,GAAW5mM,GAAQ6mM,EA6DvB,YAAyBnod,GACrB,OAAkB,MAAdA,EAAOood,MACPpod,EAAOood,IAnBJ,CACHh0V,OAAO,EACPi0V,aAAc,GACdC,YAAa,GACb1rU,UAAU,EACV2rU,cAAe,EACfC,WAAW,EACXC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,SAAU,KACVC,SAAS,EACTC,iBAAiB,IAOdhpd,EAAOood,IAIlB,YAAiBpmd,EAAM2tR,GACnB,OAAIA,EAAKxe,OAAOliC,YACL0gD,EAAKxe,OAAOliC,YAAYjtO,EAAM2tR,EAAK+1L,OAAOhpd,WAE9CuyO,GAAYjtO,EAAM2tR,EAAK+1L,OAAOhpd,WAqCzC,YAA2B4Q,GACvB,OAAOy6c,GAAMz6c,IAAUy6c,GAAMz6c,GAAS,GAAK,KAAO,KAEtD,YAAoBs+N,GAChB,OAAOq9O,GAAWr9O,GAAQ,IAAM,IAEpC,YAAoBA,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAIlE,YAAqBA,EAAME,GACvB,GAAI37L,MAAMy7L,IAASz7L,MAAM27L,GACrB,OAAO7jE,IAEX,MAAMihT,EAvcV,WAAat9b,EAAGvoB,GACZ,OAAQuoB,EAAIvoB,EAAIA,GAAKA,EAscJ6iO,CAAI4F,EAAO,IAE5B,OAAoB,IAAbo9O,EACDD,GAFQr9O,GAAQE,EAAQo9O,GAAY,IAEhB,GAAK,GACxB,GAAKA,EAAW,EAAI,EA2C/B,MAAMC,GAAkB,CACpBv9O,KAAM,EACNE,MAAO,EACPC,IAAK,EACL64O,KAAM,EACNvzO,OAAQ,EACRJ,QAAS,GAEb,YAAmBjvO,EAAMs/Q,GACrB,MAAMyjM,EAAQ1nd,OAAOc,OAAO,GAAIgrd,GAAiB7nM,GAC3C11C,EAAO5pO,EAAKitO,eAAiB81O,EAAMn5O,MAAQ,GAC3CE,GAAQ9pO,EAAKm0Q,YAAc4uM,EAAMj5O,OAAS,GAChD,IAAIC,GAAM/pO,EAAKo0Q,WAAa2uM,EAAMh5O,KAAO,GACzC,OAAIg5O,EAAMj5O,QAAUi5O,EAAMh5O,MACtBA,GAAMp4N,KAAKqkC,IAAI+zL,GAAKq9O,GAAYx9O,EAAME,MAEnCgnC,GAAWlnC,EAAME,GAAOC,GAAK/pO,EAAKq0Q,YAAc0uM,EAAMH,MAAQ,GAAI5id,EAAKiyQ,cAAgB8wM,EAAM1zO,QAAU,GAAIrvO,EAAKs0Q,cAAgByuM,EAAM9zO,SAAW,IAM5J,YAAgBttG,EAAKkhD,GACjB,OAAO47B,EAAS57B,GAAOA,EAAMlhD,EAajC,YAAkB3hI,EAAMhF,EAAO0od,GAC3B,MAAM2D,EAAa11c,KAAKqkC,IAAIo+N,GAAQp0Q,GAAOond,GAAYn6O,GAAYjtO,GAAOhF,IAC1E0od,SAAQ1jd,EAAKsnd,YAAYtsd,EAAOqsd,GAAcrnd,EAAKund,SAASvsd,EAAOqsd,GAC5Drnd,EAsBX,YAAiBA,EAAMhF,EAAO0od,GAC1BA,SAAQ1jd,EAAKwnd,WAAWxsd,GAASgF,EAAKynd,QAAQzsd,GACvCgF,EASX,YAAmBA,GACf,OAAO,IAAIpF,KAAKoF,EAAKpE,WAGzB,YAAiBoE,EAAMs/Q,EAAMokM,GACzB,MAAMgE,EAAQC,GAAU3nd,GAGxB,OAAQs/Q,OACC,OACDioM,GAASG,EAAO,EAAGhE,OAElB,cACA,QACD+D,GAAQC,EAAO,EAAGhE,OAEjB,WACA,cACA,UACA,QA9Cb,YAAkB1jd,EAAMhF,EAAO0od,GAC3BA,EAAQ1jd,EAAKsxQ,YAAYt2Q,GAASgF,EAAKuxQ,SAASv2Q,GA8CxCu2Q,CAASm2M,EAAO,EAAGhE,OAElB,SA7Cb,YAAoB1jd,EAAMhF,EAAO0od,GAC7BA,EAAQ1jd,EAAK4nd,cAAc5sd,GAASgF,EAAKgyQ,WAAWh3Q,GA6C5Cg3Q,CAAW01M,EAAO,EAAGhE,OAEpB,WA5Cb,YAAoB1jd,EAAMhF,EAAO0od,GAC7BA,EAAQ1jd,EAAKC,cAAcjF,GAASgF,EAAK6nd,WAAW7sd,GA4C5C6sd,CAAWH,EAAO,EAAGhE,OAEpB,WA3Cb,YAAyB1jd,EAAMhF,EAAO0od,GAClCA,EAAQ1jd,EAAK8nd,mBAAmB9sd,GAASgF,EAAK+nd,gBAAgB/sd,GA2CtD+sd,CAAgBL,EAAO,EAAGhE,GAGlC,MAAa,SAATpkM,GA2wFR,YAA4Bt/Q,EAAMsL,EAAOqiR,EAAO,IAErC//P,GAAI5tB,EAAMsL,EADD08c,GAAmBhod,EAAM2tR,EAAKxe,OAAQwe,EAAK+1L,OACzB,OA5wF9BuE,CAAmBP,EAAO,EAAG,CAAEhE,UAEtB,YAATpkM,GAgxFR,YAAyBt/Q,EAAMsL,EAAOqiR,EAAO,IAIzC,MAAMs7D,EAvCV,YAAyB39U,EAAO6jQ,EAAS+4M,MACrC,OAAI70Q,EAAS/nM,GACF6jQ,EAAOg5M,cAAc78c,GAAS,GAAK,EAEvCmzM,EAASnzM,IAAU6iC,MAAM7iC,GAAS,KAAOA,EAmChC88c,CAAgB98c,EAAOqiR,EAAKxe,QACrCk5M,GAAarod,EAtBxB,YAAsBA,EAAM0jd,GACxB,OAAOnvM,GAAOv0Q,EAAM0jd,GAqBMh7H,CAAa1oV,GAAQ,EAAIipV,EAAUA,EAAU,GApxFnEq/H,CAAgBZ,EAAO,GAGd,YAATpoM,GACAioM,GAASG,EAAgD,EAAzC/1c,KAAKC,MAAMuiQ,GAASuzM,EAAOhE,GAAS,GAAQA,GAEzDgE,EAEX,YAAe1nd,EAAMs/Q,EAAMokM,GACvB,IAAIX,EAAQzjM,EAQZ,MANc,SAAVyjM,IACAA,EAAQ,OA0nFhB,YAAkB/id,EAAMk1B,EAAKkiM,EAAQssP,GAEjC,OAAO6E,GAAYvod,EADPwod,GAAetzb,EAAKkiM,IACF,EAAIssP,GAxnFtBzrQ,CADErqL,GADA66b,GAAQzod,EAAM+id,EAAOW,GACV,EAAa,YAAVX,EAAsB,OAASA,EAAOW,GACtC,EAAG,eAAgBA,GAqBnD,YAAsB1jd,EAAM0jd,GACxB,MAAMM,GAASyE,GAAQzod,EAAM,MAAO0jd,GAC9BO,GAASwE,GAAQzod,EAAM,OAAQ0jd,GAGrC,OAAO/xc,KAAKyC,OAFK4vc,EAAQC,GACV,OACwB,EAc3C,YAAyBr6O,EAAM8+O,EAAKC,GAEhC,MAAMC,EAAMF,EAAMC,EAAM,EAGxB,QADeE,GAAcj/O,EAAM,EAAGg/O,GAAK7E,YAAc2E,EAAM,GAAK,EACpDE,EAAM,EA0B1B,YAAoB5od,EAAM0od,EAAKC,EAAKjF,GAChC,MAAMoF,GAAaC,GAAgB97O,GAAYjtO,EAAM0jd,GAAQgF,EAAKC,GAC5DK,GAAOr3c,KAAKC,OAAOq3c,GAAajpd,EAAM0jd,GAASoF,GAAa,GAAK,GAAK,EAC5E,IAAII,GACAC,GACJ,OAAIH,GAAO,GACPG,GAAUl8O,GAAYjtO,EAAM0jd,GAAS,EACrCwF,GAAUF,GAAOI,GAAYD,GAAST,EAAKC,IAE1CU,GAAWD,GAAYn8O,GAAYjtO,EAAM0jd,GAAQgF,EAAKC,IACvDO,GAAUF,GAAOI,GAAYn8O,GAAYjtO,EAAM0jd,GAAQgF,EAAKC,GAC5DQ,GAAUl8O,GAAYjtO,EAAM0jd,GAAS,IAGrCyF,GAAUl8O,GAAYjtO,EAAM0jd,GAC5BwF,GAAUF,IAEP,CACHA,KAAME,GACNt/O,KAAMu/O,IAGd,YAAqBv/O,EAAM8+O,EAAKC,GAC5B,MAAMG,EAAaC,GAAgBn/O,EAAM8+O,EAAKC,GACxCW,GAAiBP,GAAgBn/O,EAAO,EAAG8+O,EAAKC,GACtD,OAAQY,GAAW3/O,GAAQk/O,EAAaQ,IAAkB,EAG9D,MAAME,GAAmB,gCACnBC,GAAsB,wFAAwF/pd,MAAM,KACpHgqd,GAA2B,kDAAkDhqd,MAAM,KACnFiqd,GAAwB,2DAA2Djqd,MAAM,KACzFkqd,GAA6B,8BAA8Blqd,MAAM,KACjEmqd,GAA2B,uBAAuBnqd,MAAM,KACxDoqd,GAAwB,CAC1BC,IAAK,YACLC,GAAI,SACJhmY,EAAG,aACHimY,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAIJC,GAA0BjF,GAC1BkF,GAAqBlF,GAC3B,SACI/rd,YAAY4E,GACJA,GACAvE,KAAKsB,IAAIiD,GAGjBjD,IAAIiD,GACA,IAAIssd,EACJ,IAAKA,KAAWtsd,EAAQ,CAEpB,IAAKA,EAAO+B,eAAeuqd,GACvB,SAEJ,MAAMz2c,EAAO7V,EAAOssd,GAEpB7wd,KADawtI,EAAWpzH,GAAQy2c,EAAW,IAAGA,KAClCz2c,EAEhBpa,KAAK8kF,QAAUvgF,EAEnBusd,SAASjud,EAAK0D,EAAMoqB,GAChB,MAAMhsB,GAAS3E,KAAK+wd,UAAUlud,IAAQ7C,KAAK+wd,UAAUC,SACrD,OAAOxjV,EAAW7oI,IAAUA,GAAO7C,KAAK,KAAMyE,EAAMoqB,GAAOhsB,GAE/Dssd,eAAepud,GACX,MAAMs0Q,EAASn3Q,KAAKkxd,gBAAgBrud,GAC9Bsud,EAAcnxd,KAAKkxd,gBAAgBrud,EAAI8O,eAC7C,OAAIwlQ,IAAWg6M,EACJh6M,GAEXn3Q,KAAKkxd,gBAAgBrud,GAAOsud,EAAYvsd,QAAQ,mBAAoB,SAAU62B,IAC1E,OAAOA,GAAI71B,MAAM,KAEd5F,KAAKkxd,gBAAgBrud,IAE5Buud,kBACA,OAAOpxd,KAAKqxd,aAEZD,gBAAY31b,GACZz7B,KAAKqxd,aAAe51b,EAExBqub,QAAQ1gS,EAAKrjL,GACT,OAAO/F,KAAKsxd,SAAS1sd,QAAQ,KAAMwkL,EAAInoL,SAAS,KAEpDswd,SAAS7sd,EAAKyyQ,GACV,OAAOzyQ,EAEX8uO,YAAYjtO,EAAM0jd,GAAQ,GACtB,OAAOz2O,GAAYjtO,EAAM0jd,GAE7BuH,WAAW9sd,GACP,OAAOA,EAEX+sd,aAAaroS,EAAKsoS,EAAehtd,EAAKitd,IAClC,MAAMhtd,GAAS3E,KAAK4xd,cAAcltd,GAClC,OAAQ8oI,EAAW7oI,IACfA,GAAOykL,EAAKsoS,EAAehtd,EAAKitd,IAChChtd,GAAOC,QAAQ,MAAOwkL,EAAInoL,SAAS,KAE3C4wd,WAAW7rV,EAAMrhI,GACb,MAAMwyQ,EAASn3Q,KAAK4xd,cAAc5rV,EAAO,EAAI,SAAW,QACxD,OAAOwH,EAAW2pI,GAAUA,EAAOxyQ,GAAUwyQ,EAAOvyQ,QAAQ,MAAOD,GAEvE62Q,OAAOj1Q,EAAM4wQ,EAAQ8yM,GAAQ,GACzB,IAAK1jd,EACD,OAAO2K,EAAQlR,KAAK8xd,SACd9xd,KAAK8xd,QACL9xd,KAAK8xd,QAAQnsI,WAEvB,GAAIz0U,EAAQlR,KAAK8xd,SACb,OAAO9xd,KAAK8xd,QAAQp3M,GAASn0Q,EAAM0jd,IAEvC,MAAMpnd,IAAO7C,KAAK8xd,QAAQC,UAAYhC,IAAkBvkc,KAAK2rP,GACvD,SACA,aACN,OAAOn3Q,KAAK8xd,QAAQjvd,IAAK63Q,GAASn0Q,EAAM0jd,IAE5C+H,YAAYzrd,EAAM4wQ,EAAQ8yM,GAAQ,GAC9B,IAAK1jd,EACD,OAAO2K,EAAQlR,KAAKiyd,cACdjyd,KAAKiyd,aACLjyd,KAAKiyd,aAAatsI,WAE5B,GAAIz0U,EAAQlR,KAAKiyd,cACb,OAAOjyd,KAAKiyd,aAAav3M,GAASn0Q,EAAM0jd,IAE5C,MAAMpnd,GAAMktd,GAAiBvkc,KAAK2rP,GAAU,SAAW,aACvD,OAAOn3Q,KAAKiyd,aAAapvd,IAAK63Q,GAASn0Q,EAAM0jd,IAEjDiI,YAAYC,EAAWh7M,EAAQi7M,GAC3B,IAAI7rd,GACA8kB,GAYA/d,GAXJ,GAAItN,KAAKqyd,kBACL,OAAOryd,KAAKsyd,uBAAuBH,EAAWh7M,EAAQi7M,GAW1D,IATKpyd,KAAKuyd,eACNvyd,KAAKuyd,aAAe,GACpBvyd,KAAKwyd,iBAAmB,GACxBxyd,KAAKyyd,kBAAoB,IAMxBnld,GAAI,EAAGA,GAAI,GAAIA,KAAK,CAGrB,GADA/G,GAAO,IAAIpF,KAAKA,KAAK6od,IAAI,IAAM18c,KAC3B8kd,IAAWpyd,KAAKwyd,iBAAiBlld,IAAI,CACrC,MAAMwkd,GAAU9xd,KAAKw7Q,OAAOj1Q,GAAM,IAAI,GAAM3B,QAAQ,IAAK,IACnD8td,GAAe1yd,KAAKgyd,YAAYzrd,GAAM,IAAI,GAAM3B,QAAQ,IAAK,IACnE5E,KAAKwyd,iBAAiBlld,IAAK,IAAI8I,OAAQ,IAAG07c,MAAY,KACtD9xd,KAAKyyd,kBAAkBnld,IAAK,IAAI8I,OAAQ,IAAGs8c,MAAiB,KAahE,IAXKN,IAAWpyd,KAAKuyd,aAAajld,MAC9B+d,GAAS,IAAGrrB,KAAKw7Q,OAAOj1Q,GAAM,IAAI,OAAUvG,KAAKgyd,YAAYzrd,GAAM,IAAI,KACvEvG,KAAKuyd,aAAajld,IAAK,IAAI8I,OAAOiV,GAAMzmB,QAAQ,IAAK,IAAK,MAG1Dwtd,GAAqB,SAAXj7M,GAAqBn3Q,KAAKwyd,iBAAiBlld,IAAGke,KAAK2mc,IAG7DC,GAAqB,QAAXj7M,GAAoBn3Q,KAAKyyd,kBAAkBnld,IAAGke,KAAK2mc,KAG5DC,GAAUpyd,KAAKuyd,aAAajld,IAAGke,KAAK2mc,GACrC,OAAO7kd,IAInBqld,YAAYjuR,GACR,OAAI1kM,KAAKqyd,mBACAxG,EAAW7rd,KAAM,iBAClBA,KAAK4yd,qBAELluR,EACO1kM,KAAK6yd,mBAET7yd,KAAK8yd,eAEXjH,EAAW7rd,KAAM,kBAClBA,KAAK8yd,aAAelC,IAEjB5wd,KAAK6yd,oBAAsBnuR,EAC9B1kM,KAAK6yd,mBAAqB7yd,KAAK8yd,cAEvCC,iBAAiBruR,GACb,OAAI1kM,KAAKqyd,mBACAxG,EAAW7rd,KAAM,iBAClBA,KAAK4yd,qBAELluR,EACO1kM,KAAKgzd,wBAEThzd,KAAKizd,oBAEXpH,EAAW7rd,KAAM,uBAClBA,KAAKizd,kBAAoBtC,IAEtB3wd,KAAKgzd,yBAA2BtuR,EACnC1kM,KAAKgzd,wBAA0Bhzd,KAAKizd,mBAG5C1D,KAAKhpd,EAAM0jd,GACP,OAAOiJ,GAAW3sd,EAAMvG,KAAKmzd,MAAMlE,IAAKjvd,KAAKmzd,MAAMjE,IAAKjF,GAAOsF,KAEnE6D,iBACI,OAAOpzd,KAAKmzd,MAAMlE,IAEtB/xM,iBACI,OAAOl9Q,KAAKmzd,MAAMjE,IAEtBmE,SAAS9sd,EAAM4wQ,EAAQ8yM,GACnB,IAAK1jd,EACD,OAAO2K,EAAQlR,KAAKszd,WACdtzd,KAAKszd,UACLtzd,KAAKszd,UAAU3tI,WAEzB,GAAIz0U,EAAQlR,KAAKszd,WACb,OAAOtzd,KAAKszd,UAAUx4M,GAAOv0Q,EAAM0jd,IAEvC,MAAM56T,GAAOrvJ,KAAKszd,UAAUvB,SAASvmc,KAAK2rP,GACpC,SACA,aACN,OAAOn3Q,KAAKszd,UAAUjkU,IAAMyrH,GAAOv0Q,EAAM0jd,IAE7CsJ,YAAYhtd,EAAM4wQ,EAAQ8yM,GACtB,OAAO1jd,EAAOvG,KAAKwzd,aAAa14M,GAAOv0Q,EAAM0jd,IAAUjqd,KAAKwzd,aAEhEC,cAAcltd,EAAM4wQ,EAAQ8yM,GACxB,OAAO1jd,EAAOvG,KAAK0zd,eAAe54M,GAAOv0Q,EAAM0jd,IAAUjqd,KAAK0zd,eAGlEhF,cAAciF,EAAax8M,EAAQi7M,GAC/B,IAAI9kd,GACA+d,GACJ,GAAIrrB,KAAK4zd,oBACL,OAAO5zd,KAAK6zd,sBAAsBF,EAAax8M,EAAQi7M,GAQ3D,IANKpyd,KAAK8zd,iBACN9zd,KAAK8zd,eAAiB,GACtB9zd,KAAK+zd,kBAAoB,GACzB/zd,KAAKg0d,oBAAsB,GAC3Bh0d,KAAKi0d,mBAAqB,IAEzB3md,GAAI,EAAGA,GAAI,EAAGA,KAAK,CAGpB,MAAM/G,GAAOqod,GAAa,IAAIztd,KAAKA,KAAK6od,IAAI,IAAM,IAAK18c,GAAG,MAAM,GAUhE,GATI8kd,IAAWpyd,KAAKi0d,mBAAmB3md,MACnCtN,KAAKi0d,mBAAmB3md,IAAK,IAAI8I,OAAQ,IAAGpW,KAAKqzd,SAAS9sd,GAAM,IAAI,GAAM3B,QAAQ,IAAK,SAAW,KAClG5E,KAAKg0d,oBAAoB1md,IAAK,IAAI8I,OAAQ,IAAGpW,KAAKyzd,cAAcltd,GAAM,IAAI,GAAM3B,QAAQ,IAAK,SAAW,KACxG5E,KAAK+zd,kBAAkBzmd,IAAK,IAAI8I,OAAQ,IAAGpW,KAAKuzd,YAAYhtd,GAAM,IAAI,GAAM3B,QAAQ,IAAK,SAAW,MAEnG5E,KAAK8zd,eAAexmd,MACrB+d,GAAS,IAAGrrB,KAAKqzd,SAAS9sd,GAAM,IAAI,OAAUvG,KAAKyzd,cAAcltd,GAAM,IAAI,OAAUvG,KAAKuzd,YAAYhtd,GAAM,IAAI,KAChHvG,KAAK8zd,eAAexmd,IAAK,IAAI8I,OAAOiV,GAAMzmB,QAAQ,IAAK,IAAK,QAE3DsM,EAAQlR,KAAKi0d,qBACV/id,EAAQlR,KAAKg0d,sBACb9id,EAAQlR,KAAK+zd,oBACb7id,EAAQlR,KAAK8zd,iBACjB,OAGJ,GAAI1B,GAAqB,SAAXj7M,GAAqBn3Q,KAAKi0d,mBAAmB3md,IAAGke,KAAKmoc,GAC/D,OAAOrmd,GAEN,GAAI8kd,GAAqB,QAAXj7M,GAAoBn3Q,KAAKg0d,oBAAoB1md,IAAGke,KAAKmoc,GACpE,OAAOrmd,GAEN,GAAI8kd,GAAqB,OAAXj7M,GAAmBn3Q,KAAK+zd,kBAAkBzmd,IAAGke,KAAKmoc,GACjE,OAAOrmd,GAEN,IAAK8kd,GAAUpyd,KAAK8zd,eAAexmd,IAAGke,KAAKmoc,GAC5C,OAAOrmd,IAKnB4md,cAAcxvR,GACV,OAAI1kM,KAAK4zd,qBACA/H,EAAW7rd,KAAM,mBAClBA,KAAKm0d,uBAELzvR,EACO1kM,KAAKo0d,qBAGLp0d,KAAKq0d,iBAIXxI,EAAW7rd,KAAM,oBAClBA,KAAKq0d,eAAiB3I,IAEnB1rd,KAAKo0d,sBAAwB1vR,EAChC1kM,KAAKo0d,qBAAuBp0d,KAAKq0d,gBAK7CC,mBAAmB5vR,GACf,OAAI1kM,KAAK4zd,qBACA/H,EAAW7rd,KAAM,mBAClBA,KAAKm0d,uBAELzvR,EACO1kM,KAAKu0d,0BAGLv0d,KAAKw0d,sBAIX3I,EAAW7rd,KAAM,yBAClBA,KAAKw0d,oBAAsB9I,IAExB1rd,KAAKu0d,2BAA6B7vR,EACrC1kM,KAAKu0d,0BAA4Bv0d,KAAKw0d,qBAGlDC,iBAAiB/vR,GACb,OAAI1kM,KAAK4zd,qBACA/H,EAAW7rd,KAAM,mBAClBA,KAAKm0d,uBAELzvR,EACO1kM,KAAK00d,wBAGL10d,KAAK20d,oBAIX9I,EAAW7rd,KAAM,uBAClBA,KAAK20d,kBAAoBjJ,IAEtB1rd,KAAK00d,yBAA2BhwR,EACnC1kM,KAAK00d,wBAA0B10d,KAAK20d,mBAGhDC,KAAK/id,GAGD,MAAyC,MAAlCA,EAAMxI,cAAcjE,OAAO,GAEtCiod,SAASv3M,EAAOC,EAAS8+M,GACrB,OAAI/+M,EAAQ,GACD++M,EAAU,KAAO,KAErBA,EAAU,KAAO,KAE5BC,eAAejyd,GACX7C,KAAKkxd,gBAAkBlxd,KAAKkxd,gBAAkBlxd,KAAKkxd,gBAAkBb,GACrE,MAAMl5M,EAASn3Q,KAAKkxd,gBAAgBrud,GAC9Bsud,EAAcnxd,KAAKkxd,gBAAgBrud,EAAI8O,eAC7C,OAAIwlQ,IAAWg6M,EACJh6M,GAEXn3Q,KAAKkxd,gBAAgBrud,GAAOsud,EAAYvsd,QAAQ,mBAAqB62B,IAC1DA,GAAI71B,MAAM,IAEd5F,KAAKkxd,gBAAgBrud,IAEhCyvd,uBAAuBH,EAAWh7M,EAAQi7M,GACtC,MAAM2C,GAAM5C,EAAUnvD,oBACtB,IAAI11Z,GACA+hI,GACA2lV,GACJ,IAAKh1d,KAAKuyd,aAKN,IAHAvyd,KAAKuyd,aAAe,GACpBvyd,KAAKwyd,iBAAmB,GACxBxyd,KAAKyyd,kBAAoB,GACpBnld,GAAI,EAAGA,GAAI,KAAMA,GAClB0nd,GAAM,IAAI7zd,KAAK,IAAMmM,IACrBtN,KAAKyyd,kBAAkBnld,IAAKtN,KAAKgyd,YAAYgD,GAAK,IAAIhyD,oBACtDhja,KAAKwyd,iBAAiBlld,IAAKtN,KAAKw7Q,OAAOw5M,GAAK,IAAIhyD,oBAGxD,OAAIovD,EACe,QAAXj7M,GACA9nI,GAAKrvI,KAAKyyd,kBAAkBntd,QAAQyvd,KACtB,IAAP1lV,GAAYA,GAAK,OAE5BA,GAAKrvI,KAAKwyd,iBAAiBltd,QAAQyvd,KACrB,IAAP1lV,GAAYA,GAAK,MAEb,QAAX8nI,GACA9nI,GAAKrvI,KAAKyyd,kBAAkBntd,QAAQyvd,KACzB,IAAP1lV,GACOA,IAEXA,GAAKrvI,KAAKwyd,iBAAiBltd,QAAQyvd,KACrB,IAAP1lV,GAAYA,GAAK,QAE5BA,GAAKrvI,KAAKwyd,iBAAiBltd,QAAQyvd,KACxB,IAAP1lV,GACOA,IAEXA,GAAKrvI,KAAKyyd,kBAAkBntd,QAAQyvd,KACtB,IAAP1lV,GAAYA,GAAK,OAE5BwkV,sBAAsBF,EAAax8M,EAAQi7M,GACvC,IAAI/iV,GACJ,MAAM0lV,GAAMpB,EAAY3wD,oBACxB,IAAKhja,KAAK8zd,eAAgB,CAItB,IAAIxmd,GACJ,IAJAtN,KAAK8zd,eAAiB,GACtB9zd,KAAKg0d,oBAAsB,GAC3Bh0d,KAAK+zd,kBAAoB,GAEpBzmd,GAAI,EAAGA,GAAI,IAAKA,GAAG,CACpB,MAAM/G,GAAOqod,GAAa,IAAIztd,KAAKA,KAAK6od,IAAI,IAAM,IAAK18c,GAAG,MAAM,GAChEtN,KAAK+zd,kBAAkBzmd,IAAKtN,KAAKuzd,YAAYhtd,IAAMy8Z,oBACnDhja,KAAKg0d,oBAAoB1md,IAAKtN,KAAKyzd,cAAcltd,IAAMy8Z,oBACvDhja,KAAK8zd,eAAexmd,IAAKtN,KAAKqzd,SAAS9sd,GAAM,IAAIy8Z,qBAGzD,GAAK9xZ,EAAQlR,KAAK8zd,iBACV5id,EAAQlR,KAAKg0d,sBACb9id,EAAQlR,KAAK+zd,mBAGrB,OAAI3B,EACe,SAAXj7M,GACA9nI,GAAKrvI,KAAK8zd,eAAexud,QAAQyvd,KACnB,IAAP1lV,GAAYA,GAAK,MAER,QAAX8nI,GACL9nI,GAAKrvI,KAAKg0d,oBAAoB1ud,QAAQyvd,KACxB,IAAP1lV,GAAYA,GAAK,OAGxBA,GAAKrvI,KAAK+zd,kBAAkBzud,QAAQyvd,KACtB,IAAP1lV,GAAYA,GAAK,MAIb,SAAX8nI,GACA9nI,GAAKrvI,KAAK8zd,eAAexud,QAAQyvd,KACtB,IAAP1lV,KAGJA,GAAKrvI,KAAKg0d,oBAAoB1ud,QAAQyvd,KAC3B,IAAP1lV,IACOA,IAEXA,GAAKrvI,KAAK+zd,kBAAkBzud,QAAQyvd,KACtB,IAAP1lV,GAAYA,GAAK,OAER,QAAX8nI,GACL9nI,GAAKrvI,KAAKg0d,oBAAoB1ud,QAAQyvd,KAC3B,IAAP1lV,KAGJA,GAAKrvI,KAAK8zd,eAAexud,QAAQyvd,KACtB,IAAP1lV,IACOA,IAEXA,GAAKrvI,KAAK+zd,kBAAkBzud,QAAQyvd,KACtB,IAAP1lV,GAAYA,GAAK,QAGxBA,GAAKrvI,KAAK+zd,kBAAkBzud,QAAQyvd,KACzB,IAAP1lV,KAGJA,GAAKrvI,KAAK8zd,eAAexud,QAAQyvd,KACtB,IAAP1lV,IACOA,IAEXA,GAAKrvI,KAAKg0d,oBAAoB1ud,QAAQyvd,KACxB,IAAP1lV,GAAYA,GAAK,OAIpCujV,qBACI,MAAMqC,EAAc,GACdC,EAAa,GACbC,EAAc,GACpB,IAAI5ud,GACA+G,GACJ,IAAKA,GAAI,EAAGA,GAAI,GAAIA,KAEhB/G,GAAO,IAAIpF,KAAK,IAAMmM,IACtB2nd,EAAYrkd,KAAK5Q,KAAKgyd,YAAYzrd,GAAM,KACxC2ud,EAAWtkd,KAAK5Q,KAAKw7Q,OAAOj1Q,GAAM,KAClC4ud,EAAYvkd,KAAK5Q,KAAKw7Q,OAAOj1Q,GAAM,KACnC4ud,EAAYvkd,KAAK5Q,KAAKgyd,YAAYzrd,GAAM,KAO5C,IAHA0ud,EAAY1oc,KAAK6oc,IACjBF,EAAW3oc,KAAK6oc,IAChBD,EAAY5oc,KAAK6oc,IACZ9nd,GAAI,EAAGA,GAAI,GAAIA,KAChB2nd,EAAY3nd,IAAKy+c,GAAYkJ,EAAY3nd,KACzC4nd,EAAW5nd,IAAKy+c,GAAYmJ,EAAW5nd,KAE3C,IAAKA,GAAI,EAAGA,GAAI,GAAIA,KAChB6nd,EAAY7nd,IAAKy+c,GAAYoJ,EAAY7nd,KAE7CtN,KAAK8yd,aAAe,IAAI18c,OAAQ,KAAI++c,EAAYtvd,KAAK,QAAS,KAC9D7F,KAAKizd,kBAAoBjzd,KAAK8yd,aAC9B9yd,KAAK6yd,mBAAqB,IAAIz8c,OAAQ,KAAI8+c,EAAWrvd,KAAK,QAAS,KACnE7F,KAAKgzd,wBAA0B,IAAI58c,OAAQ,KAAI6+c,EAAYpvd,KAAK,QAAS,KAE7Esud,uBACI,MAAMkB,EAAY,GACZJ,EAAc,GACdC,EAAa,GACbC,GAAc,GACpB,IAAI7nd,GACJ,IAAKA,GAAI,EAAGA,GAAI,EAAGA,KAAK,CAGpB,MAAM/G,GAAOqod,GAAa,IAAIztd,KAAKA,KAAK6od,IAAI,IAAM,IAAK18c,GAAG,MAAM,GAC1Dgod,GAAOt1d,KAAKuzd,YAAYhtd,IACxBgvd,GAASv1d,KAAKyzd,cAAcltd,IAC5Bivd,GAAQx1d,KAAKqzd,SAAS9sd,IAC5B8ud,EAAUzkd,KAAK0kd,IACfL,EAAYrkd,KAAK2kd,IACjBL,EAAWtkd,KAAK4kd,IAChBL,GAAYvkd,KAAK0kd,IACjBH,GAAYvkd,KAAK2kd,IACjBJ,GAAYvkd,KAAK4kd,IAQrB,IAJAH,EAAU9oc,KAAK6oc,IACfH,EAAY1oc,KAAK6oc,IACjBF,EAAW3oc,KAAK6oc,IAChBD,GAAY5oc,KAAK6oc,IACZ9nd,GAAI,EAAGA,GAAI,EAAGA,KACf2nd,EAAY3nd,IAAKy+c,GAAYkJ,EAAY3nd,KACzC4nd,EAAW5nd,IAAKy+c,GAAYmJ,EAAW5nd,KACvC6nd,GAAY7nd,IAAKy+c,GAAYoJ,GAAY7nd,KAE7CtN,KAAKq0d,eAAiB,IAAIj+c,OAAQ,KAAI++c,GAAYtvd,KAAK,QAAS,KAChE7F,KAAKw0d,oBAAsBx0d,KAAKq0d,eAChCr0d,KAAK20d,kBAAoB30d,KAAKq0d,eAC9Br0d,KAAKo0d,qBAAuB,IAAIh+c,OAAQ,KAAI8+c,EAAWrvd,KAAK,QAAS,KACrE7F,KAAKu0d,0BAA4B,IAAIn+c,OAAQ,KAAI6+c,EAAYpvd,KAAK,QAAS,KAC3E7F,KAAK00d,wBAA0B,IAAIt+c,OAAQ,KAAIi/c,EAAUxvd,KAAK,QAAS,MAG/E,YAAmB2mB,EAAGnD,GAClB,OAAOA,EAAE5oB,OAAS+rB,EAAE/rB,OAkCxB,MAAMg1d,GAAa,CACf3E,SAhCoB,CACpB4E,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACV9E,SAAU,KA2BVC,eAAgBZ,GAChBe,YAzBuB,eA0BvBtH,QApiBmB,KAqiBnBiM,uBApiBkC,UAqiBlCtE,aAtBwB,CACxBhnF,OAAQ,QACRurF,KAAM,SACNj6V,EAAG,gBACHk6V,GAAI,aACJh0U,EAAG,WACHi0U,GAAI,aACJjnS,EAAG,UACHknS,GAAI,WACJ5hW,EAAG,QACH2qR,GAAI,UACJ34K,EAAG,UACH6vP,GAAI,YACJ37T,EAAG,SACH47T,GAAI,YASJ76M,OAAQw0M,GACRgC,YAAa/B,GACbV,KA9BsB,CACtBN,IAAK,EACLC,IAAK,GA6BLmE,SAAUnD,GACVqD,YAAanD,GACbqD,cAAetD,GACfmG,cA9B+B,iBAkCnC,YAAuBv1T,EAAQC,EAAQu1T,GACnC,MAAMphU,EAAMj9I,KAAKqkC,IAAIwkH,EAAOtgK,OAAQugK,EAAOvgK,QACrC+1d,GAAat+c,KAAKqpJ,IAAIR,EAAOtgK,OAASugK,EAAOvgK,QACnD,IACI6M,GADAmpd,GAAQ,EAEZ,IAAKnpd,GAAI,EAAGA,GAAI6nJ,EAAK7nJ,MACZipd,GAAex1T,EAAOzzJ,MAAO0zJ,EAAO1zJ,MAChCipd,GAAejK,GAAMvrT,EAAOzzJ,OAAQg/c,GAAMtrT,EAAO1zJ,OACtDmpd,KAGR,OAAOA,GAAQD,GA0FnB,YAAgCzwd,EAAO+mU,GACnC4pJ,GAAe,KAAM,CAAC3wd,EAAOA,EAAMtF,QAAQ,GAAQ,KAAMqsU,GAE7D,YAA8BvmU,EAAM2tR,GAChC,OAAOyiM,GAAYpwd,EAAM2tR,EAAKxe,QAAQz0Q,WAE1C,YAAiCsF,GAC7B,OAAOqwd,GAAerwd,GAAMtF,WAUhC,YAAqBsF,EAAMmvQ,EAAS+4M,KAAaxE,GAC7C,OAAOiJ,GAAW3sd,EAAMmvQ,EAAO09M,iBAAkB19M,EAAOwH,iBAAkB+sM,GAAO95O,KAKrF,YAAwB5pO,EAAM0jd,GAC1B,OAAOiJ,GAAW3sd,EAAM,EAAG,EAAG0jd,GAAO95O,KAiHzC,YAA8BpqO,EAAOk8M,GACjCy0Q,GAAe3wd,EAAO,KAAM,KAAM,SAAUQ,EAAMhC,GAC9C,IAAIkuK,GA0EZ,YAAsBlsK,EAAMhC,EAAS,IAEjC,OAAOA,EAAOsyd,OADEtyd,EAAOuyd,SAAW,EAvBtC,YAAuBvwd,GAGnB,OAAoD,IAA5C2R,KAAKyC,MAAMpU,EAAK6xQ,oBAAsB,IAqBb2+M,CAAcxwd,GA5E9Bywd,CAAazwd,EAAM,CAAEswd,OAAQtyd,EAAO0ld,MAAO6M,QAASvyd,EAAOkuK,SACpE52J,GAAO,IACX,OAAI42J,GAAS,IACTA,IAAUA,GACV52J,GAAO,KAEJA,GAAOkuc,MAAYt3S,GAAS,IAAK,GAAKwvC,EAAY8nQ,KAAYt3S,GAAU,GAAI,KAmB3F,MAAMwkT,GAAc,kBAsWpB,MAAM/iK,GAAU,GACVgjK,GAAiB,GACvB,IAAIC,GACJ,YAAyBt0d,GACrB,OAAOA,GAAMA,EAAIwG,cAAczE,QAAQ,IAAK,KA0DhD,YAAoBuJ,GAahB,OAAK+lT,GAAQ/lT,IACT5E,QAAQjJ,MAAO,6CAA4C6N,sBAGxD+lT,GAAQ/lT,GAKnB,YAA4BtL,EAAKo8D,GAC7B,IAAIn1D,EACJ,OAAIjH,IACIwiN,EAAYpmJ,GACZn1D,EAAO2kd,GAAU5rd,GAEZ+2M,EAAS/2M,KACdiH,EAAOstd,GAAav0d,EAAKo8D,IAEzBn1D,IACAqtd,GAAertd,IAGhBqtd,IAAgBA,GAAaE,MAExC,YAAsBlpd,EAAM5J,GACxB,GAAe,OAAXA,EAEA,cAAO2vT,GAAQ/lT,GACfgpd,GAAe1I,GAAU,MAClB,KAEX,IAAKlqd,EACD,OAEJ,IAAI+yd,EAAe7B,GAEnB,GADAlxd,EAAOgzd,KAAOppd,EACa,MAAvB5J,EAAOsvT,aACP,IAAoC,MAAhCK,GAAQ3vT,EAAOsvT,cAIf,OAAKqjK,GAAe3yd,EAAOsvT,gBACvBqjK,GAAe3yd,EAAOsvT,cAAgB,IAE1CqjK,GAAe3yd,EAAOsvT,cAAcjjT,KAAK,CAAEzC,OAAM5J,WAC1C,KAPP+yd,EAAepjK,GAAQ3vT,EAAOsvT,cAAc/uO,QAUpDovO,UAAQ/lT,GAAQ,IAAIqpd,GAzFxB,YAAsBF,EAAcpmF,GAChC,MAAMlmV,EAAMppD,OAAOc,OAAO,GAAI40d,GAC9B,UAAWG,KAAavmF,GACf26E,EAAW36E,EAAaumF,KAGzBn5R,EAASg5R,EAAaG,KAAen5R,EAAS4yM,EAAYumF,KAC1Dzsa,EAAIysa,GAAa,GACjB71d,OAAOc,OAAOsoD,EAAIysa,GAAYH,EAAaG,IAC3C71d,OAAOc,OAAOsoD,EAAIysa,GAAYvmF,EAAYumF,KAEX,MAA9Bpuc,EAAgBouc,GACjBzsa,EAAIysa,GAAavmF,EAAYumF,UAGtBzsa,EAAIysa,IAGnB,UAAWC,KAAcJ,EACjBzL,EAAWyL,EAAcI,KACxB7L,EAAW36E,EAAawmF,IACzBp5R,EAASg5R,EAAaI,MAEtB1sa,EAAI0sa,GAAc91d,OAAOc,OAAO,GAAIsoD,EAAI0sa,KAGhD,OAAO1sa,EA+DoB2sa,CAAaL,EAAc/yd,IAClD2yd,GAAe/od,IACf+od,GAAe/od,GAAM6T,QAAQ,SAAUpa,GACnCwvd,GAAaxvd,EAAEuG,KAAMvG,EAAErD,UAM/Bqzd,GAAmBzpd,GACZ+lT,GAAQ/lT,GAgCnB,YAAmBtL,GAEf,OAUJ,cACQqxT,GAAS2jK,KAGbD,GAAmB,KAAM,CACrB7B,uBAAwB,uBACxBjM,QAAQ1gS,GACJ,MAAM//J,EAAI+/J,EAAM,GAIhB,OAAOA,GAHoC,IAA5BkjS,GAAOljS,EAAM,IAAO,IAC7B,KACM,IAAN//J,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,SA3xBrE,cACIqtc,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACxD,OA+BR,YAAiB3tR,EAAMmvQ,EAAS+4M,KAAaxE,GACzC,OAAOv0M,EAAO65M,KAAKhpd,EAAM0jd,GAhCd6N,CAAQvxd,EAAM2tR,EAAKxe,QACrBz0Q,SAAS,MAElBy1d,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,GAClD,OAsCR,YAAoBA,EAAM0jd,GACtB,OAAOiJ,GAAW3sd,EAAM,EAAG,EAAG0jd,GAAOsF,KAvC1BwI,CAAWxxd,GACbtF,SAAS,MAGlB+2d,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAExBC,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAE3BC,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/BuN,GAAkB,CAAC,IAAK,KAAM,IAAK,MAAO,SAAUtmd,EAAO09c,EAAMhrd,EAAQwB,GACrEwpd,SAAKxpd,EAAMiT,OAAO,EAAG,IAAMszc,GAAMz6c,GAC1BtN,IAywBX6zd,GA9uBJ,cACI1B,GAAe,KAAM,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAEzD,OAAQyiM,GAAYpwd,EAAM2tR,EAAKxe,QAAU,KAAKz0Q,aAElDy1d,GAAe,KAAM,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,GAEnD,OAAQqwd,GAAerwd,GAAQ,KAAKtF,aAExCo3d,GAAuB,OAAQC,IAC/BD,GAAuB,QAASC,IAChCD,GAAuB,OAAQE,IAC/BF,GAAuB,QAASE,IAEhCP,GAAa,WAAY,MACzBA,GAAa,cAAe,MAE5BC,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAE/BC,GAAc,IAAK3M,IACnB2M,GAAc,IAAK3M,IACnB2M,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,OAAQ9M,GAAWN,IACjCoN,GAAc,OAAQ9M,GAAWN,IACjCoN,GAAc,QAAS7M,GAAWN,IAClCmN,GAAc,QAAS7M,GAAWN,IAClCoN,GAAkB,CAAC,OAAQ,QAAS,OAAQ,SAAU,SAAUtmd,EAAO09c,EAAMhrd,EAAQwB,GACjFwpd,SAAKxpd,EAAMiT,OAAO,EAAG,IAAMszc,GAAMz6c,GAC1BtN,IAEX4zd,GAAkB,CAAC,KAAM,MAAO,SAAUtmd,EAAO09c,EAAMhrd,EAAQwB,GAC3Dwpd,SAAKxpd,GAASyyd,GAAkB3md,GACzBtN,IA6sBXk0d,GA9qDJ,cACI/B,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,MAAMz5H,EAAI+4E,GAAYjtO,EAAM2tR,EAAK+1L,OACjC,OAAOxvT,GAAK,KAAOA,EAAEx5J,SAAS,IAAO,IAAGw5J,MAE5Ci8T,GAAe,KAAM,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACzD,OAAQ1gD,GAAYjtO,EAAM2tR,EAAK+1L,OAAS,KAAKhpd,SAAS,MAE1Dy1d,GAAe,KAAM,CAAC,OAAQ,GAAG,GAAQ,KAAMtoI,IAC/CsoI,GAAe,KAAM,CAAC,QAAS,GAAG,GAAQ,KAAMtoI,IAChDsoI,GAAe,KAAM,CAAC,SAAU,GAAG,GAAO,KAAMtoI,IAEhD4pI,GAAa,OAAQ,KAErBC,GAAgB,OAAQ,GAExBC,GAAc,IAAK3M,IACnB2M,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,OAAQ9M,GAAWN,IACjCoN,GAAc,QAAS7M,GAAWN,IAClCmN,GAAc,SAAU7M,GAAWN,IACnCwB,GAAc,CAAC,QAAS,UAvUf,GAwUTA,GAAc,OAAQ,SAAU16c,EAAOijD,EAAOvwD,GAC1CuwD,SAzUK,GAyU0B,IAAjBjjD,EAAMpR,OAAe+3d,GAAkB3md,GAASy6c,GAAMz6c,GAC7DtN,IAEXgod,GAAc,KAAM,SAAU16c,EAAOijD,EAAOvwD,GACxCuwD,SA7UK,GA6US0ja,GAAkB3md,GACzBtN,IAEXgod,GAAc,IAAK,SAAU16c,EAAOijD,EAAOvwD,GACvCuwD,SAjVK,GAiVSv0C,SAAS1O,EAAO,IACvBtN,IA+oDXm0d,GAzpBJ,cAEIhC,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,OAAOA,EAAK+1L,MAAQ,MAAQ,KAEhCyM,GAAe,KAAM,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC7C,OAAOA,EAAK+1L,MAAQ,6BAA+B,KAopBvD0O,GAzoBJ,cAEIjC,GAAe,IAAK,KAAM,KAAM,SAAUnwd,GACtC,OAvuCR,YAAcA,GACV,OAAO2R,KAAKC,MAAM5R,EAAKK,UAAY,KAsuCxBgyd,CAAKryd,GACPtF,SAAS,MAElBy1d,GAAe,IAAK,KAAM,KAAM,SAAUnwd,GACtC,OAAOA,EAAKK,UACP3F,SAAS,MAGlBi3d,GAAc,IAAK3M,IACnB2M,GAAc,IAAKzM,IACnBc,GAAc,IAAK,SAAU16c,EAAOijD,EAAOvwD,GACvCA,SAAOqzH,GAAK,IAAIz2H,KAAyB,IAApBiX,WAAWvG,IACzBtN,IAEXgod,GAAc,IAAK,SAAU16c,EAAOijD,EAAOvwD,GACvCA,SAAOqzH,GAAK,IAAIz2H,KAAKmrd,GAAMz6c,IACpBtN,IAunBXs0d,GAnnBJ,cAEInC,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACxD,OAAOrZ,GAAWt0Q,EAAM2tR,EAAK+1L,OACxBhpd,SAAS,MAGlB+2d,GAAa,SAAU,KAEvBC,GAAgB,SAAU,IAE1BC,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/B2B,GAAc,CAAC,IAAK,MAx3CT,GA+9DXuM,GApmBJ,cAEIpC,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,OAeR,YAAoB3tR,EAAM0jd,GAAQ,GAC9B,OAAO/xc,KAAKqyC,MAAMmwN,GAASn0Q,EAAM0jd,GAAS,GAAK,GAhBpC8O,CAAWxyd,EAAM2tR,EAAK+1L,OACxBhpd,SAAS,MAGlB+2d,GAAa,UAAW,KAExBC,GAAgB,UAAW,GAE3BC,GAAc,IAAKvN,GACnB4B,GAAc,IAAK,SAAU16c,EAAOijD,EAAOvwD,GACvCuwD,SA54CM,GA44C8B,GAApBw3Z,GAAMz6c,GAAS,GACxBtN,IAulBXy0d,GA3jBJ,cACIC,GAAqB,IAAK,KAC1BA,GAAqB,KAAM,IAE3Bf,GAAc,IAAK1M,IACnB0M,GAAc,KAAM1M,IACpBe,GAAc,CAAC,IAAK,MAAO,SAAU16c,EAAOijD,EAAOvwD,GAC/CA,SAAO20d,SAAU,EACjB30d,EAAO40d,KASf,YAA0BtrF,EAASnpY,GAC/B,MAAMskB,GAAWtkB,GAAO,IAAIm9C,MAAMgsV,GAClC,GAAgB,OAAZ7kX,EACA,OAAO,KAGX,MAAMhjB,GAAQ84M,EADQ91L,EAAQvoB,OAAS,GACnBohD,MAAMo1a,KAAgB,CAAC,IAAK,IAAK,KAC/ClhN,GAAmC,GAAzBx1P,SAASva,GAAM,GAAI,IAAWsmd,GAAMtmd,GAAM,IAE1D,OAAmB,IAAZ+vQ,GAAgB,EADG,MAAb/vQ,GAAM,GAAa+vQ,IAAWA,GAjBzBqjN,CAAiB5N,GAAkB35c,GAC1CtN,IAmjBX80d,GA5nDJ,cAEI3C,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACxD,OAAQxZ,GAASn0Q,EAAM2tR,EAAK+1L,OAAS,GAAGhpd,SAAS,MAErDy1d,GAAe,MAAO,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC9C,OAAOA,EAAKxe,OAAOs8M,YAAYzrd,EAAM2tR,EAAK/c,OAAQ+c,EAAK+1L,SAE3DyM,GAAe,OAAQ,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC/C,OAAOA,EAAKxe,OAAO8F,OAAOj1Q,EAAM2tR,EAAK/c,OAAQ+c,EAAK+1L,SAGtD+N,GAAa,QAAS,KAEtBC,GAAgB,QAAS,GAEzBC,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,MAAO,SAAUxzR,EAAUgxE,GACrC,OAAOA,EAAOq9M,iBAAiBruR,KAEnCwzR,GAAc,OAAQ,SAAUxzR,EAAUgxE,GACtC,OAAOA,EAAOi9M,YAAYjuR,KAE9B6nR,GAAc,CAAC,IAAK,MAAO,SAAU16c,EAAOijD,EAAOvwD,GAC/CuwD,SAlYM,GAkYSw3Z,GAAMz6c,GAAS,EACvBtN,IAEXgod,GAAc,CAAC,MAAO,QAAS,SAAU16c,EAAOijD,EAAOvwD,EAAQwB,GAC3D,MAAMsqO,GAAQ9rO,EAAOojR,QAAQuqM,YAAYrgd,EAAO9L,EAAOxB,EAAOund,SAE9D,OAAa,MAATz7O,GACAv7K,EAzYE,GAyYau7K,GAGfipP,GAAgB/0d,GAAQyod,eAAiBn7c,EAEtCtN,IAwlDXg1d,GAhYJ,cAEI7C,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACxD,OAAO1b,GAAWjyQ,EAAM2tR,EAAK+1L,OACxBhpd,SAAS,MAGlB+2d,GAAa,SAAU,KAEvBC,GAAgB,SAAU,IAE1BC,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/B2B,GAAc,CAAC,IAAK,MAhnDT,GAo+DXiN,GAhXJ,cAoCI,IAAIzzd,EACJ,IApCA2wd,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,UAAW16P,GAAgBjzB,EAAM2tR,EAAK+1L,OAAS,MAAMhpd,SAAS,MAElEy1d,GAAe,KAAM,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACzD,UAAW16P,GAAgBjzB,EAAM2tR,EAAK+1L,OAAS,KAAKhpd,SAAS,MAEjEy1d,GAAe,KAAM,CAAC,MAAO,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAC1D,OAAQ16P,GAAgBjzB,EAAM2tR,EAAK+1L,OAAQhpd,SAAS,MAExDy1d,GAAe,KAAM,CAAC,OAAQ,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAC3D,OAA4C,GAApC16P,GAAgBjzB,EAAM2tR,EAAK+1L,QAAahpd,SAAS,MAE7Dy1d,GAAe,KAAM,CAAC,QAAS,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAC5D,OAA4C,IAApC16P,GAAgBjzB,EAAM2tR,EAAK+1L,QAAchpd,SAAS,MAE9Dy1d,GAAe,KAAM,CAAC,SAAU,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAC7D,OAA4C,IAApC16P,GAAgBjzB,EAAM2tR,EAAK+1L,QAAehpd,SAAS,MAE/Dy1d,GAAe,KAAM,CAAC,UAAW,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAC9D,OAA4C,IAApC16P,GAAgBjzB,EAAM2tR,EAAK+1L,QAAgBhpd,SAAS,MAEhEy1d,GAAe,KAAM,CAAC,WAAY,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAC/D,OAA4C,IAApC16P,GAAgBjzB,EAAM2tR,EAAK+1L,QAAiBhpd,SAAS,MAEjEy1d,GAAe,KAAM,CAAC,YAAa,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GAChE,OAA4C,IAApC16P,GAAgBjzB,EAAM2tR,EAAK+1L,QAAkBhpd,SAAS,MAGlE+2d,GAAa,cAAe,MAE5BC,GAAgB,cAAe,IAE/BC,GAAc,IAAK/M,GAAWR,GAC9BuN,GAAc,KAAM/M,GAAWP,IAC/BsN,GAAc,MAAO/M,GAAWN,IAE3B9kd,EAAQ,OAAQA,EAAMtF,QAAU,EAAGsF,GAAS,IAC7Cmyd,GAAcnyd,EAAOuld,IAEzB,WAAiBz5c,EAAOijD,EAAOvwD,IAC3BuwD,SA3pDY,GA2pDSw3Z,GAAiC,IAA3Bl0c,WAAY,KAAIvG,MACpCtN,GAEX,IAAKwB,EAAQ,IAAKA,EAAMtF,QAAU,EAAGsF,GAAS,IAC1Cwmd,GAAcxmd,EAAO0zd,GAoUzBC,GA/TJ,cAEI,WAAiBnzd,GAAM0jd,IACnB,OAAOrvM,GAASr0Q,GAAM0jd,IAAS,IAAM,GAuCzC,WAAkBlkd,GAAO4zd,IACrBjD,GAAe3wd,GAAO,KAAM,KAAM,SAAUQ,GAAM2tR,IAC9C,OAAOA,GAAKxe,OAAO23M,SAASzyM,GAASr0Q,GAAM2tR,GAAK+1L,OAAQzxM,GAAWjyQ,GAAM2tR,GAAK+1L,OAAQ0P,MAU9F,WAAuBj1R,GAAUgxE,IAC7B,OAAOA,GAAOkkN,eA/ClBlD,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,GAAM2tR,IACxD,OAAOtZ,GAASr0Q,GAAM2tR,GAAK+1L,OACtBhpd,SAAS,MAElBy1d,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,GAAM2tR,IACxD,OAAO2lM,EAAQtzd,GAAM2tR,GAAK+1L,OACrBhpd,SAAS,MAElBy1d,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,GAAM2tR,IACxD,OAZJ,WAAiB3tR,GAAM0jd,IACnB,OAAOrvM,GAASr0Q,GAAM0jd,KAAU,GAWzB6P,CAAQvzd,GAAM2tR,GAAK+1L,OACrBhpd,SAAS,MAElBy1d,GAAe,MAAO,KAAM,KAAM,SAAUnwd,GAAM2tR,IAG9C,MAAQ,GAFG2lM,EAAQtzd,GAAM2tR,GAAK+1L,SAClBF,GAASvxM,GAAWjyQ,GAAM2tR,GAAK+1L,OAAQ,OAGvDyM,GAAe,QAAS,KAAM,KAAM,SAAUnwd,GAAM2tR,IAIhD,MAAQ,GAHG2lM,EAAQtzd,GAAM2tR,GAAK+1L,SAClBF,GAASvxM,GAAWjyQ,GAAM2tR,GAAK+1L,OAAQ,KACvCF,GAASlvM,GAAWt0Q,GAAM2tR,GAAK+1L,OAAQ,OAGvDyM,GAAe,MAAO,KAAM,KAAM,SAAUnwd,GAAM2tR,IAG9C,MAAQ,GAFGtZ,GAASr0Q,GAAM2tR,GAAK+1L,SACnBF,GAASvxM,GAAWjyQ,GAAM2tR,GAAK+1L,OAAQ,OAGvDyM,GAAe,QAAS,KAAM,KAAM,SAAUnwd,GAAM2tR,IAIhD,MAAQ,GAHGtZ,GAASr0Q,GAAM2tR,GAAK+1L,SACnBF,GAASvxM,GAAWjyQ,GAAM2tR,GAAK+1L,OAAQ,KACvCF,GAASlvM,GAAWt0Q,GAAM2tR,GAAK+1L,OAAQ,OAQvDoD,EAAS,KAAK,GACdA,EAAS,KAAK,GAEd2K,GAAa,OAAQ,KAErBC,GAAgB,OAAQ,IAKxBC,GAAc,IAAK6B,GACnB7B,GAAc,IAAK6B,GACnB7B,GAAc,IAAKlN,IACnBkN,GAAc,IAAKlN,IACnBkN,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,MAAOjN,IACrBiN,GAAc,QAAShN,IACvBgN,GAAc,MAAOjN,IACrBiN,GAAc,QAAShN,IACvBqB,GAAc,CAAC,IAAK,MA5uDX,GA6uDTA,GAAc,CAAC,IAAK,MAAO,SAAU16c,GAAOijD,GAAOvwD,IAC/C,MAAMy1d,GAAS1N,GAAMz6c,IACrBijD,UA/uDK,GA+uDoB,KAAXkla,GAAgB,EAAIA,GAC3Bz1d,KAEXgod,GAAc,CAAC,IAAK,KAAM,SAAU16c,GAAOijD,GAAOvwD,IAC9CA,UAAO01d,MAAQ11d,GAAOojR,QAAQitM,KAAK/id,IACnCtN,GAAO21d,UAAYrod,GACZtN,KAEXgod,GAAc,CAAC,IAAK,MAAO,SAAU16c,GAAOijD,GAAOvwD,IAC/CuwD,UAxvDK,GAwvDSw3Z,GAAMz6c,IACpBynd,GAAgB/0d,IAAQ41d,SAAU,EAC3B51d,KAEXgod,GAAc,MAAO,SAAU16c,GAAOijD,GAAOvwD,IACzC,MAAMsvD,GAAMhiD,GAAMpR,OAAS,EAC3Bq0D,UA9vDK,GA8vDSw3Z,GAAMz6c,GAAMmH,OAAO,EAAG66C,KACpCiB,GA9vDO,GA8vDSw3Z,GAAMz6c,GAAMmH,OAAO66C,KACnCyla,GAAgB/0d,IAAQ41d,SAAU,EAC3B51d,KAEXgod,GAAc,QAAS,SAAU16c,GAAOijD,GAAOvwD,IAC3C,MAAM61d,GAAOvod,GAAMpR,OAAS,EACtB45d,GAAOxod,GAAMpR,OAAS,EAC5Bq0D,UAtwDK,GAswDSw3Z,GAAMz6c,GAAMmH,OAAO,EAAGohd,KACpCtla,GAtwDO,GAswDSw3Z,GAAMz6c,GAAMmH,OAAOohd,GAAM,IACzCtla,GAtwDO,GAswDSw3Z,GAAMz6c,GAAMmH,OAAOqhd,KACnCf,GAAgB/0d,IAAQ41d,SAAU,EAC3B51d,KAEXgod,GAAc,MAAO,SAAU16c,GAAOijD,GAAOvwD,IACzC,MAAMsvD,GAAMhiD,GAAMpR,OAAS,EAC3Bq0D,UA9wDK,GA8wDSw3Z,GAAMz6c,GAAMmH,OAAO,EAAG66C,KACpCiB,GA9wDO,GA8wDSw3Z,GAAMz6c,GAAMmH,OAAO66C,KAC5BtvD,KAEXgod,GAAc,QAAS,SAAU16c,GAAOijD,GAAOvwD,IAC3C,MAAM61d,GAAOvod,GAAMpR,OAAS,EACtB45d,GAAOxod,GAAMpR,OAAS,EAC5Bq0D,UArxDK,GAqxDSw3Z,GAAMz6c,GAAMmH,OAAO,EAAGohd,KACpCtla,GArxDO,GAqxDSw3Z,GAAMz6c,GAAMmH,OAAOohd,GAAM,IACzCtla,GArxDO,GAqxDSw3Z,GAAMz6c,GAAMmH,OAAOqhd,KAC5B91d,KA+MX+1d,GAv9CJ,cAEI5D,GAAe,MAAO,CAAC,OAAQ,GAAG,GAAQ,OAAQ,SAAUnwd,GACxD,OAAOipd,GAAajpd,GACftF,SAAS,MAGlB+2d,GAAa,YAAa,OAE1BC,GAAgB,YAAa,GAC7BC,GAAc,MAAO/M,IACrB+M,GAAc,OAAQrN,IACtB0B,GAAc,CAAC,MAAO,QAAS,SAAU16c,EAAOijD,EAAOvwD,GACnDA,SAAOg2d,WAAajO,GAAMz6c,GACnBtN,IA08CXi2d,GAorCJ,cAEI9D,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,OAAOpZ,GAAOv0Q,EAAM2tR,EAAK+1L,OACpBhpd,SAAS,MAElBy1d,GAAe,KAAM,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC7C,OAAOA,EAAKxe,OAAO69M,YAAYhtd,EAAM2tR,EAAK/c,OAAQ+c,EAAK+1L,SAE3DyM,GAAe,MAAO,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC9C,OAAOA,EAAKxe,OAAO+9M,cAAcltd,EAAM2tR,EAAK/c,OAAQ+c,EAAK+1L,SAE7DyM,GAAe,OAAQ,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC/C,OAAOA,EAAKxe,OAAO29M,SAAS9sd,EAAM2tR,EAAK/c,OAAQ+c,EAAK+1L,SAExDyM,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,OAAOq6L,GAAmBhod,EAAM2tR,EAAKxe,OAAQwe,EAAK+1L,OAC7Chpd,SAAS,MAGlBy1d,GAAe,IAAK,KAAM,KAAM,SAAUnwd,EAAM2tR,GAC5C,OAuFR,YAAyB3tR,EAAM0jd,GAC3B,OAAOnvM,GAAOv0Q,EAAM0jd,IAAU,EAxFnBwQ,CAAgBl0d,EAAM2tR,EAAK+1L,OAC7Bhpd,SAAS,MAGlB+2d,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAE3BC,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAE9BC,GAAc,IAAKlN,IACnBkN,GAAc,IAAKlN,IACnBkN,GAAc,IAAKlN,IACnBkN,GAAc,KAAM,SAAUxzR,EAAUgxE,GACpC,OAAOA,EAAO++M,iBAAiB/vR,KAEnCwzR,GAAc,MAAO,SAAUxzR,EAAUgxE,GACrC,OAAOA,EAAO4+M,mBAAmB5vR,KAErCwzR,GAAc,OAAQ,SAAUxzR,EAAUgxE,GACtC,OAAOA,EAAOw+M,cAAcxvR,KAEhCyzR,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAUtmd,EAAO09c,EAAMhrd,EAAQwB,GACpE,MAAMypV,GAAUjrV,EAAOojR,QAAQ+mM,cAAc78c,EAAO9L,EAAOxB,EAAOund,SAElE,OAAe,MAAXt8H,GACA+/H,EAAKh7V,EAAOi7N,GAGZ8pI,GAAgB/0d,GAAQm2d,iBAAmB7od,EAExCtN,IAEX4zd,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAUtmd,EAAO09c,EAAMhrd,EAAQwB,GAC9Dwpd,SAAKxpd,GAASumd,GAAMz6c,GACbtN,IA7uCXo2d,GAlvDJ,cAEIjE,GAAe,IAAK,CAAC,KAAM,GAAG,GAAQ,KAAM,SAAUnwd,EAAM2tR,GACxD,OAAOvZ,GAAQp0Q,EAAM2tR,EAAK+1L,OACrBhpd,SAAS,MAGlB+2d,GAAa,OAAQ,KAErBC,GAAgB,OAAQ,GAExBC,GAAc,IAAKlN,IACnBkN,GAAc,KAAMlN,GAAWJ,IAC/BsN,GAAc,KAAM,SAAUxzR,EAAUgxE,GACpC,OAAOA,EAAOklN,yBAA2BllN,EAAOmlN,gBAEpDtO,GAAc,CAAC,IAAK,MAxQX,GAyQTA,GAAc,KAAM,SAAU16c,EAAOijD,EAAOvwD,GACxCuwD,SA1QK,GA0QSw3Z,GAAMz6c,EAAMgwC,MAAMmpa,IAAW,IACpCzmd,IAguDXu2d,IAvCAC,GACKl4d,EA7JT,YAAsBooZ,GAClB,IAAI/mZ,EACAwxQ,EACApoQ,EAAI,EACR,KAAOA,EAAI29Y,EAAMxqZ,QAAQ,CACrB,MAAMwF,GAAQ0tT,GAAgBs3F,EAAM39Y,IAAIrH,MAAM,KAC9C,IAAIsH,GAAItH,GAAMxF,OAGd,IAFAyD,EAAOyvT,GAAgBs3F,EAAM39Y,EAAI,IACjCpJ,EAAOA,EAAOA,EAAK+B,MAAM,KAAO,KACzBsH,GAAI,GAAG,CAEV,GADAmoQ,EAASslN,GAAW/0d,GAAML,MAAM,EAAG2H,IAAG1H,KAAK,MACvC6vQ,EACA,OAAOA,EAEX,GAAIxxQ,GAAQA,EAAKzD,QAAU8M,IAAK0td,GAAch1d,GAAO/B,GAAM,IAASqJ,GAAI,EAEpE,MAEJA,KAEJD,IAEJ,OAAO,KA4IA4td,CADMhqd,EAAQrO,GAAOA,EAAM,CAACA,IAHxBs0d,GAwCf,MAAMtya,GAAW,CAAC,OAAQ,UAAW,QAAS,OAAQ,MAAO,QAAS,UAAW,UAAW,gBACtFs2a,GAAet2a,GAAS3qC,OAAO,CAACkhd,EAAKp4d,KACvCo4d,EAAIp4d,IAAS,EACNo4d,GACR,IAsCH,YAAiB1gd,GACb,OAAOA,EAAS,EAAIxC,KAAKC,MAAMuC,GAAUxC,KAAKqyC,KAAK7vC,GAsCvD,YAAsB41N,GAGlB,OAAa,KAANA,EAAa,OAExB,YAAsBD,GAElB,OAAe,OAARA,EAAiB,KAG5B,IAAI11N,EAAQzC,KAAKyC,MACjB,MAAM0gd,MACE,GADFA,KAEC,GAFDA,KAGC,GAHDA,KAIC,GAJDA,KAKC,GALDA,KAMC,GAGP,YAA2B32d,EAAK0kL,EAAKsoS,EAAeC,EAAUj8M,IAC1D,OAAOA,GAAO+7M,aAAaroS,GAAO,IAAKsoS,EAAehtd,EAAKitd,GAmE/D,SACIhyd,YAAYouI,EAAUxpI,EAAS,IAC3BvE,KAAK6sN,MAAQ,GACb7sN,KAAK2nR,QAAU8mM,KACfzud,KAAK2nR,QAAUpjR,GAAUA,EAAOojR,SAAW8mM,KAE3C,MACM1+H,GADkBhiN,EACMoiG,MAAQ,EAChCmrP,GAFkBvtV,EAESwtV,SAAW,EACtC//M,GAHkBztI,EAGOsiG,OAAS,EAClCmrP,GAJkBztV,EAIMwhV,MAAQ,EAChC7zM,GALkB3tI,EAKKuiG,KAAO,EAC9BwlC,GANkB/nI,EAMM+nI,OAAS,EACjCC,GAPkBhoI,EAOQgoI,SAAW,EACrCvgC,GARkBznG,EAQQynG,SAAW,EACrCwlC,GATkBjtI,EASaitI,cAAgB,EACrD,YAAKygN,SApLb,YAAyB1tV,GAErB,GAAI2tV,OADwB9vb,KAAKmiG,GAE5B9kI,KAAMpG,GACCA,KAAOs4d,IACU,OAAlBptV,EAASlrI,IACT6xC,MAAMq5F,EAASlrI,KAEtB,OAAO,EAOX,IAAI84d,GAAiB,EACrB,QAASrud,EAAI,EAAGA,EAAIu3C,GAASpkD,SAAU6M,EACnC,GAAIygI,EAASlpF,GAASv3C,IAAK,CAEvB,GAAIqud,EACA,OAAO,EAEP5tV,EAASlpF,GAASv3C,MAAQg/c,GAAMv+U,EAASlpF,GAASv3C,OAClDqud,GAAiB,GAI7B,OAAO,EAyJaC,CAVQ7tV,GAYxB/tI,KAAK67d,eAAiB7gN,GACR,IAAVxlC,GACU,GAAVugC,GAAe,IACP,IAARD,GAAe,GAAK,GAIxB91Q,KAAK87d,OAASpgN,GACF,EAAR8/M,GAIJx7d,KAAK8xd,SAAWt2M,GACD,EAAX8/M,GACQ,GAARvrI,GA3JZ,YAAgBgsI,GACZ,IAAI/gN,EAAe+gN,EAAIF,cACnBngN,EAAOqgN,EAAID,MACXtgN,EAASugN,EAAIjK,QACjB,MAAMhod,GAAOiyd,EAAIlvQ,MAGVmuD,GAAgB,GAAKU,GAAQ,GAAKF,GAAU,GAC9CR,GAAgB,GAAKU,GAAQ,GAAKF,GAAU,IAC7CR,GAAuD,MAAvCghN,GAAQC,GAAazgN,GAAUE,GAC/CA,EAAO,EACPF,EAAS,GAIb1xQ,GAAKkxQ,aAAeA,EAAe,IACnC,MAAMxlC,GAAUwzO,EAAShuM,EAAe,KACxClxQ,GAAK0rO,QAAUA,GAAU,GACzB,MAAMugC,GAAUizM,EAASxzO,GAAU,IACnC1rO,GAAKisQ,QAAUA,GAAU,GACzB,MAAMD,GAAQkzM,EAASjzM,GAAU,IACjCjsQ,GAAKgsQ,MAAQA,GAAQ,GACrB4F,GAAQstM,EAASlzM,GAAQ,IAEzB,MAAMomN,GAAiBlT,EAASmT,GAAazgN,IAC7CF,GAAU0gN,GACVxgN,GAAQsgN,GAAQC,GAAaC,KAE7B,MAAMnsI,GAAQi5H,EAASxtM,EAAS,IAChCA,UAAU,GACV1xQ,GAAKwmO,IAAMorC,EACX5xQ,GAAKumO,MAAQmrC,EACb1xQ,GAAKqmO,KAAO4/G,GACLgsI,EA8HIK,CAAOp8d,MAElB4rB,UACI,OAAO5rB,KAAKy7d,SAEhBY,SAASC,GAEL,IAAKt8d,KAAK4rB,UACN,OAAO5rB,KAAKu8d,aAAanL,YAE7B,MAAM17M,EAAS11Q,KAAKu8d,aACpB,IAAI53d,EAhHZ,YAAsB63d,EAAgB9K,EAAeh8M,GACjD,MAAM3nI,EAAWghV,GAAeyN,GAAgBj7T,MAC1Ci0E,GAAU76N,EAAMozH,EAASm0P,GAAG,MAC5BnsH,GAAUp7P,EAAMozH,EAASm0P,GAAG,MAC5BpsH,GAAQn7P,EAAMozH,EAASm0P,GAAG,MAC1BxmH,GAAO/gQ,EAAMozH,EAASm0P,GAAG,MACzB1mH,GAAS7gQ,EAAMozH,EAASm0P,GAAG,MAC3BnyC,GAAQp1U,EAAMozH,EAASm0P,GAAG,MAC1B11W,GAAIgpN,IAAW6lP,OAAoB,CAAC,IAAK7lP,KAC3CA,GAAU6lP,MAAmB,CAAC,KAAM7lP,KACpCugC,IAAW,GAAK,CAAC,MACjBA,GAAUslN,MAAmB,CAAC,KAAMtlN,KACpCD,IAAS,GAAK,CAAC,MACfA,GAAQulN,MAAmB,CAAC,KAAMvlN,KAClC4F,IAAQ,GAAK,CAAC,MACdA,GAAO2/M,MAAmB,CAAC,KAAM3/M,KACjCF,IAAU,GAAK,CAAC,MAChBA,GAAS6/M,MAAmB,CAAC,KAAM7/M,KACnCu0E,IAAS,GAAK,CAAC,MAAQ,CAAC,KAAMA,IAKlC,OAAO0sI,GAAkBzxd,MAAM,KAJrB,CAACwhB,GAAE,GAAIA,GAAE,GAAIklc,GAAgB8K,EAAiB,EAAG9mN,IA6F1C+7M,CAAazxd,MAAOs8d,EAAY5mN,GAC7C,OAAI4mN,IACA33d,EAAS+wQ,EAAOm8M,YAAY7xd,KAAM2E,IAE/B+wQ,EAAO87M,WAAW7sd,GAE7B43d,aACI,OAAOv8d,KAAK2nR,QAEhBjS,OAAOgnN,GACH,OAAKA,GAGL18d,KAAK2nR,QAAU8mM,GAAUiO,IAAc18d,KAAK2nR,QACrC3nR,MAHIA,KAAK2nR,QAAQ0vM,MAK5B91T,MACI,MAAMo7T,EAAUzkd,KAAKqpJ,IACfz3J,EAAO9J,KAAK6sN,MAClB,YAAKgvQ,cAAgBc,EAAQ38d,KAAK67d,eAClC77d,KAAK87d,MAAQa,EAAQ38d,KAAK87d,OAC1B97d,KAAK8xd,QAAU6K,EAAQ38d,KAAK8xd,SAC5Bhod,EAAKkxQ,aAAe2hN,EAAQ7yd,EAAKkxQ,cACjClxQ,EAAK0rO,QAAUmnP,EAAQ7yd,EAAK0rO,SAC5B1rO,EAAKisQ,QAAU4mN,EAAQ7yd,EAAKisQ,SAC5BjsQ,EAAKgsQ,MAAQ6mN,EAAQ7yd,EAAKgsQ,OAC1BhsQ,EAAKumO,MAAQssP,EAAQ7yd,EAAKumO,OAC1BvmO,EAAKqmO,KAAOwsP,EAAQ7yd,EAAKqmO,MAClBnwO,KAEXkiY,GAAG06F,GACC,IAAK58d,KAAK4rB,UACN,OAAO4gJ,IAEX,IAAIkvG,EACAF,EACJ,MAAMR,GAAeh7Q,KAAK67d,cACpBjva,GAAQiwa,GAAeD,GAC7B,GAAc,UAAVhwa,IAA+B,SAAVA,GACrB8uN,SAAO17Q,KAAK87d,MAAQ9gN,GAAe,MACnCQ,EAASx7Q,KAAK8xd,QAAUqK,GAAazgN,GACpB,UAAV9uN,GAAoB4uN,EAASA,EAAS,GAIjD,OADAE,EAAO17Q,KAAK87d,MAAQ5jd,KAAKyC,MAAMshd,GAAaj8d,KAAK8xd,UACzClla,QACC,OACD,OAAO8uN,EAAO,EAAIV,GAAe,WAChC,MACD,OAAOU,EAAOV,GAAe,UAC5B,QACD,OAAc,GAAPU,EAAYV,GAAe,SACjC,UACD,OAAc,KAAPU,EAAcV,GAAe,QACnC,UACD,OAAc,MAAPU,EAAeV,GAAe,QAEpC,eACD,OAAO9iQ,KAAKC,MAAa,MAAPujQ,GAAgBV,WAElC,MAAM,IAAIn2Q,MAAO,gBAAe+nD,OAG5ChmD,UACI,OAAK5G,KAAK4rB,UAGF5rB,KAAK67d,cACI,MAAb77d,KAAK87d,MACJ97d,KAAK8xd,QAAU,GAAM,OACK,QAA3BxF,GAAMtsd,KAAK8xd,QAAU,IALdtlT,KAYnB,YAAiBjoK,GACb,GAAuB,MAAnBA,EAAOk3d,SAAkB,CACzB,MAAM1mM,EAAQukM,GAAgB/0d,GACxBu4d,EAAct3d,MAAM3D,UAAUoH,KAAKnH,KAAKizR,EAAMq4L,gBAAiB,SAAU9/c,IAC3E,OAAY,MAALA,KAEX,IAAIyvd,GAAcrob,MAAMnwC,EAAOqzH,IAAMrzH,EAAOqzH,GAAGz1H,YAC3C4yR,EAAM5zI,SAAW,IAChB4zI,EAAMp8J,QACNo8J,EAAMi4L,eACNj4L,EAAM2lM,iBACN3lM,EAAMw4L,kBACNx4L,EAAMg4L,YACNh4L,EAAMk4L,gBACNl4L,EAAMm4L,mBACLn4L,EAAMs4L,UAAat4L,EAAMs4L,UAAYyP,GAO3C,GANIv4d,EAAOund,UACPiR,EAAaA,GACe,IAAxBhoM,EAAM+3L,eACwB,IAA9B/3L,EAAM63L,aAAansd,aACDwC,IAAlB8xR,EAAMolM,SAES,MAAnBv4d,OAAO0tH,UAAqB1tH,OAAO0tH,SAAS/qH,GAI5C,OAAOw4d,EAHPx4d,EAAOk3d,SAAWsB,EAM1B,OAAOx4d,EAAOk3d,SAElB,YAAuBl3d,EAAQwwR,GAC3BxwR,SAAOqzH,GAAK,IAAIz2H,KAAKqrK,KACrB5qK,OAAOc,OAAO42d,GAAgB/0d,GAASwwR,GAAS,CAAEm4L,iBAAiB,IAC5D3od,EASX,MAAMy4d,GAAmB,mJACnBC,GAAgB,8IAChBC,GAAU,wBACVC,EAAW,CACb,CAAC,eAAgB,uBAAuB,GACxC,CAAC,aAAc,mBAAmB,GAClC,CAAC,eAAgB,kBAAkB,GACnC,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eAAe,GAC5B,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cAAc,GAC7B,CAAC,WAAY,SAAS,GAEtB,CAAC,aAAc,eAAe,GAC9B,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SAAS,IAGnBC,EAAW,CACb,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAELC,GAAkB,sBAClBC,GAAa,CACfC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAGH1Q,GAAU,0LAEhB,YAAuB/od,GACnB,IAAKq1M,EAASr1M,EAAO4oC,IACjB,OAAO5oC,EAEX,MAAMsN,EAAQtN,EAAO4oC,GACf0U,EAAQm7a,GAAiBlyW,KAAKj5G,IAAUord,GAAcnyW,KAAKj5G,GACjE,IAAIosd,EACAC,GACAC,GACAC,GAMA9wd,GACAugJ,GANJ,IAAKhsG,EACDt9C,SAAOk3d,UAAW,EACXl3d,EAKX,IAAK+I,GAAI,EAAGugJ,GAAIsvU,EAAS18d,OAAQ6M,GAAIugJ,GAAGvgJ,KACpC,GAAI6vd,EAAS7vd,IAAG,GAAGw9G,KAAKjpE,EAAM,IAAK,CAC/Bq8a,GAAaf,EAAS7vd,IAAG,GACzB2wd,GAA+B,IAAnBd,EAAS7vd,IAAG,GACxB,MAGR,GAAkB,MAAd4wd,GACA35d,SAAOk3d,UAAW,EACXl3d,EAEX,GAAIs9C,EAAM,GAAI,CACV,IAAKv0C,GAAI,EAAGugJ,GAAIuvU,EAAS38d,OAAQ6M,GAAIugJ,GAAGvgJ,KACpC,GAAI8vd,EAAS9vd,IAAG,GAAGw9G,KAAKjpE,EAAM,IAAK,CAE/Bs8a,IAAct8a,EAAM,IAAM,KAAOu7a,EAAS9vd,IAAG,GAC7C,MAGR,GAAkB,MAAd6wd,GACA55d,SAAOk3d,UAAW,EACXl3d,EAGf,IAAK05d,GAA2B,MAAdE,GACd55d,SAAOk3d,UAAW,EACXl3d,EAEX,GAAIs9C,EAAM,GACN,KAAIq7a,GAAQpyW,KAAKjpE,EAAM,IAInBt9C,SAAOk3d,UAAW,EACXl3d,EAJP65d,GAAW,IAOnB75d,SAAO0sZ,GAAKitE,IAAcC,IAAc,KAAOC,IAAY,IACpDC,GAA0B95d,GAerC,YAAwB+5d,GACpB,MAAMnuP,EAAO5vN,SAAS+9c,EAAS,IAC/B,OAAOnuP,GAAQ,GAAKA,EAAO,IAAOA,EAqCtC,YAA2B5rO,GACvB,IAAKq1M,EAASr1M,EAAO4oC,IACjB,OAAO5oC,EAEX,MAAMs9C,EAAQyra,GAAQxiW,KAvC1B,YAA2BpmH,GAEvB,OAAOA,EACFE,QAAQ,oBAAqB,KAC7BA,QAAQ,WAAY,KAAKs9D,OAmCHq8Z,CAAkBh6d,EAAO4oC,KACpD,IAAK0U,EACD,OAvKR,YAAqBt9C,GACjBA,SAAOk3d,UAAW,EACXl3d,EAqKIi6d,CAAYj6d,GAEvB,MAAMk6d,EA5DV,YAAmCH,EAASI,EAAUC,EAAQC,EAASC,GAAWC,IAC9E,MAAM7td,GAAS,CACX8td,GAAeT,GACfrO,GAAyB3qd,QAAQo5d,GACjCn+c,SAASo+c,EAAQ,IACjBp+c,SAASq+c,EAAS,IAClBr+c,SAASs+c,GAAW,KAExB,OAAIC,IACA7td,GAAOL,KAAK2P,SAASu+c,GAAW,KAE7B7td,GAiDa+td,CAA0Bn9a,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IACtG,OAtCJ,YAAsBo9a,EAAYC,EAAa36d,GAC3C,OAAI06d,GAEwB9O,GAA2B7qd,QAAQ25d,KACrC,IAAI99d,KAAK+9d,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAIpkN,WAE3Ew+M,GAAgB/0d,GAAQgpd,iBAAkB,EAC1Chpd,EAAOk3d,UAAW,GACX,GA8BV0D,CAAat9a,EAAM,GAAI48a,EAAal6d,KAGzCA,EAAOyD,GAAKy2d,EACZl6d,EAAO40d,KA7BX,YAAyBiG,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAO9B,GAAW8B,GAEjB,GAAIC,EAEL,OAAO,EAEN,CACD,MAAME,EAAKh/c,SAAS++c,EAAW,IACzBr9U,GAAIs9U,EAAK,IAEf,OADWA,EAAKt9U,IAAK,IACV,GAAKA,IAiBNu9U,CAAgB39a,EAAM,GAAIA,EAAM,GAAIA,EAAM,KACxDt9C,EAAOqzH,GAAKw3V,GAAcpkd,MAAM,KAAMzG,EAAOyD,IAC7CzD,EAAOqzH,GAAGu2V,cAAc5pd,EAAOqzH,GAAGuyV,gBAAkB5ld,EAAO40d,MAC3DG,GAAgB/0d,GAAQ+od,SAAU,GAC3B/od,EA4CX,YAAoBgC,EAAM4wQ,EAAQzB,EAAQu0M,EAAOx3S,GAAS,GACtD,MAAMk1G,GAAU8mM,GAAU/4M,GAAU,MACpC,IAAKiS,GACD,MAAM,IAAI9iR,MAAO,WAAU6wQ,6DAG/B,MAAM/wQ,GAOV,YAAsB4B,EAAM8oV,EAAS35E,EAAQu0M,EAAOx3S,GAAS,GACzD,IAAKgtT,EAAYl5d,GACb,OAAOmvQ,EAAO07M,YAElB,MAAMj6M,GAASuoN,GAAarwI,EAAS35E,GACrCg0M,UAAgBvyM,IAAUuyM,GAAgBvyM,KA//E9C,YAA4BA,GACxB,MAAMriN,EAAQqiN,EAAOt1N,MAAM+na,IACrBnpd,EAASq0D,EAAMr0D,OACfk/d,EAAY,IAAIn6d,MAAM/E,GAC5B,QAAS6M,GAAI,EAAGA,GAAI7M,EAAQ6M,KACxBqyd,EAAUryd,IAAKq8c,GAAqB70Z,EAAMxnD,KACpCq8c,GAAqB70Z,EAAMxnD,KAC3Bsyd,GAAuB9qa,EAAMxnD,KAEvC,OAAO,SAAU/G,GAAMmvQ,GAAQu0M,GAAOx3S,GAAS,GAC3C,IAAI9tK,GAAS,GACb,QAAS4I,GAAI,EAAGA,GAAI9M,EAAQ8M,KACxB5I,IAAU6oI,EAAWmyV,EAAUpyd,KACzBoyd,EAAUpyd,IAAGzL,KAAK,KAAMyE,GAAM,CAAE4wQ,SAAQzB,UAAQu0M,SAAOx3S,YACvDktT,EAAUpyd,IAEpB,OAAO5I,IA++E0Ck7d,CAAmB1oN,IACjEuyM,GAAgBvyM,IAAQ5wQ,EAAMmvQ,EAAQu0M,EAAOx3S,IAbrCqtT,CAAav5d,EADZ4wQ,IAAW8yM,EAAQ,yBAA2B,wBACnBtiM,GAASsiM,EAAOx3S,IAC3D,OAAK9tK,IAGEgjR,GAAQ6pM,WAAW7sd,IAW9B,YAAsB0qV,EAAS35E,GAC3B,IAAIyB,EAASk4E,EACT/hV,EAAI,EACR,MAAMyyd,GAAwB,6CACxBC,GAA+Bnud,IAC1B6jQ,EAAOo/M,eAAejjd,KAAUA,GAG3C,IADAkud,GAAsBtlS,UAAY,EAC3BntL,GAAK,GAAKyyd,GAAsBv0c,KAAK2rP,IACxCA,EAASA,EAAOvyQ,QAAQm7d,GAAuBC,IAC/CD,GAAsBtlS,UAAY,EAClCntL,GAAK,EAET,OAAO6pQ,EAIX,YAAkB3qP,EAAGnD,EAAG3jB,GACpB,OAAS,MAAL8mB,EACOA,EAEF,MAALnD,EACOA,EAEJ3jB,EAcX,YAAyBnB,GACrB,MAAMsN,EAAQ,GACd,IAAIvE,EACA/G,EACA05d,GACJ,GAAI17d,EAAOqzH,GACP,OAAOrzH,EAEX,MAAM27d,GAnBV,YAA0B37d,GACtB,MAAM47d,EAAW,IAAIh/d,KACrB,OAAIoD,EAAO20d,QACA,CAACiH,EAAShwI,iBAAkBgwI,EAAS9vI,cAAe8vI,EAAS7vI,cAEjE,CAAC6vI,EAAS3sP,cAAe2sP,EAASzlN,WAAYylN,EAASxlN,WAc1CylN,CAAiB77d,GAoBrC,IAlBIA,EAAOiod,IAAyB,MAAnBjod,EAAOyD,GA1lFf,IA0lFuD,MAApBzD,EAAOyD,GA3lFzC,IA6oFd,YAA+BzD,GAC3B,IAAI87d,EAAU9Q,EAAM//H,EAASy/H,GAAKC,GAAK5ya,GAAMgkb,GAC7C,MAAMzlU,GAAIt2J,EAAOiod,GACjB,GAAe,MAAX3xT,GAAE0lU,IAA2B,MAAV1lU,GAAE+rE,GAA0B,MAAV/rE,GAAEqrE,EACvC+oP,GAAM,EACNC,GAAM,EAKNmR,EAAWnrY,GAAS2lE,GAAE0lU,GAAOh8d,EAAOyD,GAxpF/B,GAwpFyCkrd,GAAW,IAAI/xd,KAAQ,EAAG,GAAGgvO,MAC3Eo/O,EAAOr6X,GAAS2lE,GAAE+rE,EAAM,GACxB4oH,EAAUt6P,GAAS2lE,GAAEqrE,EAAM,IACvBspH,EAAU,GAAKA,EAAU,KACzB8wI,IAAkB,OAGrB,CACDrR,GAAM1qd,EAAOojR,QAAQwrM,MAAMlE,IAC3BC,GAAM3qd,EAAOojR,QAAQwrM,MAAMjE,IAC3B,MAAMsR,GAAUtN,GAAW,IAAI/xd,KAAQ8td,GAAKC,IAC5CmR,EAAWnrY,GAAS2lE,GAAE4lU,GAAOl8d,EAAOyD,GAnqF/B,GAmqFyCw4d,GAAQrwP,MAEtDo/O,EAAOr6X,GAAS2lE,GAAEA,EAAM2lU,GAAQjR,MAClB,MAAdmR,GAAMnsW,GAEFi7N,EAAU30L,GAAEtmC,GACRi7N,EAAU,GAAKA,EAAU,KACzB8wI,IAAkB,IAGP,MAAdI,GAAMjxb,GAEP+/S,EAAU30L,GAAEprH,EAAOw/a,IACfp0T,GAAEprH,EAAO,GAAKorH,GAAEprH,EAAO,KACvB6wb,IAAkB,IAKtB9wI,EAAUy/H,GAGdM,EAAO,GAAKA,EAAOI,GAAY0Q,EAAUpR,GAAKC,IAC9CoK,GAAgB/0d,GAAQo8d,gBAAiB,EAEjB,MAAvBC,GACDtH,GAAgB/0d,GAAQs8d,kBAAmB,GAG3Cvkb,GAjoER,YAA4B6zL,EAAMo/O,EAAM//H,EAASy/H,EAAKC,IAClD,MAEM4R,GAAY,EAAI,GAAKvR,EAAO,IAFZ,EAAI//H,EAAUy/H,GAAO,EACxBK,GAAgBn/O,EAAM8+O,EAAKC,IAE9C,IAAIQ,GACAqR,GACJ,OAAID,IAAa,GACbpR,GAAUv/O,EAAO,EACjB4wP,GAAejR,GAAWJ,IAAWoR,IAEpCF,GAAgB9Q,GAAW3/O,IAC5Bu/O,GAAUv/O,EAAO,EACjB4wP,GAAeD,GAAYhR,GAAW3/O,KAGtCu/O,GAAUv/O,EACV4wP,GAAeD,IAEZ,CACH3wP,KAAMu/O,GACNoR,UAAWC,IA6mEJC,CAAmBX,EAAU9Q,EAAM//H,EAASy/H,GAAKC,IACxD3qd,EAAOyD,GAjsFF,GAisFas0C,GAAK6zL,KACvB5rO,EAAOg2d,WAAaj+a,GAAKwkb,WArGzBG,CAAsB18d,GAGD,MAArBA,EAAOg2d,aACP0F,GAAY/qY,GAAS3wF,EAAOyD,GAjmFvB,GAimFiCk4d,GAjmFjC,KAkmFD37d,EAAOg2d,WAAazK,GAAWmQ,KAAoC,IAAtB17d,EAAOg2d,cACpDjB,GAAgB/0d,GAAQ28d,oBAAqB,GAEjD36d,EAAO,IAAIpF,KAAKA,KAAK6od,IAAIiW,GAAW,EAAG17d,EAAOg2d,aAC9Ch2d,EAAOyD,GArmFD,GAqmFazB,EAAK8pV,cACxB9rV,EAAOyD,GArmFF,GAqmFazB,EAAK+pV,cAOtBhjV,EAAI,EAAGA,EAAI,GAAqB,MAAhB/I,EAAOyD,GAAGsF,KAAcA,EACzC/I,EAAOyD,GAAGsF,GAAKuE,EAAMvE,GAAK4yd,GAAY5yd,GAG1C,KAAOA,EAAI,EAAGA,IACV/I,EAAOyD,GAAGsF,GAAKuE,EAAMvE,GAAsB,MAAhB/I,EAAOyD,GAAGsF,GAAqB,IAANA,EAAU,EAAI,EAAK/I,EAAOyD,GAAGsF,GAG7D,KAApB/I,EAAOyD,GAnnFF,IAonFiB,IAAtBzD,EAAOyD,GAnnFA,IAonFe,IAAtBzD,EAAOyD,GAnnFA,IAonFoB,IAA3BzD,EAAOyD,GAnnFK,KAonFZzD,EAAO48d,UAAW,EAClB58d,EAAOyD,GAxnFF,GAwnFa,GAGtBzD,EAAOqzH,IAAMrzH,EAAO20d,QAAU9J,GAAgB/3M,IAAYrsQ,MAAM,KAAM6G,GACtE,MAAMuvd,GAAkB78d,EAAO20d,QAAU30d,EAAOqzH,GAAG0yV,YAAc/ld,EAAOqzH,GAAGkjJ,SAG3E,OAAmB,MAAfv2Q,EAAO40d,MACP50d,EAAOqzH,GAAGu2V,cAAc5pd,EAAOqzH,GAAGuyV,gBAAkB5ld,EAAO40d,MAE3D50d,EAAO48d,WACP58d,EAAOyD,GAnoFF,GAmoFa,IAGlBzD,EAAOiod,SAAgC,IAAnBjod,EAAOiod,GAAGj4V,GAAwBhwH,EAAOiod,GAAGj4V,IAAS6sW,KACzE9H,GAAgB/0d,GAAQgpd,iBAAkB,GAEvChpd,EA2DX,YAAuBA,GACnB,IAAI48I,EACJ,MAAM30H,EAAIjoB,EAAOyD,GACjB,OAAIwkB,IAA0C,IAArC8sc,GAAgB/0d,GAAQ48I,WAE7BA,EACI30H,EA5sFE,GA4sFS,GAAKA,EA5sFd,GA4sFyB,GA5sFzB,EA6sFEA,EA5sFH,GA4sFa,GAAKA,EA5sFlB,GA4sF4Bmhc,GAAYnhc,EA9sFxC,GA8sFiDA,EA7sFhD,IACD,EA6sFOA,EA5sFP,GA4sFiB,GAAKA,EA5sFtB,GA4sFgC,IAAmB,KAAZA,EA5sFvC,KA4sFwE,IAAdA,EA3sFxD,IA2sFyF,IAAdA,EA1sF3E,IA0sFiH,IAAnBA,EAzsFzF,IAHP,EA6sFWA,EA5sFT,GA4sFqB,GAAKA,EA5sF1B,GA4sFsC,GA5sFtC,EA6sFaA,EA5sFb,GA4sFyB,GAAKA,EA5sF9B,GA4sF0C,GA5sF1C,EA6sFiBA,EA5sFZ,GA4sF6B,GAAKA,EA5sFlC,GA4sFmD,IA5sFnD,GA6sFgB,EACxB8sc,GAAgB/0d,GAAQ28d,qBAAuB//U,EAptF9C,GAotFiEA,EAltFjE,KAmtFDA,EAntFC,GAqtFDm4U,GAAgB/0d,GAAQo8d,iBAA+B,IAAbx/U,IAC1CA,EAjtFC,GAmtFDm4U,GAAgB/0d,GAAQs8d,mBAAiC,IAAb1/U,IAC5CA,EAntFI,GAqtFRm4U,GAAgB/0d,GAAQ48I,SAAWA,GAEhC58I,EAUX,YAAmCA,GAE/B,GAPa,aAOTA,EAAO0sZ,GACP,OAAOowE,GAAc98d,GAEzB,GAPa,aAOTA,EAAO0sZ,GACP,OAAOqwE,GAAkB/8d,GAI7B,GAFAA,EAAOyD,GAAK,GACZsxd,GAAgB/0d,GAAQo0H,OAAQ,EAC5BznH,EAAQ3M,EAAO0sZ,MAAS1sZ,EAAO4oC,IAAoB,IAAd5oC,EAAO4oC,GAC5C,OAAO5oC,EAGX,IAAIsN,EAAQtN,EAAO4oC,GAAGlsC,WAClBsge,EAAyB,EAC7B,MAAMC,EAAc3vd,EAAMpR,OACpB0T,GAASurd,GAAan7d,EAAO0sZ,GAAI1sZ,EAAOojR,SAAS9lO,MAAM+na,KAAqB,GAClF,IAAIt8c,GACAvH,GACAm5d,GACAuC,GACJ,IAAKn0d,GAAI,EAAGA,GAAI6G,GAAO1T,OAAQ6M,KAC3BvH,GAAQoO,GAAO7G,IACf4xd,IAAertd,EAAMgwC,MAAM6/a,GAAsB37d,GAAOxB,EAAOojR,WAAa,IAAI,GAC5Eu3M,KACAuC,GAAU5vd,EAAMmH,OAAO,EAAGnH,EAAMvM,QAAQ45d,KACpCuC,GAAQhhe,OAAS,GACjB64d,GAAgB/0d,GAAQsod,YAAYj8c,KAAK6wd,IAE7C5vd,EAAQA,EAAMjM,MAAMiM,EAAMvM,QAAQ45d,IAAeA,GAAYz+d,QAC7D8ge,GAA0BrC,GAAYz+d,QAG1C2tB,GAAyBroB,KACjBm5d,GACA5F,GAAgB/0d,GAAQo0H,OAAQ,EAGhC2gW,GAAgB/0d,GAAQqod,aAAah8c,KAAK7K,IAE9C47d,GAAwB57d,GAAOm5d,GAAa36d,IAEvCA,EAAOund,UAAYoT,IACxB5F,GAAgB/0d,GAAQqod,aAAah8c,KAAK7K,IAIlDuzd,UAAgB/0d,GAAQuod,cAAgB0U,EAAcD,EAClD1vd,EAAMpR,OAAS,GACf64d,GAAgB/0d,GAAQsod,YAAYj8c,KAAKiB,GAGzCtN,EAAOyD,GA3xFF,IA2xFc,KACiB,IAApCsxd,GAAgB/0d,GAAQ41d,SACxB51d,EAAOyD,GA7xFF,GA6xFa,IAClBsxd,GAAgB/0d,GAAQ41d,aAAU,GAEtCb,GAAgB/0d,GAAQ6od,gBAAkB7od,EAAOyD,GAAGpC,MAAM,GAC1D0zd,GAAgB/0d,GAAQ8od,SAAW9od,EAAO21d,UAE1C31d,EAAOyD,GAnyFE,GAuyFb,YAAyB0tQ,EAAQksN,EAAOvU,GACpC,IAAIlE,EAAOyY,EACX,GAAgB,MAAZvU,EAEA,OAAOlE,EAEX,GAA2B,MAAvBzzM,EAAOmsN,aACP,OAAOnsN,EAAOmsN,aAAa1Y,EAAMkE,GAErC,GAAmB,MAAf33M,EAAOk/M,KAEP,OAAOzL,EAGX,MAAM2Y,GAAOpsN,EAAOk/M,KAAKvH,GACzB,OAAIyU,IAAQ3Y,EAAO,KACfA,GAAQ,KAEP2Y,IAAiB,KAAT3Y,IACTA,EAAO,GAEJA,EAzBW4Y,CAAgBx9d,EAAOojR,QAASpjR,EAAOyD,GAnyFhD,GAmyF0DzD,EAAO21d,WAC1E8H,GAAgBz9d,GACT09d,GAAc19d,GA2EzB,YAA0BA,GACtB,MAAMymD,EAAMi3a,GAchB,YAAuB19d,GACnB,IAAIsN,EAAQtN,EAAO4oC,GACnB,MAAMgqO,EAAS5yQ,EAAO0sZ,GAEtB,OADA1sZ,EAAOojR,QAAUpjR,EAAOojR,SAAW8mM,GAAUlqd,EAAO29d,IACtC,OAAVrwd,QAA8B5O,IAAXk0Q,GAAkC,KAAVtlQ,EACpCswd,GAAc59d,EAAQ,CAAEwod,WAAW,KAE1CnzQ,EAAS/nM,KACTtN,EAAO4oC,GAAKt7B,EAAQtN,EAAOojR,QAAQ4pM,SAAS1/c,EAAOslQ,IAEnD11Q,EAAOoQ,IACPtN,EAAOqzH,GAAKs2V,GAAUr8c,GACftN,IAGP2M,EAAQimQ,GA9EhB,YAAkC5yQ,GAC9B,IAAI69d,EACAC,EACAC,EACAC,GAKAj1d,GAJJ,IAAK/I,EAAO0sZ,IAA2B,IAArB1sZ,EAAO0sZ,GAAGxwZ,OACxB64d,UAAgB/0d,GAAQ0od,eAAgB,EACjCkV,GAAc59d,GAGzB,IAAK+I,GAAI,EAAGA,GAAI/I,EAAO0sZ,GAAGxwZ,OAAQ6M,KAC9Bi1d,GAAe,EACfH,EAAaxge,OAAOc,OAAO,GAAI6B,GACT,MAAlBA,EAAO20d,UACPkJ,EAAWlJ,QAAU30d,EAAO20d,SAEhCkJ,EAAWnxE,GAAK1sZ,EAAO0sZ,GAAG3jZ,IAC1B+wd,GAA0B+D,GACrBx2c,GAAQw2c,KAIbG,IAAgBjJ,GAAgB8I,GAAYtV,cAE5CyV,IAAkE,GAAlDjJ,GAAgB8I,GAAYxV,aAAansd,OACzD64d,GAAgB8I,GAAY12c,MAAQ62c,IACjB,MAAfD,GAAuBC,GAAeD,KACtCA,EAAcC,GACdF,EAAaD,IAGdxge,OAAOc,OAAO6B,EAAQ89d,GAAcD,GAgDvCI,CAAyBj+d,GAExB09I,EACDo8U,GAA0B95d,GAUlC,YAAyBA,GACrB,MAAMsN,EAAQtN,EAAO4oC,GACrB,GAAIk4K,EAAYxzM,GACZtN,EAAOqzH,GAAK,IAAIz2H,aAEXM,EAAOoQ,GACZtN,EAAOqzH,GAAKs2V,GAAUr8c,WAEjB+nM,EAAS/nM,IAzbtB,YAA0BtN,GACtB,IAAKq1M,EAASr1M,EAAO4oC,IACjB,OAAO5oC,EAEX,MAAM61I,EAAUijV,GAAgBvyW,KAAKvmH,EAAO4oC,IAC5B,OAAZitG,EACA71I,EAAOqzH,GAAK,IAAIz2H,MAAMi5I,EAAQ,KAMlCinV,GAAc98d,IACU,IAApBA,EAAOk3d,kBACAl3d,EAAOk3d,SAKlB6F,GAAkB/8d,IACM,IAApBA,EAAOk3d,kBACAl3d,EAAOk3d,SAOX0G,GAAc59d,MA8ZjBk+d,CAAiBl+d,WAEZ2M,EAAQW,IAAUA,EAAMpR,OAAQ,CACrC,MAAMiie,EAAO7wd,EAAMjM,MAAM,GACzBrB,EAAOyD,GAAK06d,EAAKj9d,IAAIsoB,GAAO6rL,EAAS7rL,GAAOxN,SAASwN,EAAK,IAAMA,GAChEi0c,GAAgBz9d,WAEX+5L,EAASzsL,IA1EtB,YAA0BtN,GACtB,GAAIA,EAAOqzH,GACP,OAAOrzH,EAEX,MAAMsN,EAAQtN,EAAO4oC,GACrB,GAAImxJ,EAASzsL,GAAQ,CACjB,MAAMvE,EA33Fd,WAA8Bq1d,GAC1B,MAAMC,EAAkB,GACxB,IAAIx0H,EACAh0V,EACJ,IAAKA,KAAQuod,EACL9W,EAAW8W,EAAavod,KACxBg0V,EAAiByuH,GAAezid,GAC5Bg0V,IACAw0H,EAAgBx0H,GAAkBu0H,EAAYvod,KAI1D,OAAOwod,EA+2FOC,CAAqBhxd,GAC/BtN,EAAOyD,GAAK,CAACsF,EAAE6iO,KAAM7iO,EAAE+iO,MAAO/iO,EAAEgjO,IAAKhjO,EAAEwoQ,MAAOxoQ,EAAEyoQ,QAASzoQ,EAAEkoO,QAASloO,EAAE0tQ,cAEjEv1Q,IAAIsoB,GAAO6rL,EAAS7rL,GAAOxN,SAASwN,EAAK,IAAMA,GAExD,OAAOi0c,GAAgBz9d,GAgEnBu+d,CAAiBv+d,YAEZygN,EAASnzM,GAMd,OAAOswd,GAAc59d,GAJrBA,EAAOqzH,GAAK,IAAIz2H,KAAK0Q,IA5BrBkxd,CAAgBx+d,GAEfqnB,GAAQrnB,KACTA,EAAOqzH,GAAK,MAETrzH,IAzCmBy+d,CAAcz+d,IAExCymD,SAAI4sE,GAAK,IAAIz2H,KAAe,MAAV6pD,EAAI4sE,GAAa5sE,EAAI4sE,GAAGz1H,UAAYqqK,KACjD5gJ,GAAQhqB,OAAOc,OAAO,GAAIsoD,EAAK,CAAEywa,SAAU,UAC5Czwa,EAAI4sE,GAAK,IAAIz2H,KAAKqrK,MAQfxhH,EAmFX,YAAmBn5C,EAAOslQ,EAAQulN,EAAWtK,EAAQnI,IACjD,OAAIxod,EAAOoQ,GACAA,EAzBf,YAA0BA,EAAOslQ,EAAQulN,EAAWtK,EAAQnI,IACxD,MAAM1ld,GAAS,GACf,IAAI0+d,GAASpxd,EAOb,OAAKysL,EAAS2kS,KAjgGlB,WAAuBl1c,GACnB,GAAInsB,OAAOqY,oBACP,OAAmD,IAA3CrY,OAAOqY,oBAAoB8T,GAAKttB,OAE5C,IAAIgN,EACJ,IAAKA,KAAKsgB,EAEN,GAAIA,EAAIznB,eAAemH,GACnB,OAAO,EAGf,OAAO,EAs/FkBy1d,CAAcD,KAAa/xd,EAAQ+xd,KAA6B,IAAlBA,GAAOxie,UAC1Ewie,QAAShge,GAKbsB,GAAO20d,QAAU30d,GAAOsyd,OAAS5M,GACjC1ld,GAAO29d,GAAKxF,EACZn4d,GAAO4oC,GAAK81b,GACZ1+d,GAAO0sZ,GAAK95I,EACZ5yQ,GAAOund,QAAUsG,EACV+Q,GAAiB5+d,IAQjBA,CADyBsN,EAAOslQ,EAAQulN,EAAWtK,EAAQnI,IACpDryV,GAElB,YAAoBrxH,GAChB,OAAMA,aAAgBpF,KAGf,IAAIA,KAAKoF,EAAK4pV,iBAAkB5pV,EAAK8pV,cAAe9pV,EAAK+pV,aAAc/pV,EAAK2jd,cAAe3jd,EAAK4jd,gBAAiB5jd,EAAK6jd,gBAAiB7jd,EAAK8jd,sBAFxI,KAKf,YAAkBjhS,GACd,OAAOA,EAAM,GAA2B,EAAvBlxK,KAAKyC,OAAY,EAANyuK,GAAiBlxK,KAAKyC,MAAMyuK,GAG5D,YAAiBmhS,EAAOC,EAAO59Z,EAAQ,gBACnC,SAAK29Z,IAAUC,KAGD,iBAAV59Z,EACO29Z,EAAM3jd,UAAY4jd,EAAM5jd,UAE5B4jd,EAAM5jd,UAAYood,GAAQzE,EAAO39Z,GAAOhmD,WAEnD,YAAkB2jd,EAAOC,EAAO59Z,EAAQ,gBACpC,SAAK29Z,IAAUC,KAGD,iBAAV59Z,EACO29Z,EAAM3jd,UAAY4jd,EAAM5jd,UAE5Bw8d,GAAM7Y,EAAO39Z,GAAOhmD,UAAY4jd,EAAM5jd,WAiBjD,YAAgB2jd,EAAOC,EAAO59Z,EAAQ,gBAClC,IAAK29Z,IAAUC,EACX,OAAO,EAEX,GAAc,iBAAV59Z,EACA,OAAO29Z,EAAM3jd,YAAc4jd,EAAM5jd,UAErC,MAAMy8d,EAAU7Y,EAAM5jd,UACtB,OAAQood,GAAQzE,EAAO39Z,GAAOhmD,WAAay8d,GACvCA,GAAWD,GAAM7Y,EAAO39Z,GAAOhmD,UAavC,MAAM08d,EAAc,2DAIdC,GAAW,sKACjB,YAAwB1xd,EAAOhP,EAAK0B,EAAS,IACzC,MAAMwpI,EAIV,YAAyBl8H,EAAOhP,GAE5B,GAAa,MAATgP,EACA,MAAO,GAEX,GA1xBJ,YAAoBkc,GAChB,OAAOA,aAAey1c,GAyxBlBC,CAAW5xd,GACX,MAAO,CACHmpQ,aAAcnpQ,EAAMgqd,cACpBvrP,IAAKz+N,EAAMiqd,MACXzrP,MAAOx+N,EAAMigd,SAGrB,GAAI9sQ,EAASnzM,GAET,OAAOhP,EAAM,EAAGA,GAAMgP,GAAU,CAAEmpQ,aAAcnpQ,GAEpD,GAAI+nM,EAAS/nM,GAAQ,CACjB,IAAIgwC,EAAQyhb,EAAYx4W,KAAKj5G,GAC7B,GAAIgwC,EAAO,CACP,MAAMhmC,EAAqB,MAAbgmC,EAAM,IAAc,EAAK,EACvC,MAAO,CACHsuL,KAAM,EACNG,IAAKg8O,GAAMzqa,EA1jGd,IA0jG6BhmC,EAC1Bi6P,MAAOw2M,GAAMzqa,EA1jGhB,IA0jG+BhmC,EAC5Bk6P,QAASu2M,GAAMzqa,EA1jGhB,IA0jGiChmC,EAChC25N,QAAS82O,GAAMzqa,EA1jGhB,IA0jGiChmC,EAEhCm/P,aAAcsxM,GAAMoX,GAAqC,IAA5BpX,GAAMzqa,EA3jG/B,MA2jG8DhmC,GAI1E,GADAgmC,EAAQ0hb,GAASz4W,KAAKj5G,GAClBgwC,EAAO,CACP,MAAMhmC,EAAqB,MAAbgmC,EAAM,IAAc,EAA0B,EAC5D,MAAO,CACHsuL,KAAMwzP,GAAS9hb,EAAM,GAAIhmC,GACzBw0N,MAAOszP,GAAS9hb,EAAM,GAAIhmC,GAC1B0zc,KAAMoU,GAAS9hb,EAAM,GAAIhmC,GACzBy0N,IAAKqzP,GAAS9hb,EAAM,GAAIhmC,GACxBi6P,MAAO6tN,GAAS9hb,EAAM,GAAIhmC,GAC1Bk6P,QAAS4tN,GAAS9hb,EAAM,GAAIhmC,GAC5B25N,QAASmuP,GAAS9hb,EAAM,GAAIhmC,KAIxC,GAAIyiL,EAASzsL,KAAW,SAAUA,GAAS,OAAQA,GAAQ,CACvD,MAAM+xd,EA6Bd,YAA2BnuP,EAAM5+G,GAC7B,IAAM4oW,EAAYhqP,KAASgqP,EAAY5oW,GACnC,MAAO,CAAEmkJ,aAAc,EAAGQ,OAAQ,GAEtC,IAAIxwN,EACJ,MAAM64a,EA9qDV,YAAyBhyd,EAAOtL,EAAMhC,EAAS,IAC3C,IAAKA,EAAOsyd,OACR,OAAOhld,EAEX,MAAMm5C,EAAMkja,GAAU3nd,GAEhBu9d,GAAqC,KAAvBv/d,EAAOuyd,SAAW,GAChC9wV,GAAOn0H,EAAMjL,UAAYokD,EAAIpkD,UAAYk9d,GAE/C94a,SAAIumZ,QAAQvmZ,EAAIpkD,UAAYo/H,IAGrBh7E,EAkqDQ+4a,CAAgBltW,EAAO4+G,EAAM,CAAEqhP,QAASrhP,EAAK2iC,sBAC5D,OAAI4rN,GAASvuP,EAAMouP,GACf74a,EAAMi5a,GAA0BxuP,EAAMouP,IAGtC74a,EAAMi5a,GAA0BJ,EAAQpuP,GACxCzqL,EAAIgwN,cAAgBhwN,EAAIgwN,aACxBhwN,EAAIwwN,QAAUxwN,EAAIwwN,QAEfxwN,EA3Cak5a,CAAkB9jd,GAAUvO,EAAM+gH,MAAOxyG,GAAUvO,EAAM+gK,KACzE,MAAO,CACHooG,aAAc4oN,EAAQ5oN,aACtB3qC,MAAOuzP,EAAQpoN,QAGvB,OAAO3pQ,EAvDUsyd,CAAgBtyd,EAAOhP,GAExC,OAAO,IAAI2ge,GAASz1V,EAAUxpI,GAyDlC,YAAkB6/d,EAAKvod,GAInB,MAAMmvC,EAAMo5a,GAAOhsd,WAAWgsd,EAAIx/d,QAAQ,IAAK,MAE/C,OAAQ8vC,MAAMsW,GAAO,EAAIA,GAAOnvC,EAEpC,YAAmC45N,EAAM5+G,GACrC,MAAM7rE,EAAM,CAAEgwN,aAAc,EAAGQ,OAAQ,GAIvC,OAHAxwN,EAAIwwN,OAASd,GAAS7jJ,GAAS6jJ,GAASjlC,GACO,IAA1CjC,GAAY38G,GAAS28G,GAAYiC,IAElC4uP,GADclwc,GAAI+5b,GAAUz4O,GAAOzqL,EAAIwwN,OAAQ,SAC5B3kJ,MACjB7rE,EAAIwwN,OAEVxwN,EAAIgwN,cAAgBnkJ,GAAU1iG,GAAI+5b,GAAUz4O,GAAOzqL,EAAIwwN,OAAQ,SACxDxwN,EAmBX,YAAazkD,EAAMk1B,EAAKkiM,EAAQssP,GAE5B,OAAO6E,GAAYvod,EADPwod,GAAetzb,EAAKkiM,GACF,EAAGssP,GAMrC,YAAqB1jd,EAAMwnI,EAAUu2V,EAAUra,GAC3C,MAAMjvM,GAAejtI,EAAS8tV,cACxBngN,GAAOgoN,GAAS31V,EAAS+tV,OACzBtgN,GAASkoN,GAAS31V,EAAS+jV,SAGjC,OAAIt2M,IACAsyM,GAASvnd,EAAMm0Q,GAASn0Q,EAAM0jd,GAASzuM,GAAS8oN,EAAUra,GAE1DvuM,IACAsyM,GAAQznd,EAAMo0Q,GAAQp0Q,EAAM0jd,GAASvuM,GAAO4oN,EAAUra,GAEtDjvM,IAjsFR,YAAiBz0Q,EAAMhF,GACnBgF,EAAKgrc,QAAQhwc,GAisFTgwc,CAAQhrc,EAnjGhB,YAAiBA,GACb,OAAOA,EAAKpE,UAkjGMA,CAAQoE,GAAQy0Q,GAAespN,GAE1CpW,GAAU3nd,GAgGrB,YAAsBA,EAAMsL,EAAO6jQ,EAAS+4M,KAAaxE,GACrD,MAAM35O,GAAMwqC,GAAOv0Q,EAAM0jd,GACnBgZ,GA7BV,YAAsBpxd,EAAO6jQ,GACzB,IAAK97D,EAAS/nM,GACV,OAAOA,EAEX,MAAM0yd,EAAOhkd,SAAS1O,EAAO,IAC7B,IAAK6iC,MAAM6vb,GACP,OAAOA,EAEX,MAAMC,EAAW9uN,EAAOg5M,cAAc78c,GACtC,OAAImzM,EAASw/Q,GACFA,EAEJ,KAiBQC,CAAa5yd,EAAO6jQ,GACnC,OAAOvhP,GAAI5tB,EAAM08d,GAAS3yP,GAAK,OAQnC,YAA4B/pO,EAAMmvQ,EAAS+4M,KAAaxE,GACpD,OAAQnvM,GAAOv0Q,EAAM0jd,GAAS,EAAIv0M,EAAO09M,kBAAoB,EAuBjE,MAwBMsR,GAAa,SAAUt7S,GACzB,OAAe,IAARA,EAAY,EAAY,IAARA,EAAY,EAAY,IAARA,EAAY,EAAIA,EAAM,KAAO,GAAKA,EAAM,KAAO,GAAK,EAAIA,EAAM,KAAO,GAAK,EAAI,GAEnHu7S,GAAU,CACZ5oW,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClFkmB,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFgtC,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9E16D,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzEgyG,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxE9rE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAExEmqU,GAAY,SAAUzvd,GACxB,OAAO,SAAUi0K,EAAKsoS,GAClB,MAAM3ta,EAAI2gb,GAAWt7S,GACrB,IAAI1kL,GAAMige,GAAQxvd,GAAGuvd,GAAWt7S,IAChC,OAAU,IAANrlI,IACAr/C,GAAMA,GAAIgtd,EAAgB,EAAI,IAE3Bhtd,GAAIE,QAAQ,MAAOwkL,EAAInoL,cAqBxB,uRAAsDgF,MAAM,KACvD,mMAAwCA,MAAM,KAChD,mDAAgBA,MAAM,KAiC5B2+d,GAAU,KACTA,GAAU,KACXA,GAAU,KACTA,GAAU,KACXA,GAAU,KACTA,GAAU,KACXA,GAAU,KACTA,GAAU,KACXA,GAAU,KACTA,GAAU,KACXA,GAAU,KACTA,GAAU,KA2BV,kbAAoF3+d,MAAM,KACrF,sOAAkDA,MAAM,KAC3D,ySAAyDA,MAAM,KAC1D,uIAA8BA,MAAM,KACtC,6FAAuBA,MAAM,KAgFvB,8DAA8DA,MAAM,KAAsB,kDAAkDA,MAAM,KAK7J,uFAAoFA,MAAM,KAiBxF,8DAA8DA,MAAM,KAC/D,qCAAqCA,MAAM,KAC7C,uBAAuBA,MAAM,KArB9C,MAmFM4+d,GAAW,8HAAoF5+d,MAAM,KACrG6+d,GAAgB,yFAAkD7+d,MAAM,MAyE5D,SAAUu1Q,EAAQw2M,GAC5B,IAAI1kd,EAAGild,EAAe,GACtB,IAAKjld,EAAI,EAAGA,EAAI,GAAIA,IAEhBild,EAAajld,GAAK,IAAI8I,OAAO,IAAMolQ,EAAOluQ,GAAK,MAAQ0kd,EAAY1kd,GAAK,IAAK,MAJvE,CAOZu3d,GAAUC,IACO,SAAU9S,GACzB,IAAI1kd,EAAGmld,EAAoB,GAC3B,IAAKnld,EAAI,EAAGA,EAAI,GAAIA,IAChBmld,EAAkBnld,GAAK,IAAI8I,OAAO,IAAM47c,EAAY1kd,GAAK,IAAK,KAHnD,CAMjBw3d,IACgB,SAAUtpN,GACxB,IAAIluQ,EAAGkld,EAAmB,GAC1B,IAAKlld,EAAI,EAAGA,EAAI,GAAIA,IAChBkld,EAAiBlld,GAAK,IAAI8I,OAAO,IAAMolQ,EAAOluQ,GAAK,IAAK,KAH9C,CAMhBu3d,IACQ,mFAAmD5+d,MAAM,KACpD,kCAAuBA,MAAM,KAC/B,kCAAuBA,MAAM,KA8ElC,sFAAsFA,MAAM,KACvF,kDAAkDA,MAAM,KAC3D,2DAAqDA,MAAM,KACtD,oCAA8BA,MAAM,KACtC,6BAAuBA,MAAM,KA4DlC,wFAAqFA,MAAM,KACtF,gEAA6DA,MAAM,KAEtE,8DAA8DA,MAAM,KAC/D,8BAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KA+ClC,wFAAwFA,MAAM,KACzF,kDAAkDA,MAAM,KAC3D,2DAA2DA,MAAM,KAC5D,8BAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KAkDvB,8DAA8DA,MAAM,KAAsB,kDAAkDA,MAAM,KAK7J,2FAA2FA,MAAM,KAmB/F,6DAAuDA,MAAM,KACxD,2CAAqCA,MAAM,KAC7C,0BAAuBA,MAAM,KAuDvB,8DAA8DA,MAAM,KAAsB,kDAAkDA,MAAM,KAK7J,2FAA2FA,MAAM,KAiB/F,6DAAuDA,MAAM,KACxD,2CAAqCA,MAAM,KAC7C,0BAAuBA,MAAM,KAsDvB,8DAA8DA,MAAM,KACvE,kDAAkDA,MAAM,KAGhE,2FAA2FA,MAAM,KAa/F,6DAAuDA,MAAM,KACxD,2CAAqCA,MAAM,KAC7C,0BAAuBA,MAAM,KAuDvB,8DAA8DA,MAAM,KACvE,kDAAkDA,MAAM,KAGhE,2FAA2FA,MAAM,KAa/F,6DAAuDA,MAAM,KACxD,2CAAqCA,MAAM,KAC7C,0BAAuBA,MAAM,KA4ElC,gGAA6FA,MAAM,KAC9F,gEAA6DA,MAAM,KACtE,sFAAiEA,MAAM,KAClE,gBAAgBA,MAAM,KACxB,gBAAgBA,MAAM,KA2CrB,iFAAwEA,MAAM,KA6CpF,iHAA2GA,MAAM,KAC5G,6EAAuEA,MAAM,KAChF,qEAAqEA,MAAM,KACtE,uBAAuBA,MAAM,KAC/B,uBAAuBA,MAAM,KAkDlC,gGAAuFA,MAAM,KACxF,0EAAiEA,MAAM,KAE1E,sDAAsDA,MAAM,KACvD,qCAAqCA,MAAM,KAC7C,uBAAuBA,MAAM,KAiEzB,iEAA8DA,MAAM,KAAsB,qDAAkDA,MAAM,KAK3J,4FAAyFA,MAAM,KAiB7F,yDAAmDA,MAAM,KACpD,2CAAqCA,MAAM,KAC7C,6BAAuBA,MAAM,KA2DlC,sXAA0EA,MAAM,KAC3E,kSAA4DA,MAAM,KACrE,6LAAuCA,MAAM,KACxC,6FAAuBA,MAAM,KAC/B,mDAAgBA,MAAM,KA+G3B,8YAA8EA,MAAM,KAC/E,2PAA6DA,MAAM,KAEtE,6RAAuDA,MAAM,KACxD,+JAAkCA,MAAM,KAC1C,iFAAqBA,MAAM,KAyF1B,6FAAgEA,MAAM,KAmC5E,4HAAoGA,MAAM,KACrG,oEAAqDA,MAAM,KAC9D,6EAAsDA,MAAM,KACvD,yCAAgCA,MAAM,KACxC,qBAAqBA,MAAM,KA8DhC,+GAAgGA,MAAM,KACjG,wDAAmDA,MAAM,KAC5D,iEAA4DA,MAAM,KAC7D,mCAA8BA,MAAM,KACtC,4BAAuBA,MAAM,KAuDlC,yFAAyFA,MAAM,KAC1F,kDAAkDA,MAAM,KAC3D,6CAA6CA,MAAM,KAC9C,8BAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KA0ElC,gGAAgGA,MAAM,KACjG,kDAAkDA,MAAM,KAC3D,0EAA2DA,MAAM,KAC5D,8BAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KAuDlC,qGAAyCA,MAAM,KAC1C,qGAAyCA,MAAM,KAClD,uIAA8BA,MAAM,KAC/B,mDAAgBA,MAAM,KACxB,mDAAgBA,MAAM,KAqEvB,8hBAAsGA,MAAM,KACxG,whBAAqGA,MAAM,KAE9G,sOAAkDA,MAAM,KAErD,mVAAgEA,MAAM,KAC1E,yVAAiEA,MAAM,KAGpE,uIAA8BA,MAAM,KACtC,6FAAuBA,MAAM,KA6FlC,wbAAqFA,MAAM,KACtF,sOAAkDA,MAAM,KAC3D,+SAA0DA,MAAM,KAC3D,uIAA8BA,MAAM,KACtC,6FAAuBA,MAAM,KAmDlC,qGAAyCA,MAAM,KAC1C,qGAAyCA,MAAM,KAClD,uIAA8BA,MAAM,KAC/B,mDAAgBA,MAAM,KACxB,mDAAgBA,MAAM,KAmHvB,iJAAoGA,MAAM,KACtG,2HAAkGA,MAAM,KAG3G,kDAAkDA,MAAM,KAEzD,sIAAoFA,MAAM,KACtF,0GAA2FA,MAAM,KAGlG,wCAA8BA,MAAM,KACtC,sBAAiBA,MAAM,KAqD5B,gIAAuGA,MAAM,KACxG,4DAAkDA,MAAM,KAC3D,oFAA0EA,MAAM,KAC3E,wDAA8CA,MAAM,KACtD,uBAAuBA,MAAM,KAyElC,8+BAA+LA,MAAM,KAChM,iQAA6EA,MAAM,KAEtF,iOAA6CA,MAAM,KAC9C,uIAA8BA,MAAM,KACtC,6FAAuBA,MAAM,KAiElC,qFAAqFA,MAAM,KACtF,8DAA8DA,MAAM,KAEvE,2DAAqDA,MAAM,KACtD,oCAA8BA,MAAM,KACtC,6BAAuBA,MAAM,KA8ClB,6DAA6DA,MAAM,KAChE,kDAAkDA,MAAM,KAK3E,0FAA0FA,MAAM,KAmB9F,6DAA6DA,MAAM,KAC9D,8BAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KAiDpB,6DAA6DA,MAAM,KAA+B,kDAAkDA,MAAM,KAKxK,0FAA0FA,MAAM,KAmB9F,6DAA6DA,MAAM,KAC9D,8BAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KAgDvB,iIAAmGA,MAAM,KACzG,+GAAqGA,MAAM,KA0CjH,uDAAkDA,MAAM,KAC3D,4EAA6DA,MAAM,KAC9D,gCAA2BA,MAAM,KACnC,4BAAuBA,MAAM,KA4ElC,8FAA2FA,MAAM,KAC5F,kDAAkDA,MAAM,KAC3D,uFAAiFA,MAAM,KAClF,iCAA8BA,MAAM,KACtC,yCAAuBA,MAAM,KAgElC,oGAAoGA,MAAM,KACrG,gEAAgEA,MAAM,KAEzE,yEAAkDA,MAAM,KACnD,iCAA8BA,MAAM,KACtC,0BAAuBA,MAAM,KAqE9B,kbAAoFA,MAAM,KACtF,saAAkFA,MAAM,KAI5F,6QAAgEA,MAAM,KAClE,kRAAgEA,MAAM,KAGtE,mVAAgEA,MAAM,KAC1E,mVAAgEA,MAAM,KAGnE,6FAAuBA,MAAM,KAC/B,6FAAuBA,MAAM,KAsI/B,yGAAoFA,MAAM,KACrF,2DAAkDA,MAAM,KAyE9D,gEAAsDA,MAAM,KACvD,4BAAuBA,MAAM,KAC/B,4BAAuBA,MAAM,KAgLlC,wFAAwFA,MAAM,KACzF,8DAA8DA,MAAM,KAEvE,2DAAsDA,MAAM,KACvD,0CAAqCA,MAAM,KAC7C,4BAAuBA,MAAM,KA2ElC,mFAAgFA,MAAM,KACjF,qDAAkDA,MAAM,KAC3D,kFAA6DA,MAAM,KAC9D,oCAA8BA,MAAM,KACtC,uBAAuBA,MAAM,KA8ClC,wFAAwFA,MAAM,KACzF,kDAAkDA,MAAM,KAC3D,6DAAoDA,MAAM,KACrD,uCAA8BA,MAAM,KACtC,gCAAuBA,MAAM,KAuDlC,khBAAoGA,MAAM,KACrG,wMAAiEA,MAAM,KAE1E,yPAAiDA,MAAM,KAClD,sEAAyBA,MAAM,KACjC,sEAAyBA,MAAM,KApMhD,MAuPM8+d,GAAa,CACfxN,KAAM,QACN/7M,OAAQ,khBAAoGv1Q,MAAM,KAClH+rd,YAAa,wMAAiE/rd,MAAM,KACpF++d,kBAAkB,EAClB3R,SAAU,yPAAiDptd,MAAM,KACjEwtd,cAAe,sEAAyBxtd,MAAM,KAC9Cstd,YAAa,sEAAyBttd,MAAM,KAC5Cg/d,oBAAoB,EACpBhU,eAAgB,CACZV,GAAI,OACJD,IAAK,UACL/lY,EAAG,aACHimY,GAAI,cACJC,IAAK,4CACLC,KAAM,sFAEV4F,cAAe,4HACf1B,KAAK/id,GACgB,iEAAVA,EAEXw7c,UAASlE,EAAMvzO,EAAQi/O,IACf1L,EAAO,GACA,+DAGA,+DAGf2H,SAAU,CACN4E,QAAS,qEACTC,QAAS,iFACTC,SAAU,6DACVC,QAAS,mGACTC,SAAU,mGACV9E,SAAU,KAEdS,aAAc,CACVhnF,OAAQ,wBACRurF,KAAM,+CACNj6V,EAAG,2EACHk6V,GAAI,0CACJh0U,EAAG,6BACHi0U,GAAI,8BACJjnS,EAAG,+CACHknS,GAAI,gDACJ5hW,EAAG,uBACH2qR,GAAI,wBACJ34K,EAAG,mCACH6vP,GAAI,oCACJ37T,EAAG,iBACH47T,GAAI,mBAER9E,SAAS7sd,EAAKyyQ,GACV,MAAMk4E,EAAU01I,GAAW9T,eAAe95M,GACpC4tN,GAAW9T,eAAe95M,GAC1BA,EAEN,OAAgE,IAA5Dk4E,EAAQ/pV,QAAQ,OAAQ+pV,EAAQ5uV,OAAS,GAC5BiE,EAAIsU,OAAO,EAAGtU,EAAIjE,OAAS,IAC3B8f,SAAS7b,EAAIsU,OAAOtU,EAAIjE,OAAS,GAAI,IAAM,KAGrDiE,GAEX8uO,aAAYjtO,EAAM0jd,GAAQ,IACf,KAAOA,EAAQ1jd,EAAK4pV,iBAAmB5pV,EAAKitO,gBA2H3D,YAA8B9uO,GAC1B,OAAO,SAAU6B,GACb,OAAO7B,EAAM,UAA0B,KAAnBk2Q,GAASr0Q,GAAe,SAAM,IAAM,QA/FpD,yGAA6EN,MAAM,KAC9E,4DAAkDA,MAAM,KAC3D,0EAAwDA,MAAM,KACzD,iCAA8BA,MAAM,KACtC,0BAAuBA,MAAM,KAiG9B,gdAAyFA,MAAM,KAC3F,ggBAAiGA,MAAM,KAE1G,gRAAyDA,MAAM,KAE7D,6FAAuBA,MAAM,KAC/B,6FAAuBA,MAAM,KAU7Bi/d,GAAqB,sDACrBA,GAAqB,0CACrBA,GAAqB,oCACpBA,GAAqB,mBA8E3B,yIAAqGj/d,MAAM,KACtG,8DAA8DA,MAAM,KAEvE,mHAAyDA,MAAM,KAC1D,uBAAuBA,MAAM,KAC/B,uBAAuBA,MAAM,KAkElC,0KAAwCA,MAAM,KACzC,qGAAyCA,MAAM,KAClD,uIAA8BA,MAAM,KAC/B,6FAAuBA,MAAM,KAC/B,mDAAgBA,MAAM,+JC1gO8DvF,MAg2CjG,6CAh2CiGA,MA42CjG,gJA52CiGA,cA25CjG,GA35CiGA,MA45C/F,cA55C+FA,MA+5C/F,cA/5C+FA,MAi6CzF,mBAj6CyFA,aAi6CzFuhJ,GAASxyG,EAj6CgF/uC,MAi6ChF4pN,KAAK,WAj6C2E5pN,MAk6C9F,UAl6C8FA,MAk6CxF,GAl6CwFA,gDAk6CxF,GAl6CwFA,MAk6CxFuhJ,uFAl6CwFvhJ,MAqnD3F,kCArnD2FA,MAsnD3F,UAtnD2FA,MAunDlE,GAvnDkEA,8CAunDlE,GAvnDkEA,MAunDlE,iEAvnDkEA,cA8nDzF,aA9nDyFA,MA8nDrE,mBA9nDqEA,MA8nDrEuhJ,YA9nDqEvhJ,MA8nDrE,oBAAS+uC,EA9nD4D/uC,MA8nD5Dyke,iBA9nD4Dzke,MA8nD1C,GA9nD0CA,uDA8nD1C,GA9nD0CA,MA8nD1C8yN,6DA9nD0C9yN,cA+nDzF,aA/nDyFA,MAgoDrF,mBAhoDqFA,MAgoDrFuhJ,YAhoDqFvhJ,MAgoDrF,oBAAS+uC,EAhoD4E/uC,MAgoD5Eyke,gBAhoD4Ezke,CAgoDrF,wBAhoDqFA,MAgoDrFuhJ,YAhoDqFvhJ,MAgoDrF,oBACc+uC,EAjoDuE/uC,MAioDvE0ke,qBAAuB,IAjoDgD1ke,CAgoDrF,wBAhoDqFA,MAgoDrFuhJ,YAhoDqFvhJ,MAgoDrF,oBAEc+uC,EAloDuE/uC,MAkoDvE0ke,qBAAuB,KAloDgD1ke,MAkoDxC,GAloDwCA,uDAkoDxC,GAloDwCA,MAkoDxC8yN,sDAloDwC9yN,MA6nD3F,UA7nD2FA,MA8nDzF,mBA9nDyFA,MA+nDzF,oBA/nDyFA,qCA6nD1E,+BA7nD0EA,MA8nDlF,GA9nDkFA,MA8nDlF,gBA9nDkFA,MA+nDlF,GA/nDkFA,MA+nDlF,mDA/nDkFA,cAuoDzF,aAvoDyFA,MAyoDrF,mBAzoDqFA,MAyoDrFuhJ,YAzoDqFvhJ,QAyoDrFyuF,iBAAS1/C,EAzoD4E/uC,IAyoDrF,GAAS2ke,eAzoD4E3ke,CAyoDrF,wBAzoDqFA,MAyoDrFuhJ,YAzoDqFvhJ,QAyoDrFyuF,iBAEc1/C,EA3oDuE/uC,IAyoDrF,GAEc4ke,aAAc,IA3oDyD5ke,CAyoDrF,wBAzoDqFA,MAyoDrFuhJ,YAzoDqFvhJ,QAyoDrFyuF,iBAGc1/C,EA5oDuE/uC,IAyoDrF,GAGc4ke,aAAc,KA5oDyD5ke,MA4oDjD,GA5oDiDA,gDA0oDrF,yBA1oDqFA,MAwoDrF,SAxoDqFA,MA4oDjD,GA5oDiDA,MA4oDjD,mDA5oDiDA,cA8oDzF,aA9oDyFA,MAgpDnF,mBAhpDmFA,MAgpDnFuhJ,YAhpDmFvhJ,QAgpDnFyuF,iBAAS1/C,EAhpD0E/uC,IAgpDnF,GAAS2ke,eAhpD0E3ke,CAgpDnF,wBAhpDmFA,MAgpDnFuhJ,YAhpDmFvhJ,QAgpDnFyuF,iBACc1/C,EAjpDqE/uC,IAgpDnF,GACc4ke,aAAc,IAjpDuD5ke,CAgpDnF,wBAhpDmFA,MAgpDnFuhJ,YAhpDmFvhJ,QAgpDnFyuF,iBAEc1/C,EAlpDqE/uC,IAgpDnF,GAEc4ke,aAAc,KAlpDuD5ke,MAkpD/C,GAlpD+CA,gDA+oDnF,SA/oDmFA,MAkpD/C,GAlpD+CA,MAkpD/C,mDAlpD+CA,cAqpDzF,aArpDyFA,MAupDnF,mBAvpDmFA,MAupDnFuhJ,YAvpDmFvhJ,QAupDnFyuF,iBAAS1/C,EAvpD0E/uC,IAupDnF,GAAS2ke,gBAvpD0E3ke,MAupD1D,GAvpD0DA,gDAspDnF,SAtpDmFA,MAupD1D,GAvpD0DA,MAupD1D,4CAvpD0DA,MAooD3F,WApoD2FA,MAuoDzF,oBAvoDyFA,MA8oDzF,oBA9oDyFA,MAqpDzF,oBArpDyFA,qCAuoDlF,GAvoDkFA,MAuoDlF,kCAvoDkFA,MA8oDlF,GA9oDkFA,MA8oDlF,mCA9oDkFA,MAqpDlF,GArpDkFA,MAqpDlF,2CArpDkFA,MA4nD7F,QA5nD6FA,MA6nD3F,iBA7nD2FA,MAooD3F,iBApoD2FA,kDA6nDpC,GA7nDoCA,MA6nDpC,6CA7nDoCA,MAooDvE,GApoDuEA,MAooDvE,oDApoDuEA,cA4wD3F,UA5wD2FA,MA6wDvF,8BA7wDuFA,IA6wDvFuhJ,oBAASxyG,EA7wD8E/uC,IA6wDvF,GAAS6ke,eA7wD8E7ke,CA6wDvF,mCA7wDuFA,IA6wDvFuhJ,oBACcxyG,EA9wDyE/uC,IA6wDvF,GACc8ke,eAAkB,IA9wDuD9ke,CA6wDvF,mCA7wDuFA,IA6wDvFuhJ,oBAEcxyG,EA/wDyE/uC,IA6wDvF,GAEc8ke,eAAkB,KA/wDuD9ke,MAkxDzF,UAlxDyFA,MAkxD/C,GAlxD+CA,4CAgxDvF,wBAhxDuFA,CAgxDvF,8BAhxDuFA,MAkxDnF,GAlxDmFA,MAkxDnF,yBAlxDmFA,MAkxD/C,GAlxD+CA,MAkxD/CuhJ,oCAlxD+CvhJ,MA2wD7F,QA3wD6FA,MA4wD3F,iBA5wD2FA,wCA4wDrE,GA5wDqEA,MA4wDrE,+CA5wDqEA,cAm2D3F,UAn2D2FA,MAo2DvF,8BAp2DuFA,IAo2DvFuhJ,oBAASxyG,EAp2D8E/uC,IAo2DvF,GAAS+ke,cAp2D8E/ke,CAo2DvF,mCAp2DuFA,IAo2DvFuhJ,oBACcxyG,EAr2DyE/uC,IAo2DvF,GACcgle,cAAgB,IAr2DyDhle,CAo2DvF,mCAp2DuFA,IAo2DvFuhJ,oBAEcxyG,EAt2DyE/uC,IAo2DvF,GAEcgle,cAAgB,KAt2DyDhle,MAy2DzF,UAz2DyFA,MAy2DhD,GAz2DgDA,4CAu2DvF,wBAv2DuFA,CAu2DvF,8BAv2DuFA,MAy2DnF,GAz2DmFA,MAy2DnF,yBAz2DmFA,MAy2DhD,GAz2DgDA,MAy2DhDuhJ,oCAz2DgDvhJ,MAk2D7F,QAl2D6FA,MAm2D3F,iBAn2D2FA,wCAm2DtE,GAn2DsEA,MAm2DtE,+CAn2DsEA,cAo6D/F,cAp6D+FA,MAu6D7F,8BAv6D6FA,IAu6D7FuhJ,oBAASxyG,EAv6DoF/uC,MAu6DpFile,uBAv6DoFjle,MAy6D7F,GAz6D6FA,oDAw6D7F,sCAx6D6FA,MAy6D7F,GAz6D6FA,MAy6D7F,wEAz6D6FA,cAukE07B,8BAvkE17BA,MAukE+qC,0BAvkE/qCA,aAukE+qCuhJ,GAAexyG,EAvkE9rC/uC,IAukE+qC,GAAekle,gBAvkE9rClle,CAukE+qC,0BAvkE/qCA,aAukE+qCuhJ,GAAgExyG,EAvkE/uC/uC,IAukE+qC,GAAgEmle,iBAvkE/uCnle,CAukE+qC,uBAvkE/qCA,aAukE+qCuhJ,GAA+GxyG,EAvkE9xC/uC,IAukE+qC,GAA+Gole,qBAvkE9xCple,CAukE+qC,2BAvkE/qCA,aAukE+qCuhJ,GAAsKxyG,EAvkEr1C/uC,IAukE+qC,GAAsK0ke,sBAvkEr1C1ke,CAukE+qC,wBAvkE/qCA,aAukE+qCuhJ,GAA2NxyG,EAvkE14C/uC,IAukE+qC,GAA2Nqle,uBAvkE14Crle,sEAukE4hC,8CAvkE5hCA,MAukE8lC,aAvkE9lCA,CAukE8lC,UAvkE9lCA,MAukE8lC,wCAvkE9lCA,MAukE2mD,kDAvkE3mDA,MAukEm+C,YAvkEn+CA,MAukE6jD,wBAvkE7jDA,MAukE2mD,0BAvkE3mDA,qCAukE+nD,GAvkE/nDA,MAukE+nD,mDAvkE/nDA,MAukE41B,GAvkE51BA,MAukE44B,WAvkE54BA,MAukE07B,oCAvkE17BA,+BAukEm+C,mBAvkEn+CA,qCAukEo/B,GAvkEp/BA,MAukEo/B,UAvkEp/BA,MAukEo/B,sBAvkEp/BA,MAukEy+C,GAvkEz+CA,MAukEy+C,2DAvkEz+CA,cAukEwzD,+BAvkExzDA,MAukE2/D,0BAvkE3/DA,aAukE2/DuhJ,GAAexyG,EAvkE1gE/uC,IAukE2/D,GAAekle,gBAvkE1gElle,CAukE2/D,0BAvkE3/DA,aAukE2/DuhJ,GAA8DxyG,EAvkEzjE/uC,IAukE2/D,GAA8Dmle,iBAvkEzjEnle,CAukE2/D,uBAvkE3/DA,aAukE2/DuhJ,GAA2GxyG,EAvkEtmE/uC,IAukE2/D,GAA2Gsle,uBAvkEtmEtle,CAukE2/D,wBAvkE3/DA,aAukE2/DuhJ,GAA+JxyG,EAvkE1pE/uC,IAukE2/D,GAA+Jule,yBAvkE1pEvle,qDAukEw5D,8CAvkEx5DA,MAukEw9D,yCAvkEx9DA,MAukEkvD,WAvkElvDA,MAukEwzD,sCAvkExzDA,sDAukEi3D,GAvkEj3DA,MAukEi3D,UAvkEj3DA,MAukEi3D,yDAvkEj3DA,cAukEo1E,+BAvkEp1EA,MAukEshF,0BAvkEthFA,aAukEshFuhJ,GAAexyG,EAvkEriF/uC,IAukEshF,GAAekle,gBAvkEriFlle,CAukEshF,0BAvkEthFA,aAukEshFuhJ,GAA8DxyG,EAvkEplF/uC,IAukEshF,GAA8Dmle,iBAvkEplFnle,CAukEshF,uBAvkEthFA,aAukEshFuhJ,GAA2GxyG,EAvkEjoF/uC,IAukEshF,GAA2Gwle,sBAvkEjoFxle,CAukEshF,wBAvkEthFA,aAukEshFuhJ,GAA8JxyG,EAvkEprF/uC,IAukEshF,GAA8Jyle,wBAvkEprFzle,qDAukEm7E,8CAvkEn7EA,MAukEm/E,yCAvkEn/EA,MAukE+wE,WAvkE/wEA,MAukEo1E,sCAvkEp1EA,sDAukE64E,GAvkE74EA,MAukE64E,UAvkE74EA,MAukE64E,8CAvkE74EA,MAukEqzF,WAvkErzFA,CAukEqzF,eAvkErzFA,MAukEo6F,WAvkEp6FA,cAukE07F,eAvkE17FA,MAukE4+F,YAvkE5+FA,0DAukEmmG,WAvkEnmGA,CAukEmmG,eAvkEnmGA,MAukE83G,mBAvkE93GA,aAukE83GuhJ,GAAUxyG,EAvkEx4G/uC,IAukE83G,GAAU0le,aAvkEx4G1le,MAukEq5G,GAvkEr5GA,yCAukEgpG,iCAvkEhpGA,CAukEgpG,mCAvkEhpGA,CAukEgpG,sCAvkEhpGA,MAukEq5G,GAvkEr5GA,MAukEq5GuhJ,iDAvkEr5GvhJ,cAukEu8G,WAvkEv8GA,CAukEu8G,eAvkEv8GA,MAukEwtH,mBAvkExtHA,aAukEwtHuhJ,GAAUxyG,EAvkEluH/uC,IAukEwtH,GAAU2le,cAvkEluH3le,MAukEgvH,GAvkEhvHA,yCAukEi/G,iCAvkEj/GA,CAukEi/G,mCAvkEj/GA,CAukEi/G,sCAvkEj/GA,MAukEgvH,GAvkEhvHA,MAukEgvHuhJ,0CAvkEhvHvhJ,MAukE+gG,YAvkE/gGA,MAukEmmG,mBAvkEnmGA,MAukEu8G,mBAvkEv8GA,qCAukE4zG,GAvkE5zGA,MAukE4zG,uBAvkE5zGA,MAukEopH,GAvkEppHA,MAukEopH,yDAvkEppHA,cAukEm2H,WAvkEn2HA,CAukEm2H,4BAvkEn2HA,MAukEylI,wBAvkEzlIA,aAukEylIuhJ,GAAaxyG,EAvkEtmI/uC,IAukEylI,GAAa4le,yBAvkEtmI5le,yCAukEi+H,GAvkEj+HA,MAukEi+H,8BAvkEj+HA,CAukEi+H,wBAvkEj+HA,CAukEi+H,0EAvkEj+HA,cAukEsd,UAvkEtdA,CAukEsd,WAvkEtdA,MAukE0oB,uCAvkE1oBA,aAukE0oBuhJ,GAA8BxyG,EAvkExqB/uC,MAukEwqB6le,0BAvkExqB7le,MAukE8tB,WAvkE9tBA,uBAukE41B,2BAvkE51BA,MAukEkvD,kBAvkElvDA,MAukE+wE,kBAvkE/wEA,cAukEqzF,kBAvkErzFA,MAukE+gG,kBAvkE/gGA,cAukEm2H,kBAvkEn2HA,sCAukEmf,4BAvkEnfA,MAukE2lB,GAvkE3lBA,MAukE2lB,yCAvkE3lBA,MAukEmwB,GAvkEnwBA,MAukEmwB,WAvkEnwBA,MAukEmwB,iBAvkEnwBA,MAukE22B,GAvkE32BA,MAukE22B,sBAvkE32BA,MAukEwvD,GAvkExvDA,MAukEwvD,wBAvkExvDA,MAukEqxE,GAvkErxEA,MAukEqxE,uBAvkErxEA,MAukE21F,GAvkE31FA,MAukE21F,WAvkE31FA,MAukEqjG,GAvkErjGA,MAukEqjG,uCAvkErjGA,MAukE84H,GAvkE94HA,MAukE84H,qGAvkE94HA,cAsuFkiC,8BAtuFliCA,MAsuFuxC,0BAtuFvxCA,aAsuFuxCuhJ,GAAexyG,EAtuFtyC/uC,IAsuFuxC,GAAekle,gBAtuFtyClle,CAsuFuxC,0BAtuFvxCA,aAsuFuxCuhJ,GAAgExyG,EAtuFv1C/uC,IAsuFuxC,GAAgEmle,iBAtuFv1Cnle,CAsuFuxC,uBAtuFvxCA,aAsuFuxCuhJ,GAA+GxyG,EAtuFt4C/uC,IAsuFuxC,GAA+Gole,qBAtuFt4Cple,CAsuFuxC,2BAtuFvxCA,aAsuFuxCuhJ,GAAsKxyG,EAtuF77C/uC,IAsuFuxC,GAAsK0ke,sBAtuF77C1ke,CAsuFuxC,wBAtuFvxCA,aAsuFuxCuhJ,GAA2NxyG,EAtuFl/C/uC,IAsuFuxC,GAA2Nqle,uBAtuFl/Crle,sEAsuFooC,8CAtuFpoCA,MAsuFssC,aAtuFtsCA,CAsuFssC,UAtuFtsCA,MAsuFssC,wCAtuFtsCA,MAsuFmtD,kDAtuFntDA,MAsuF2kD,YAtuF3kDA,MAsuFqqD,wBAtuFrqDA,MAsuFmtD,0BAtuFntDA,qCAsuFuuD,GAtuFvuDA,MAsuFuuD,mDAtuFvuDA,MAsuFo8B,GAtuFp8BA,MAsuFo/B,WAtuFp/BA,MAsuFkiC,oCAtuFliCA,+BAsuF2kD,mBAtuF3kDA,qCAsuF4lC,GAtuF5lCA,MAsuF4lC,UAtuF5lCA,MAsuF4lC,sBAtuF5lCA,MAsuFilD,GAtuFjlDA,MAsuFilD,2DAtuFjlDA,cAsuFg6D,+BAtuFh6DA,MAsuFmmE,0BAtuFnmEA,aAsuFmmEuhJ,GAAexyG,EAtuFlnE/uC,IAsuFmmE,GAAekle,gBAtuFlnElle,CAsuFmmE,0BAtuFnmEA,aAsuFmmEuhJ,GAA8DxyG,EAtuFjqE/uC,IAsuFmmE,GAA8Dmle,iBAtuFjqEnle,CAsuFmmE,uBAtuFnmEA,aAsuFmmEuhJ,GAA2GxyG,EAtuF9sE/uC,IAsuFmmE,GAA2Gsle,uBAtuF9sEtle,CAsuFmmE,wBAtuFnmEA,aAsuFmmEuhJ,GAA+JxyG,EAtuFlwE/uC,IAsuFmmE,GAA+Jule,yBAtuFlwEvle,qDAsuFggE,8CAtuFhgEA,MAsuFgkE,yCAtuFhkEA,MAsuF01D,WAtuF11DA,MAsuFg6D,sCAtuFh6DA,sDAsuFy9D,GAtuFz9DA,MAsuFy9D,UAtuFz9DA,MAsuFy9D,yDAtuFz9DA,cAsuF47E,+BAtuF57EA,MAsuF8nF,0BAtuF9nFA,aAsuF8nFuhJ,GAAexyG,EAtuF7oF/uC,IAsuF8nF,GAAekle,gBAtuF7oFlle,CAsuF8nF,0BAtuF9nFA,aAsuF8nFuhJ,GAA8DxyG,EAtuF5rF/uC,IAsuF8nF,GAA8Dmle,iBAtuF5rFnle,CAsuF8nF,uBAtuF9nFA,aAsuF8nFuhJ,GAA2GxyG,EAtuFzuF/uC,IAsuF8nF,GAA2Gwle,sBAtuFzuFxle,CAsuF8nF,wBAtuF9nFA,aAsuF8nFuhJ,GAA8JxyG,EAtuF5xF/uC,IAsuF8nF,GAA8Jyle,wBAtuF5xFzle,qDAsuF2hF,8CAtuF3hFA,MAsuF2lF,yCAtuF3lFA,MAsuFu3E,WAtuFv3EA,MAsuF47E,sCAtuF57EA,sDAsuFq/E,GAtuFr/EA,MAsuFq/E,UAtuFr/EA,MAsuFq/E,8CAtuFr/EA,MAsuF65F,WAtuF75FA,CAsuF65F,eAtuF75FA,MAsuF4gG,WAtuF5gGA,cAsuFkiG,eAtuFliGA,MAsuFolG,YAtuFplGA,0DAsuF2sG,WAtuF3sGA,CAsuF2sG,eAtuF3sGA,MAsuFs+G,mBAtuFt+GA,aAsuFs+GuhJ,GAAUxyG,EAtuFh/G/uC,IAsuFs+G,GAAU0le,aAtuFh/G1le,MAsuF6/G,GAtuF7/GA,yCAsuFwvG,iCAtuFxvGA,CAsuFwvG,mCAtuFxvGA,CAsuFwvG,sCAtuFxvGA,MAsuF6/G,GAtuF7/GA,MAsuF6/GuhJ,iDAtuF7/GvhJ,cAsuF+iH,WAtuF/iHA,CAsuF+iH,eAtuF/iHA,MAsuFg0H,mBAtuFh0HA,aAsuFg0HuhJ,GAAUxyG,EAtuF10H/uC,IAsuFg0H,GAAU2le,cAtuF10H3le,MAsuFw1H,GAtuFx1HA,yCAsuFylH,iCAtuFzlHA,CAsuFylH,mCAtuFzlHA,CAsuFylH,sCAtuFzlHA,MAsuFw1H,GAtuFx1HA,MAsuFw1HuhJ,0CAtuFx1HvhJ,MAsuFunG,YAtuFvnGA,MAsuF2sG,mBAtuF3sGA,MAsuF+iH,mBAtuF/iHA,qCAsuFo6G,GAtuFp6GA,MAsuFo6G,uBAtuFp6GA,MAsuF4vH,GAtuF5vHA,MAsuF4vH,yDAtuF5vHA,cAsuF28H,WAtuF38HA,CAsuF28H,4BAtuF38HA,MAsuFisI,wBAtuFjsIA,aAsuFisIuhJ,GAAaxyG,EAtuF9sI/uC,IAsuFisI,GAAa4le,yBAtuF9sI5le,yCAsuFykI,GAtuFzkIA,MAsuFykI,8BAtuFzkIA,CAsuFykI,wBAtuFzkIA,CAsuFykI,0EAtuFzkIA,cAsuF8jB,UAtuF9jBA,CAsuF8jB,WAtuF9jBA,MAsuFkvB,uCAtuFlvBA,aAsuFkvBuhJ,GAA8BxyG,EAtuFhxB/uC,MAsuFgxB6le,0BAtuFhxB7le,MAsuFs0B,WAtuFt0BA,uBAsuFo8B,2BAtuFp8BA,MAsuF01D,kBAtuF11DA,MAsuFu3E,kBAtuFv3EA,cAsuF65F,kBAtuF75FA,MAsuFunG,kBAtuFvnGA,cAsuF28H,kBAtuF38HA,sCAsuF2lB,4BAtuF3lBA,MAsuFmsB,GAtuFnsBA,MAsuFmsB,yCAtuFnsBA,MAsuF22B,GAtuF32BA,MAsuF22B,WAtuF32BA,MAsuF22B,iBAtuF32BA,MAsuFm9B,GAtuFn9BA,MAsuFm9B,sBAtuFn9BA,MAsuFg2D,GAtuFh2DA,MAsuFg2D,wBAtuFh2DA,MAsuF63E,GAtuF73EA,MAsuF63E,uBAtuF73EA,MAsuFm8F,GAtuFn8FA,MAsuFm8F,WAtuFn8FA,MAsuF6pG,GAtuF7pGA,MAsuF6pG,uCAtuF7pGA,MAsuFs/H,GAtuFt/HA,MAsuFs/H,qDApzFrlI8le,SAAN,QACI7me,cAEIK,KAAKqhJ,kBAAmB,EAExBrhJ,KAAKyme,QAAS,EAEdzme,KAAKshJ,YAAa,EAIlBthJ,KAAKy/R,UAAY,MAIjBz/R,KAAK0me,oBAAqB,EAI1B1me,KAAK+zP,eAAiB,cAEtB/zP,KAAK2me,cAAgB,EAIrB3me,KAAK4me,iBAAkB,EACvB5me,KAAK6me,gBAAkB,IAEvB7me,KAAK8me,eAAiB,MAItB9me,KAAK+me,iBAAmB,IAExB/me,KAAKgne,WAAa,OAClBhne,KAAKine,UAAY,OACjBjne,KAAKkne,SAAW,IAChBlne,KAAKmne,WAAa,OAClBnne,KAAKone,UAAY,OACjBpne,KAAKqne,YAAc,IAInBrne,KAAKsne,iBAAkB,EAIvBtne,KAAKune,iBAAkB,EAIvBvne,KAAKwne,cAAgB,SAIrBxne,KAAKyne,cAAgB,QAIrBzne,KAAK0ne,iBAAmB,QAIxB1ne,KAAK2ne,iBAAmB,QAIxB3ne,KAAK4ne,uBAAyB,eAI9B5ne,KAAK6ne,gBAAiB,EAItB7ne,KAAK8ne,iBAAmB,CAAC,MAAO,WAGxCtB,SAAmBx/d,UAAnB,0BAA+Gw/d,IAC/GA,EAAmBr/d,WADkFzG,MACrG,OAAmH8le,EAAnH7le,QAAmH6le,EAAnH,qBAAmJ,SA/E7IA,MAuFN,MAAMuB,GAA8B,mCAC9BC,IAAsBhkZ,SAAQ,sBAAuB,EACvDzwD,SAAM,iBAAiB0wD,SAAM,CAAEZ,OAAQ,IAAK89D,SAAU,aACtD/8D,SAAW,qBAAsB,EAC7BH,SAAM,CAAEZ,OAAQ,EAAG89D,SAAU,YAC7B98D,SAAQ0jZ,OAEZx0c,SAAM,eAAe0wD,SAAM,CAAEZ,OAAQ,IAAK89D,SAAU,aACpD/8D,SAAW,mBAAoB,EAC3BH,SAAM,CAAEZ,OAAQ,IAAK89D,SAAU,YAC/B98D,SAAQ0jZ,OAEZ3jZ,SAAW,mBAAmBC,SAAQ,SAG1C,SACI1kF,cACIK,KAAK+zP,eAAiB,GACtB/zP,KAAKioe,aAAe,GACpBjoe,KAAKkoe,YAAc,GACnBloe,KAAKmoe,iBAAmB,IAAI1yY,MAC5Bz1F,KAAKooe,gBAAkB,IAAI3yY,MAE3B4yY,YAAQ9me,GACR,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGuge,WAAWhne,GAExEine,YAAQjne,GACR,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGyge,WAAWlne,GAExEmne,iBAAanne,GACb,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAG2ge,gBAAgBpne,GAE7Eqne,kBAAcrne,GACd,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAG6ge,iBAAiBtne,GAE9Eune,iBAAavne,GACb,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAG+ge,gBAAgBxne,GAE7EgqK,eAAWhqK,GACX,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGghe,YAAYzne,GAEzE0ne,sBAAkB1ne,GAClB,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGkhe,qBAAqB3ne,GAElF4ne,qBAAiB5ne,GACjB,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGohe,oBAAoB7ne,GAEjF8ne,kBAAc9ne,GACdvB,KAAKspe,eAAiB/ne,EACtBvB,KAAKmoe,iBAAiB/7d,cACtBpM,KAAKmoe,iBAAiBh0c,IAAIn0B,KAAKspe,eAAe3he,UAAUpG,IACpDvB,KAAKupe,oBAAsBhoe,GAASA,EAAMd,OAAS,KAGvD4oe,oBACA,OAAOrpe,KAAKspe,eAIhBzD,YAAYvwc,IAEZswc,WAAWtwc,IAEXwwc,gBAAgBxwc,IAEhB8vc,iBAAiB9vc,IAEjB0wc,kBAAkB1wc,IAElB4wc,iBAAiB5wc,IAEjBk0c,kBAAkBjje,EAAM2mB,IAExB64c,iBAAiBz1P,IAEjB21P,mBAAmB3wc,IAEnB6wc,kBAAkB7wc,IAElBgxc,mBAAmBmD,IAEnBrD,YAEAC,aAEAqD,iBAAiBp0c,GACbA,EAAM0/I,uBAIR20T,SAAN,QACIC,YACI,MAAO,CAAEzme,KAAMwme,EAAoBE,WAEvC1yN,SACI,MAAO,CAAEh0Q,KAAMwme,EAAoBG,QAEvCriM,OACI,MAAO,CAAEtkS,KAAMwme,EAAoBI,MAEvCxuc,OAAOh1B,GACH,MAAO,CACHpD,KAAMwme,EAAoBK,OAC1Bt/b,QAASnkC,GAGjB0je,WAAW1je,EAAM2mB,GACb,MAAO,CACH/pB,KAAMwme,EAAoBO,YAC1Bx/b,QAAS,CAAEnkC,OAAM2mB,UAGzBi9c,eAAe70c,GACX,MAAO,CACHnyB,KAAMwme,EAAoBS,gBAC1B1/b,QAASpV,GAGjBswc,WAAWtwc,GACP,MAAO,CACHnyB,KAAMwme,EAAoBU,YAC1B3/b,QAASpV,GAGjBg1c,aAAajzd,GACT,MAAO,CACHlU,KAAMwme,EAAoBY,gBAC1B7/b,QAASrzB,GAGjB03a,WAAWnsb,GACP,MAAO,CACHO,KAAMwme,EAAoBa,YAC1B9/b,QAAS9nC,GAIjB6ne,YAAYlpe,GACR,MAAO,CACH4B,KAAMwme,EAAoBe,aAC1Bhgc,QAASnpC,GAGjB+je,SAAShwc,GACL,MAAO,CACHnyB,KAAMwme,EAAoBgB,MAC1Bjgc,QAASpV,EAAMs1c,UAAYt1c,EAAMu1c,KAAKtke,KAAO,MAGrD8he,QAAQ9he,GACJ,MAAO,CACHpD,KAAMwme,EAAoBmB,aAC1Bpgc,QAASnkC,GAGjBiie,QAAQjie,GACJ,MAAO,CACHpD,KAAMwme,EAAoBoB,aAC1Brgc,QAASnkC,GAGjBmie,aAAahtN,GACT,MAAO,CACHv4Q,KAAMwme,EAAoBqB,iBAC1Btgc,QAASgxO,GAGjBktN,cAAca,GACV,MAAO,CACHtme,KAAMwme,EAAoBsB,kBAC1Bvgc,QAAS++b,GAGjBX,aAAaW,GACT,MAAO,CACHtme,KAAMwme,EAAoBuB,iBAC1Bxgc,QAAS++b,GAGjBl+T,WAAWhqK,GACP,MAAO,CACH4B,KAAMwme,EAAoBwB,gBAC1Bzgc,QAASnpC,GAGjB2ne,qBAAqB3ne,GACjB,MAAO,CACH4B,KAAMwme,EAAoByB,wBAC1B1gc,QAASnpC,GAGjB6ne,oBAAoB7ne,GAChB,MAAO,CACH4B,KAAMwme,EAAoB0B,uBAC1B3gc,QAASnpC,GAGjB2sV,UAAUx4E,GACN,MAAO,CACHvyQ,KAAMwme,EAAoB2B,WAC1B5gc,QAASgrO,IAIrBi0N,SAAoBE,UAAY,sCAChCF,EAAoBG,OAAS,wCAC7BH,EAAoBI,KAAO,yBAC3BJ,EAAoBK,OAAS,2BAC7BL,EAAoBY,gBAAkB,+BACtCZ,EAAoBU,YAAc,gCAClCV,EAAoBa,YAAc,qCAClCb,EAAoBgB,MAAQ,0BAC5BhB,EAAoBS,gBAAkB,gCACtCT,EAAoBmB,aAAe,4BACnCnB,EAAoBoB,aAAe,4BACnCpB,EAAoBqB,iBAAmB,iCACvCrB,EAAoBsB,kBAAoB,kCACxCtB,EAAoBuB,iBAAmB,iCACvCvB,EAAoBwB,gBAAkB,+BACtCxB,EAAoByB,wBAA0B,uCAC9CzB,EAAoB0B,uBAAyB,sCAC7C1B,EAAoB2B,WAAa,qCACjC3B,EAAoBO,YAAc,2BAClCP,EAAoBe,aAAe,uCACnCf,EAAoB3ie,UAApB,0BAAgH2ie,IAChHA,EAAoBxie,WAlPiFzG,MAkPrG,OAAoHipe,EAApHhpe,QAAoHgpe,EAApH,qBAAqJ,aAvI/IA,MA6IA4B,SAAN,QACI5re,cACIK,KAAKwre,eAAiB,KACtBxre,KAAK2nR,QAAU,IAAIngR,KAAgBxH,KAAKwre,gBACxCxre,KAAKyre,cAAgBzre,KAAK2nR,QAAQ7jR,eAElC4xQ,aACA,OAAO11Q,KAAK2nR,QAEZ+jN,mBACA,OAAO1re,KAAKyre,cAEZE,oBACA,OAAO3re,KAAK2nR,QAAQruG,WAExB0kR,IAAItoL,GACIA,IAAW11Q,KAAK2re,eAGpB3re,KAAK2nR,QAAQzjR,KAAKwxQ,IAG1B61N,SAAgBvke,UAAhB,0BAA4Guke,IAC5GA,EAAgBpke,WA/QqFzG,MA+QrG,OAAgH6qe,EAAhH5qe,QAAgH4qe,EAAhH,qBAA6I,aAvBvIA,MA6BAK,SAAN,QACIjse,YAAYkse,EAAUC,GAClB9re,KAAK6re,SAAWA,EAChB7re,KAAK8re,eAAiBA,EACtB9re,KAAK8lO,MAAQ,GAEjBrjO,KAAKspe,GACD,YAAKC,OAASD,EACP/re,KAGX2lK,SAASpkK,GACL,IAAIyG,EACmB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAAStwc,OAAOh6B,IAE7F0qe,cAAc1qe,GACV,IAAIyG,EACmB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASpB,YAAYlpe,IAElGgne,WAAWhne,GACP,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASxD,QAAQ9me,IACnFvB,KAEXyoe,WAAWlne,GACP,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASrD,QAAQjne,IACnFvB,KAEX2oe,gBAAgBpne,GACZ,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASnD,aAAanne,IACxFvB,KAEX6oe,iBAAiBtne,GACb,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASjD,cAAcrne,IACzFvB,KAEX+oe,gBAAgBxne,GACZ,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAAS/C,aAAavne,IACxFvB,KAEXgpe,YAAYzne,GACR,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAAStgU,WAAWhqK,IACtFvB,KAEXkpe,qBAAqB3ne,GACjB,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAAS3C,qBAAqB3ne,IAChGvB,KAEXope,oBAAoB7ne,GAChB,IAAIyG,EACJ,OAAuB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASzC,oBAAoB7ne,IAC/FvB,KAGX+ub,WAAWjqW,GACP,IAAI98E,EACJ,MAAM+yD,GAAWn5D,OAAOc,OAAO,CAAEgzQ,OAAQ11Q,KAAK8re,eAAeH,eAAiB7mZ,GAC9E,OAAuB,QAAtB98E,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAAS98C,WAAWh0X,KACtF/6D,KAGXkse,YAAY9+b,GACR,OAAKptC,KAAKgse,QAGV5+b,EAAU++b,aAAense,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAM44c,cACtDrhe,MAAKsJ,OAAOo0M,KAAWA,IAC5Bp7K,EAAUi8b,cAAgBrpe,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAM64c,eACvDthe,MAAKsJ,OAAOonQ,KAAYA,IAE7BpuO,EAAUi/b,eAAiBrse,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAM+4c,uBACxDxhe,MAAKsJ,OAAOonQ,KAAYA,IAE7BpuO,EAAUm/b,cAAgBvse,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAMi5c,sBACvD1he,MAAKsJ,OAAO27U,KAAWA,IAC5B3iT,EAAUq/b,SAAWzse,KAAKgse,OAAOzwc,OAAOhI,IAAW,IAAIvrB,GAAI,OAA6B,QAArBA,GAAKurB,EAAM+2L,YAAyB,IAAPtiN,QAAgB,EAASA,GAAG4mB,OAC5Hwe,EAAUksX,UAAWrnX,QAAc,CAC/BjyC,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAMqzc,iBAClC5me,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAMozc,iBAEjC77d,MAAKrF,OAAKgzH,IAAY,CACvBmuW,gBAAiBnuW,EAAO,GACxBkuW,cAAeluW,EAAO,OAEnBz4H,MArBIA,KAwBf0se,iBAAiBt/b,GACbA,SAAUy4b,YAAevwc,IACrB,IAAIttB,GACmB,QAAtBA,GAAKhI,KAAKgse,cAA2B,IAAPhke,IAAyBA,GAAGm4B,SAASngC,KAAK6re,SAAS1B,eAAe70c,KAErG8X,EAAUw4b,WAActwc,IACpB,IAAIttB,GACmB,QAAtBA,GAAKhI,KAAKgse,cAA2B,IAAPhke,IAAyBA,GAAGm4B,SAASngC,KAAK6re,SAASvB,aAAah1c,EAAMje,QAEzG+1B,EAAU04b,gBAAmBxwc,IACzB,IAAIttB,GACJ,MAAM2ke,GAAQr3c,EAAMu1c,KAChB8B,GAAMC,cAAgBD,GAAMphU,aAGT,QAAtBvjK,GAAKhI,KAAKgse,cAA2B,IAAPhke,IAAyBA,GAAGm4B,SAASngC,KAAK6re,SAASvG,SAAShwc,IAC3Fq3c,GAAM/B,UAAYt1c,EAAMs1c,YAE5Bx9b,EAAU44b,kBAAqB1wc,IAC3BA,EAAMu1c,KAAKD,UAAYt1c,EAAMs1c,WAEjCx9b,EAAU84b,iBAAoB5wc,IAC1BA,EAAMu1c,KAAKD,UAAYt1c,EAAMs1c,WAE1B5qe,KAEX6se,gCACI,OAAK7se,KAAKgse,QAGVhse,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAAOzwc,OAAOhI,GAASA,EAAM+2L,MAAM3iN,UAAU,KAC9D,IAAIK,EACmB,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,GAAyBA,EAAGm4B,SAASngC,KAAK6re,SAASjC,gBAGtF5pe,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAMu5c,aACtBhie,MAAKsJ,OAAO24d,KAAgBA,IAC5Bple,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAAS10N,aAExHn3Q,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAMy5c,iBACtBlie,MAAKsJ,OAAOi8N,KAAWA,IACvB1oO,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM05c,cACtBnie,MAAKsJ,OAAO64d,KAAkBA,IAC9Btle,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM25c,eACtBpie,MAAKsJ,OAAO84d,KAAmBA,IAC/Bvle,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM84c,gBACtB1ke,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM45c,oBACtBrie,MAAKsJ,OAAOmf,KAAWA,IACvB5rB,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM65c,aACtBtie,MAAKsJ,OAAOg5d,KAAiBA,IAC7Bzle,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM01c,mBACtBn+d,MAAKsJ,OAAO60d,KAAuBA,IACnCthe,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,GAASA,EAAM41c,kBACtBr+d,MAAKsJ,OAAO+0d,KAAsBA,IAClCxhe,UAAU,KAAQ,IAAIK,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAASpkM,WAExHznS,KAAK8lO,MAAMl1N,KAAK5Q,KAAK8re,eAAeJ,aAC/B/je,UAAU+tQ,IAAY,IAAI1tQ,EAAI,OAA8B,QAAtBA,EAAKhI,KAAKgse,cAA2B,IAAPhke,OAAgB,EAASA,EAAGm4B,SAASngC,KAAK6re,SAAS39I,UAAUx4E,OAC/H11Q,MArDIA,KAuDfklD,UACI,UAAW/4C,KAAOnM,KAAK8lO,MACnB35N,EAAIC,eAIhBw/d,SAAoB5ke,UAApB,0BAAgH4ke,GA3cXlre,MA2cgDipe,IA3chDjpe,MA2cgF6qe,MACrLK,EAAoBzke,WA5ciFzG,MA4crG,OAAoHkre,EAApHjre,QAAoHire,EAApH,qBAAqJ,aAvL/IA,MA0MN,MAAMyB,GAAe,CAAE9me,KAAM,IAAIpF,KAAQytB,KAAM,OACzC0+c,GAAyB1re,OAAOc,OAAO,IAAI8je,GAAsB,CACnE9wN,OAAQ,KACRprD,KAAM+iR,GACNH,cAAe,GACff,aAAc,GACdoB,iBAnBwB,CACxBnqZ,MAAO,EACPC,OAAQ,KAuCZ,YAAyB98E,EAAMg2C,EAAKC,GAChC,MAAMgxb,EAAWjxb,GAAOynb,GAASZ,GAAM78d,EAAM,SAAUg2C,EAAK,OACtDkxb,GAAWjxb,GAAO6nb,GAAQrV,GAAQzod,EAAM,SAAUi2C,EAAK,OAC7D,OAAOgxb,GAAYC,KAAY,EAEnC,YAAwBlne,EAAMg2C,EAAKC,GAC/B,MAAMgxb,EAAWjxb,GAAOynb,GAASZ,GAAM78d,EAAM,QAASg2C,EAAK,OACrDkxb,GAAWjxb,GAAO6nb,GAAQrV,GAAQzod,EAAM,QAASi2C,EAAK,OAC5D,OAAOgxb,GAAYC,KAAY,EAEnC,YAAwBlne,EAAMqie,EAAe/iN,GACzC,SAAK+iN,GAAkB13d,EAAQ03d,IAAmBA,EAAcnoe,UAG5DolR,GAAiB,SAATA,IAAoB+iN,EAAc,GAAGjuN,UACtCiuN,EAAc3/d,KAAMyke,GAAiBC,GAAOpne,EAAMmne,EAAc,SAEpE9E,EAAc3/d,KAAMyke,GAAiBC,GAAOpne,EAAMmne,EAAc,UAE3E,YAAuBnne,EAAMuie,EAAcjjN,GACvC,SAAKijN,GAAiB53d,EAAQ43d,IAAkBA,EAAaroe,UAGrDqoe,EAAa7/d,KAAM2ke,GAAgBD,GAAOpne,EAAMqne,EAAa/nN,GAAQ,SAEjF,YAAqCtyP,EAAOs6c,EAAgB,GACxD,MAAMj5c,EAAQrB,GAASA,EAAM45c,oBAAsB55c,EAAM45c,mBAAmBU,GAC5E,OAAkB,MAAVj5c,OAAqC,EAASA,EAAMm7T,MAAM,KAAOn7T,EAAMm7T,MAAM,GAAG,IAAMn7T,EAAMm7T,MAAM,GAAG,GAAGxpV,KAEpH,YAAgCune,EAAQtF,GAKpC,OAJKsF,IAEAtF,IAEAsF,EAAOrte,SAAWqte,EAAO,GAAGvse,OAEjCuse,EAAO9rd,QAASjI,KACPA,IAASA,EAAKxY,OAEfwY,EAAKxY,iBAAiBJ,QAEpB4Y,EAAKxY,iBAAiBiE,OAASuU,EAAKxY,MAAMd,UAEhDsZ,EAAKxY,MAAQwse,GAA6Bh0d,EAAKxY,MAAOine,IAC/CsF,IAEJA,EAEX,YAAsBvne,EAAMiie,GAOxB,OANKjie,IAEAiie,GAEDjie,aAAgBf,QAAUe,EAAK9F,QAE/B8F,aAAgBpF,KACToF,EACJwne,GAA6Bxne,EAAMiie,GAE9C,YAAsCjie,EAAMiie,GACxC,OAAIjie,aAAgBf,MACKe,EAAKd,IAAIsU,GACrBA,IAEDsqd,GAAQtqd,EAAMyud,EAAS,UACvBzud,EAAOyud,GACJzud,IAIRxT,EAEX,YAAoChF,GAChC,OAAKA,GAEEyse,GAAqBzse,GAEhC,YAA8CA,GAC1C,OAAgB,MAAVA,OAAqC,EAASA,EAAMd,SAE1Dc,EAAMkE,IAAKc,GACFA,GAGEyne,GAAqBzne,IAEzBhF,EAEX,YAA8BgF,GAC1B,MAAMoqB,EAAM,IAAIxvB,KAChBoF,SAAK+nd,gBAAgB39b,EAAI6I,mBACzBjzB,EAAK6nd,WAAWz9b,EAAIkqP,cACpBt0Q,EAAKgyQ,WAAW5nP,EAAI6nP,cACpBjyQ,EAAKuxQ,SAASnnP,EAAIiqP,YACXr0Q,EAGX,YAAsB3D,EAASkpB,GAC3B,IAAImid,EAAYrre,EAAQsre,YACxB,MAAMC,EAAS,IAAI3oe,MAAM5C,EAAQygF,QACjC,QAAS/1E,GAAI,EAAGA,GAAI1K,EAAQygF,OAAQ/1E,KAAK,CACrC6ge,EAAO7ge,IAAK,IAAI9H,MAAM5C,EAAQwgF,OAC9B,QAAS71E,GAAI,EAAGA,GAAI3K,EAAQwgF,MAAO71E,KAC/B4ge,EAAO7ge,IAAGC,IAAKue,EAAGmid,GAClBA,EAAYG,GAAUH,EAAWrre,EAAQ81J,OAGjD,OAAOy1U,EAIX,YAA0BE,EAAczre,GACpC,MAAM0re,EDrfV,YAA4B/ne,GACxB,OAAO8wQ,GAAW9wQ,EAAKitO,cAAejtO,EAAKm0Q,WAAY,EAAGn0Q,EAAKq0Q,WAAYr0Q,EAAKiyQ,aAAcjyQ,EAAKs0Q,cCoflF0zN,CAAmBF,GAC9BH,EApIV,YAAkC3ne,EAAM3D,GACpC,GD1WJ,YAA0B2D,EAAM6sd,GAC5B,OAAO7sd,EAAKu0Q,WAAazrD,OAAO+jQ,GCyW5Bob,CAAiBjoe,EAAM3D,EAAQwwd,gBAC/B,OAAO7sd,EAEX,MACMksK,EAGV,YAA6B+8K,EAASi/I,GAClC,MAAMC,EAAqBr/Q,OAAOo/Q,GAClC,GAAI/5b,MAAMg6b,GACN,OAAO,EAEX,GAA2B,IAAvBA,EACA,OAAOl/I,EAEX,MAAM/8K,EAAS+8K,EAAUk/I,EAAqB,EAC9C,OAAOj8T,EAAS,EAAIA,EAAS,EAAIA,EAZlBk8T,CADC7zN,GAAOv0Q,GACqB3D,EAAQwwd,gBACpD,OAAOgb,GAAU7ne,EAAM,CAAE+pO,KAAM79D,IA8HXm8T,CAAyBN,EAAU1re,GASvD,MAAO,CACHise,WAFeC,GANG,CAClB1rZ,MAAOxgF,EAAQwgF,OAAS,EACxBC,OAAQzgF,EAAQygF,QAAU,EAC1B6qZ,cACAx1U,MAAO,CAAE43E,IAAK,IAE6B/pO,IAAQA,IAGnD8pO,MAAOi+P,GA0Bf,YAAwBO,EAAY13N,EAAQzB,GACxC,OAAOm5N,EAAWppe,IAAKi2Q,GAAUA,EAAK,GAAK8L,GAAW9L,EAAK,GAAIvE,EAAQzB,GAAU,IAErF,YAA4BA,GACxB,MAAMiS,EAAU8mM,GAAU/4M,GACpB29M,EAAW1rM,EAAQ8rM,gBACnBL,EAAiBzrM,EAAQyrM,iBAC/B,MAAO,IAAIC,EAASztd,MAAMwtd,MAAoBC,EAASztd,MAAM,EAAGwtd,IA8FpE,YAAuBxkc,EAAMmgd,GACzB,OAAOA,GAAUngd,GAAQmgd,EAG7B,MAEMC,GAAU,CAAE3+P,MAAO,GACzB,YAA8B4+P,EAAUC,GAOpC,MAAO,CACH1zN,OALgBszN,GADE,CAAE1rZ,MAJZ,EAI4BC,OAL3B,EAK6C6qZ,YADtClf,GAAQigB,EAAU,QACiCv2U,MAAOs2U,IAC9Bzoe,KAAS,CACrDA,QACAzD,MAAO0kR,GAAWjhR,GAAM2oe,EAAc/H,WAAY+H,EAAcx5N,WAIhEsxN,WAAY,GACZC,UAAWz/M,GAAWynN,EAAUC,EAAcjI,UAAWiI,EAAcx5N,QACvEy5N,gBAAgB,EAChBC,eAAe,EACfC,mBAAmB,EACnBC,kBAAkB,GA+C1B,MAGMC,IAA4D,GAAxCr3d,KAAKC,MAAMq3d,GAAwB,GACvD92U,GAAQ,CAAEy3E,KAAM,GACtB,YAA6B8+P,EAAUC,EAAeO,GAClD,MAAMvB,EAiBV,YAA8Be,EAAUQ,GACpC,OAAIA,GACGR,EAASz7P,eAAiBi8P,EAAoBj8P,eAC9Cy7P,EAASz7P,cAAgBi8P,EAAoBj8P,cAxB/BnwJ,GAyBVosZ,EAEJrB,GAAUa,EAAU,CAAE9+P,KAAMo/P,KAvBfG,CAAqBT,EAAUQ,GAE7CE,GAAcb,GADE,CAAE1rZ,MANd,EAMqBC,OAPpB,EAO4B6qZ,cAAax1U,UACJnyJ,KAAS,CACrDA,QACAzD,MAAO0kR,GAAWjhR,GAAM2oe,EAAc9H,UAAW8H,EAAcx5N,WAE7DuxN,GAmBV,YAA8B0I,EAAaT,GAGvC,MAAQ,GAFK1nN,GAAWmoN,EAAY,GAAG,GAAGppe,KAAM2oe,EAAcjI,UAAWiI,EAAcx5N,aAC5E8R,GAAWmoN,EAAYtsZ,GAAYD,GAAW78E,KAAM2oe,EAAcjI,UAAWiI,EAAcx5N,UArBpFk6N,CAAqBD,GAAaT,GACpD,MAAO,CACHn/I,MAAO4/I,GACP3I,WAAY,GACZC,aACAmI,eAAe,EACfD,gBAAgB,EAChBG,kBAAkB,EAClBD,mBAAmB,GAyD3B,YAAkBQ,EAAY73R,IACrB63R,IAAen7b,MAAMm7b,EAAW1te,aAGrC0te,EAAW/3N,SAAS9/D,EAAK4iE,YACzBi1N,EAAWt3N,WAAWvgE,EAAKwgE,cAC3Bq3N,EAAWzhB,WAAWp2Q,EAAK6iE,cAC3Bg1N,EAAWvhB,gBAAgBt2Q,EAAKx+K,oBAGpC,YAA6BjG,EAAQ+5c,GAAwB7qd,GACzD,IAAIza,EACJ,OAAQya,EAAOtf,WACNwme,GAAoBE,UACrB,OAoJZ,YAA0Bt2c,GACtB,IAAKA,EAAM+2L,KACP,OAAO/2L,EAGX,IAAIozc,EAGAA,EAFApzc,EAAMu8c,sBACNC,GAAkBx8c,EAAM+2L,KAAK/jN,KAAMgtB,EAAM80c,QAAS90c,EAAMi1c,SACxC,EAGAj1c,EAAMozc,eAAiB,EAG3C,IAAIsI,EAAW17c,EAAM+2L,KAAK/jN,KAC1B,GAAwB,QAApBgtB,EAAM+2L,KAAK17L,MAAkB2E,EAAMg6c,iBAAkB,CACjDh6c,EAAMy8c,mBAAqBz8c,EAAM25c,eAAgD,IAA/B35c,EAAM25c,cAAczse,SACtEwue,EAAWb,GAAUa,EAAU,CAAE5+P,OAAO,KAE5C98M,EAAMg6c,iBAAiBna,eAAiB3E,GAAUl7b,EAAMmiP,QAAQ09M,iBAChE,IAAI0Z,EAAc,IAAItne,MAAMmhe,GAC5B,QAASsJ,GAAa,EAAGA,GAAatJ,EAAesJ,KAEjDnD,EAAYmD,IAAcC,GAAiBjB,EAAU17c,EAAMg6c,kBAC3D0B,EAAWb,GAAUa,EAAU,CAAE5+P,MAAO,IAG5C,GAAI98M,EAAM48c,0BAA4B58c,EAAM64c,eAAiB74c,EAAM65c,YAAa,CAC5E,MAAM7H,GAAY2K,GAAiB38c,EAAM+2L,KAAK/jN,KAAMgtB,EAAMg6c,kBAEtDh6c,EAAM64c,cAAc3re,QAAU8yB,EAAM64c,cAAc,GAAG/7P,MAAMqqC,aAAe6qN,GAAUl1P,MAAMqqC,aAC1FoyN,EAAcv5c,EAAM64c,cACf3me,IAAIsU,IACDwZ,EAAMg6c,iBACC2C,GAAiBn2d,GAAKs2N,MAAO98M,EAAMg6c,kBAEvC,MAENn5d,OAAO2F,IAAiB,OAATA,KAG5B,OAAOnY,OAAOc,OAAO,GAAI6wB,EAAO,CAAEu5c,gBAEtC,GAAwB,UAApBv5c,EAAM+2L,KAAK17L,KAAkB,CAC7B,MAAMy9c,EAAiB,IAAI7me,MAAMmhe,GACjC,QAASkH,GAAgB,EAAGA,GAAgBlH,EAAekH,KAEvDxB,EAAewB,IAAiBuC,GAAqBnB,EAAUoB,GAAiB98c,IAChF07c,EAAWb,GAAUa,EAAU,CAAE9+P,KAAM,IAE3C,OAAOvuO,OAAOc,OAAO,GAAI6wB,EAAO,CAAE84c,mBAEtC,GAAwB,SAApB94c,EAAM+2L,KAAK17L,KAAiB,CAC5B,MAAMu+c,EAAqB,IAAI3ne,MAAMmhe,GACrC,QAASkH,GAAgB,EAAGA,GAAgBlH,EAAekH,KAEvDV,EAAmBU,IAAiByC,GAAoBrB,EAAUoB,GAAiB98c,GAA0B,SAAlBA,EAAMw7c,QAAqBwB,GAA4Bh9c,EAAOs6c,SAAiB5qe,GAC1Kgse,EAAWb,GAAUa,EAAU,CAAE9+P,KAtSpB9sJ,KAwSjB,OAAOzhF,OAAOc,OAAO,GAAI6wB,EAAO,CAAE45c,uBAEtC,OAAO55c,EAjNQi9c,CAAiBj9c,QAEvBo2c,GAAoBG,OACrB,OAgNZ,YAAuBv2c,GACnB,IAAKA,EAAM+2L,KACP,OAAO/2L,EAEX,GAAwB,QAApBA,EAAM+2L,KAAK17L,MAAkB2E,EAAMu5c,YAAa,CAChD,MAAME,EAAkBz5c,EAAMu5c,YAAYrne,IAAI,CAAC4qO,GAAO4/P,KAlf9D,YAA4BQ,EAAcvB,EAAee,GACrD,MAAO,CACH5/P,MAAOogQ,EAAapgQ,MACpB22P,WAAYx/M,GAAWipN,EAAapgQ,MAAO6+P,EAAclI,WAAYkI,EAAcx5N,QACnFuxN,UAAWz/M,GAAWipN,EAAapgQ,MAAO6+P,EAAcjI,UAAWiI,EAAcx5N,QACjF2xN,YAAaqJ,GAAeD,EAAa5B,WAAYK,EAAc7H,YAAa6H,EAAcx5N,QAC9F29M,SAAUsd,GAAmBzB,EAAcx5N,QAC3C8lN,MAAOiV,EAAa5B,WAAWppe,IAAI,CAAC8pd,EAAMqhB,MAAe,CACrDl1N,KAAM6zM,EAAK9pd,IAAI,CAACc,GAAMsqe,MAAc,CAChCtqe,QACAzD,MAAO0kR,GAAWjhR,GAAM2oe,EAAchI,SAAUgI,EAAcx5N,QAC9Du6N,aACAW,aACAC,kBAGRzB,eAAe,EACfD,gBAAgB,EAChBG,kBAAkB,EAClBD,mBAAmB,GA+dkDyB,CAAmBzgQ,GAAOggQ,GAAiB98c,GAAQ08c,KACxH,OAAOrue,OAAOc,OAAO,GAAI6wB,EAAO,CAAEy5c,oBAGtC,MAAMrG,EAAgBpzc,EAAMozc,eAAiB,EAG7C,IAAIsI,EAAW17c,EAAM+2L,KAAK/jN,KAC1B,GAAwB,UAApBgtB,EAAM+2L,KAAK17L,KAAkB,CAC7B,MAAMy9c,EAAiB,IAAI7me,MAAMmhe,GACjC,QAASkH,GAAgB,EAAGA,GAAgBlH,EAAekH,KAEvDxB,EAAewB,IAAiBuC,GAAqBnB,EAAUoB,GAAiB98c,IAChF07c,EAAWb,GAAUa,EAAU,CAAE9+P,KAAM,IAE3C,OAAOvuO,OAAOc,OAAO,GAAI6wB,EAAO,CAAE84c,mBAEtC,GAAwB,SAApB94c,EAAM+2L,KAAK17L,KAAiB,CAC5B,MAAMu+c,EAAqB,IAAI3ne,MAAMmhe,GACrC,QAASkH,GAAgB,EAAGA,GAAgBlH,EAAekH,KAEvDV,EAAmBU,IAAiByC,GAAoBrB,EAAUoB,GAAiB98c,IACnF07c,EAAWb,GAAUa,EAAU,CAAE9+P,KAAM,KAE3C,OAAOvuO,OAAOc,OAAO,GAAI6wB,EAAO,CAAE45c,uBAEtC,OAAO55c,EA/OQw9c,CAAcx9c,QAEpBo2c,GAAoBI,KACrB,OA8OZ,YAAqBx2c,GACjB,IAAKA,EAAM+2L,KACP,OAAO/2L,EAEX,MAAMozc,EAAgBoJ,GAAkBx8c,EAAM+2L,KAAK/jN,KAAMgtB,EAAM80c,QAAS90c,EAAMi1c,SAAW,EAAIj1c,EAAMozc,cACnG,GAAIpzc,EAAMy5c,iBAAuC,QAApBz5c,EAAM+2L,KAAK17L,KAAgB,CACpD,MAAMw9c,EAAgB74c,EAAMy5c,gBAAgBvne,IAAI,CAACure,EAAgBf,KApfzE,YAA0Be,EAAgBpue,GACtCoue,SAAexV,MAAMx5c,QAASutc,IAC1BA,EAAK7zM,KAAK15P,QAAQ,CAACsuN,EAAKugQ,MAEpB,MAAMjE,IAAgBliB,GAAYp6O,EAAI/pO,KAAMyqe,EAAe3gQ,OACrDu6P,IAAagC,IAAgBqE,GAAU3gQ,EAAI/pO,KAAM3D,EAAQwqe,aAEzD8D,IAAoBtE,IACtBhqe,EAAQsqe,eACR+D,GAAU3gQ,EAAI/pO,KAAM3D,EAAQsqe,cAAc,IACxCiE,IAAkBvE,IACpBhqe,EAAQsqe,eACR+D,GAAU3gQ,EAAI/pO,KAAM3D,EAAQsqe,cAAc,IACxC/gR,IAAeygR,IAAgBqE,GAAU3gQ,EAAI/pO,KAAM3D,EAAQqqe,eAC7DiE,IACAC,GACEC,IAAaxE,IACfhqe,EAAQsqe,eA6DxB,YAAuB3me,EAAM2me,EAAeE,GACxC,SAAK7me,GAAS2me,GAAkBA,EAAc,MAG1CA,EAAc,GACP3me,EAAO2me,EAAc,IAAM3me,GAAQ2me,EAAc,KAExDE,GACO7me,EAAO2me,EAAc,IAAM3me,GAAQ6me,GApElCiE,CAAc/gQ,EAAI/pO,KAAM3D,EAAQsqe,cAAetqe,EAAQwqe,aACrD7hU,GAAa3oK,EAAQ2oK,YACvBy4T,GAAS1zP,EAAI/pO,KAAM3D,EAAQyle,QAAS,QACpChE,GAAQ/zP,EAAI/pO,KAAM3D,EAAQ4le,QAAS,QDq0EnD,YAAuBjie,EAAMmie,GACzB,aAA4B,IAAjBA,IAAiCA,IAAiBA,EAAajoe,SAGnEioe,EAAaz/d,KAAMqnO,GAAQA,IAAQ/pO,EAAKu0Q,UCx0EnCw2N,CAAchhQ,EAAI/pO,KAAM3D,EAAQ8le,eAChC6I,GAAejhQ,EAAI/pO,KAAM3D,EAAQgme,gBACjC4I,GAAclhQ,EAAI/pO,KAAM3D,EAAQkme,cAC9B5I,GAAc,IAAI/+d,KAClBswe,IAAW7E,IAAgBqE,GAAU3gQ,EAAI/pO,KAAM25d,IAC/CwR,GAAgB9ue,EAAQqme,mBAAqBrme,EAAQqme,kBACtDxje,IAAIkse,IAAOV,GAAU3gQ,EAAI/pO,KAAMore,GAAIpre,MAAQore,GAAIjzb,QAAU,IACzDxkC,OAAO,CAACy1E,GAAei7E,KAAiBj7E,GAAcj2E,OAAOkxJ,IAAe,IAC5E/kK,KAAK,MACH,GACD+re,GAAchve,EAAQume,kBAAoBvme,EAAQume,iBACnD1je,IAAI03V,IAAM8zI,GAAU3gQ,EAAI/pO,KAAM42V,GAAG52V,MAAQ42V,GAAGy0I,YAAc,IAC1D13d,OAAO,CAACy1E,GAAei7E,MACxBj7E,GAAc/+E,KAAKg6J,IACZj7E,IACR,IACE9pF,KAAK,MACH,GAEDgse,GAASjwe,OAAOc,OAAO,GAAI4tO,EAAK,CAClCs8P,gBACAhC,aACAz+Q,cACA+kR,oBACAC,kBACAC,aACA7lU,cACAkmU,WACAC,iBACAE,kBAEAthQ,EAAIs8P,eAAiBiF,GAAOjF,cAC5Bt8P,EAAIs6P,YAAciH,GAAOjH,WACzBt6P,EAAInkB,aAAe0lR,GAAO1lR,YAC1BmkB,EAAI4gQ,mBAAqBW,GAAOX,kBAChC5gQ,EAAI6gQ,iBAAmBU,GAAOV,gBAC9B7gQ,EAAI/kE,aAAesmU,GAAOtmU,YAC1B+kE,EAAI8gQ,YAAcS,GAAOT,WACzB9gQ,EAAIohQ,gBAAkBG,GAAOH,eAC7BphQ,EAAIshQ,cAAgBC,GAAOD,eAC3BriB,EAAK7zM,KAAKm1N,IAAYgB,QAKlCb,EAAe5B,cACXxse,EAAQ2oK,cACD3oK,EAAQqte,YAAcrte,EAAQqte,WAAa,GAAKrte,EAAQqte,aAAerte,EAAQ+je,cAC1FqK,EAAe7B,eACXvse,EAAQ2oK,eACA3oK,EAAQqte,YAAqC,IAAvBrte,EAAQqte,eAAuBrte,EAAQ+je,eAAiB/je,EAAQqte,WAAarte,EAAQ+je,eAC3G/je,EAAQqte,WAAa,IAAMrte,EAAQ+je,cAC/CqK,EAAe1B,iBAAmBwC,GAAgB1D,GAAU4C,EAAe3gQ,MAAO,CAAEA,OAAO,IAAOztO,EAAQyle,QAASzle,EAAQ4le,SAC3HwI,EAAe3B,kBAAoByC,GAAgB1D,GAAU4C,EAAe3gQ,MAAO,CAAEA,MAAO,IAAMztO,EAAQyle,QAASzle,EAAQ4le,SACpHwI,EAwa6Ee,CAAiBf,EAAgB,CAC7GzlU,WAAYh4I,EAAMg4I,WAClB88T,QAAS90c,EAAM80c,QACfG,QAASj1c,EAAMi1c,QACfE,aAAcn1c,EAAMm1c,aACpBE,cAAer1c,EAAMq1c,cACrBE,aAAcv1c,EAAMu1c,aACpBsE,YAAa75c,EAAM65c,YACnBH,aAAc15c,EAAM05c,aACpBC,cAAe35c,EAAM25c,cACrBvG,gBACAsC,kBAAmB11c,EAAM01c,kBACzBE,iBAAkB51c,EAAM41c,iBACxB8G,iBAEJ,OAAOrue,OAAOc,OAAO,GAAI6wB,EAAO,CAAE64c,kBAEtC,GAAwB,UAApB74c,EAAM+2L,KAAK17L,MAAoB2E,EAAM84c,eAAgB,CACrD,MAAMC,EAAwB/4c,EAAM84c,eAAe5me,IAAI,CAACure,EAAgBf,KAlZhF,YAA4B+B,EAAepve,GACvCove,SAAcx2N,OAAOx5P,QAAQ,CAACw5P,EAAQy2N,KAClCz2N,EAAOx5P,QAAQ,CAACquN,GAAO4/P,MACnB,IAAI9jR,GACJ,MAAMy+Q,GAAYlgB,GAAYr6O,GAAM9pO,KAAM3D,EAAQsve,cAC5C3mU,GAAa3oK,EAAQ2oK,YACvBgmU,GAAelhQ,GAAM9pO,KAAM3D,EAAQgme,gBACnC4I,GAAcnhQ,GAAM9pO,KAAM3D,EAAQkme,aAAc,UAChDgJ,GAAgBzhQ,GAAM9pO,KAAM3D,EAAQyle,QAASzle,EAAQ4le,UACpD5le,EAAQqqe,cAAgBrqe,EAAQsqe,eACjC/gR,GAAau+P,GAAYr6O,GAAM9pO,KAAM3D,EAAQsqe,cAAc,IACtD/gR,KACDA,GAAau+P,GAAYr6O,GAAM9pO,KAAM3D,EAAQsqe,cAAc,MAI/D/gR,GAAau+P,GAAYr6O,GAAM9pO,KAAM3D,EAAQqqe,cAEjD,MAAMkF,GAAWvwe,OAAOc,OAAe2tO,GAAO,CAC1Cu6P,aACAr/T,cACA4gD,iBAEAkkB,GAAMu6P,YAAcuH,GAASvH,WAC7Bv6P,GAAM9kE,aAAe4mU,GAAS5mU,YAC9B8kE,GAAMlkB,aAAegmR,GAAShmR,cAC9B6lR,EAAcx2N,OAAOy2N,GAAUhC,IAAckC,QAKzDH,EAAc5C,gBACRxse,EAAQqte,YAAcrte,EAAQqte,WAAa,GAAKrte,EAAQqte,aAAerte,EAAQ+je,cACrFqL,EAAc7C,kBACPvse,EAAQqte,YAAqC,IAAvBrte,EAAQqte,gBACvBrte,EAAQ+je,eAA2C,IAA1B/je,EAAQ+je,gBACpC/je,EAAQqte,WAAarte,EAAQ+je,eAC7B/je,EAAQqte,WAAa,IAAMrte,EAAQ+je,cAC9CqL,EAAc1C,iBAAmB8C,GAAehE,GAAU4D,EAAcx2N,OAAO,GAAG,GAAGj1Q,KAAM,CAAE4pO,MAAM,IAAOvtO,EAAQyle,QAASzle,EAAQ4le,SACnIwJ,EAAc3C,kBAAoB+C,GAAehE,GAAU4D,EAAcx2N,OAAO,GAAG,GAAGj1Q,KAAM,CAAE4pO,KAAM,IAAMvtO,EAAQyle,QAASzle,EAAQ4le,SAC5HwJ,EA0WoFK,CAAmBrB,EAAgB,CACtHzlU,WAAYh4I,EAAMg4I,WAClB88T,QAAS90c,EAAM80c,QACfG,QAASj1c,EAAMi1c,QACf0J,aAAc3+c,EAAM2+c,aACpBjF,aAAc15c,EAAM05c,aACpBrE,cAAer1c,EAAMq1c,cACrBE,aAAcv1c,EAAMu1c,aACpBoE,cAAe35c,EAAM25c,cACrBvG,gBACAsJ,iBAEJ,OAAOrue,OAAOc,OAAO,GAAI6wB,EAAO,CAAE+4c,0BAEtC,GAAwB,SAApB/4c,EAAM+2L,KAAK17L,MAAmB2E,EAAM45c,mBAAoB,CACxD,MAAMX,EAAuBj5c,EAAM45c,mBAAmB1ne,IAAI,CAACure,EAAgBsB,KAjVnF,YAA2B/F,EAAe3pe,GACtC2pe,EAAcx8I,MAAM/tU,QAAQ,CAAC+tU,GAAOkiJ,MAChCliJ,GAAM/tU,QAAQ,CAACmuN,GAAMmiQ,MACjB,IAAInmR,GACJ,MAAMy+Q,GAAYngB,GAAWt6O,GAAK5pO,KAAM3D,EAAQ2ve,aAC1ChnU,GAAa3oK,EAAQ2oK,YACvBgmU,GAAephQ,GAAK5pO,KAAM3D,EAAQgme,cAAe,SACjD4I,GAAcrhQ,GAAK5pO,KAAM3D,EAAQkme,aAAc,SAC/CsJ,GAAejiQ,GAAK5pO,KAAM3D,EAAQyle,QAASzle,EAAQ4le,UAClD5le,EAAQqqe,cAAgBrqe,EAAQsqe,eACjC/gR,GAAas+P,GAAWt6O,GAAK5pO,KAAM3D,EAAQsqe,cAAc,IACpD/gR,KACDA,GAAas+P,GAAWt6O,GAAK5pO,KAAM3D,EAAQsqe,cAAc,MAI7D/gR,GAAas+P,GAAWt6O,GAAK5pO,KAAM3D,EAAQqqe,cAE/C,MAAMkF,GAAWvwe,OAAOc,OAAeytO,GAAM,CAAEy6P,aAAWr/T,cAAY4gD,iBAClEgkB,GAAKy6P,YAAcuH,GAASvH,WAC5Bz6P,GAAK5kE,aAAe4mU,GAAS5mU,YAC7B4kE,GAAKhkB,aAAegmR,GAAShmR,cAC7BogR,EAAcx8I,MAAMkiJ,IAAUK,IAAaH,QAKvD5F,EAAc6C,gBACRxse,EAAQ0ve,WAAa1ve,EAAQ0ve,UAAY,GAAK1ve,EAAQ0ve,YAAc1ve,EAAQ+je,cAClF4F,EAAc4C,iBACRvse,EAAQ0ve,aAAe1ve,EAAQ+je,eAC7B/je,EAAQ0ve,UAAY1ve,EAAQ+je,eAC5B/je,EAAQ0ve,UAAY,IAAM1ve,EAAQ+je,cAC1C4F,EAAc+C,iBAAmB8C,GAAehE,GAAU7B,EAAcx8I,MAAM,GAAG,GAAGxpV,KAAM,CAAE4pO,MAAM,IAAOvtO,EAAQyle,QAASzle,EAAQ4le,SAClI,MAAMl7d,EAAIi/d,EAAcx8I,MAAMtvV,OAAS,EAEvC8re,SAAc8C,kBAAoB+C,GAAehE,GAAU7B,EAAcx8I,MAAMziV,GADrEi/d,EAAcx8I,MAAMziV,GAAG7M,OAAS,GAC2C8F,KAAM,CAAE4pO,KAAM,IAAMvtO,EAAQyle,QAASzle,EAAQ4le,SAC3H+D,EA4SsFiG,CAAkBxB,EAAgB,CACvHzlU,WAAYh4I,EAAMg4I,WAClB88T,QAAS90c,EAAM80c,QACfG,QAASj1c,EAAMi1c,QACf+J,YAAah/c,EAAMg/c,YACnBtF,aAAc15c,EAAM05c,aACpBrE,cAAer1c,EAAMq1c,cACrBE,aAAcv1c,EAAMu1c,aACpBoE,cAAe35c,EAAM25c,cACrBvG,gBACA2L,gBAEJ,OAAO1we,OAAOc,OAAO,GAAI6wB,EAAO,CAAEi5c,yBAEtC,OAAOj5c,EAnSQk/c,CAAYl/c,QAElBo2c,GAAoBY,gBACrB,OAkSZ,YAA+Bh3c,EAAO9Q,GAClC,IAAK8Q,EAAM+2L,KACP,OAAO/2L,EAEX,MAAMhtB,EAYV,YAAuBgtB,EAAO9Q,GAC1B,GAAK8Q,EAAM+2L,KAGX,IAAwB,SAApB/2L,EAAM+2L,KAAK17L,MAAqC,SAAlB2E,EAAMw7c,QAAoB,CACxD,MAAMb,EAAcqC,GAA4Bh9c,EAAO,GACvD,GAAI26c,EAAa,CACb,MAAMwE,EAAatE,GAAUF,EAAa,CAAE/9P,MAAOo/P,KACnD,OAAOnB,GAAUsE,EAAYjwd,EAAOioB,UAG5C,OAAO0jc,GAAUpf,GAAQz7b,EAAM+2L,KAAK/jN,KAAM,SAAUkc,EAAOioB,UAvB9Cioc,CAAcp/c,EAAO9Q,GAClC,OAAKlc,EASE3E,OAAOc,OAAO,GAAI6wB,EANR,CACb+2L,KAAM,CACF17L,KAAM2E,EAAM+2L,KAAK17L,KACjBroB,UALGgtB,EAxSIq/c,CAAsBr/c,EAAO9Q,QAEnCknd,GAAoBU,YAAa,CAClC,MAAM3/b,EAAUjoB,EAAOioB,QACvB,IAAKnX,EAAM+2L,OAAS5/K,EAAQm7O,KACxB,OAAOtyP,EAEX,MAAMhtB,GDlgBlB,YAAqBA,EAAMs/Q,GACvB,OAAOxO,GAAWw7N,GAAOtse,EAAKitO,cAAeqyC,EAAK11C,MAAO0iQ,GAAOtse,EAAKm0Q,WAAYmL,EAAKx1C,OAAQ,EAC9FwiQ,GAAOtse,EAAKq0Q,WAAYiL,EAAKsjM,MAAO0pB,GAAOtse,EAAKiyQ,aAAcqN,EAAKjwC,QAASi9P,GAAOtse,EAAKs0Q,aAAcgL,EAAKrwC,SAAUq9P,GAAOtse,EAAKizB,kBAAmBqsP,EAAK7K,eCggBpI83N,CAAYv/c,EAAM+2L,KAAK/jN,KAAMmkC,EAAQm7O,MAClD,IAAIynE,GACA1+T,GACJ,OAAImkd,GAAcroc,EAAQ+hc,SAAUl5c,EAAMw7c,UACtCngd,GAAO8b,EAAQ+hc,SACfn/I,GAAW,CAAEhjI,KAAM,CAAE/jN,QAAMqoB,YAG3BA,GAAO2E,EAAM+2L,KAAK17L,KAClB0+T,GAAW,CAAE2/I,aAAc1me,GAAM+jN,KAAM,CAAE/jN,QAAMqoB,WAE5ChtB,OAAOc,OAAO,GAAI6wB,EAAO+5T,SAE/Bq8I,GAAoBS,gBACrB,OAAK2I,GAActwd,EAAOioB,QAASnX,EAAMw7c,UAAax7c,EAAM+2L,KAMrD1oN,OAAOc,OAAO,GAAI6wB,EADR,CAAE+2L,KAAM,CAAE/jN,KAFdgtB,EAAM+2L,KAAK/jN,KAESqoB,KADpBnM,EAAOioB,WAHTnX,EAIsB3E,KAGhC+6c,GAAoBgB,MACrB,OAAO/oe,OAAOc,OAAO,GAAI6wB,EAAO,CAAE65c,YAAa3qd,EAAOioB,eAErDi/b,GAAoBK,OAAQ,CAC7B,IAAKz2c,EAAM+2L,KACP,OAAO/2L,EAEX,MAAM+5T,EAAW,CACb2/I,aAAcxqd,EAAOioB,QACrB4/K,KAAM/2L,EAAM+2L,MAEhB,GAAI9kN,MAAM0L,QAAQqiB,EAAM44c,cAAe,CACnC,MAAM6G,GAAQz/c,EAAM44c,aAAa,GAC7B7+I,EAAS2/I,cAAgB+F,IACzBC,GAAS3lJ,EAAS2/I,aAAc+F,IAGxC,MAAMpkd,GAAO2E,EAAM+2L,KAAK17L,KAElBroB,GAAO2se,GADCzwd,EAAOioB,SAAWnX,EAAM+2L,KAAK/jN,KACXgtB,EAAM80c,QAAS90c,EAAMi1c,SACrDl7I,SAAShjI,KAAO,CAAE17L,QAAMroB,SACjB3E,OAAOc,OAAO,GAAI6wB,EAAO+5T,QAE/Bq8I,GAAoBO,YAAa,CAClC,MAAQ3je,OAAM2mB,UAAUzK,EAAOioB,QACzByhc,GAAe54c,EAAM44c,aAAe,IAAI54c,EAAM44c,cAAgB,GACpEA,UAAaj/c,IAAS3mB,EACf3E,OAAOc,OAAO,GAAI6wB,EAAO,CAAE44c,uBAEjCxC,GAAoBa,YAAa,CAClC,IAAKj3c,EAAM+2L,KACP,OAAO/2L,EAEX,MAAM+5T,EAAW7qU,EAAOioB,QAElB9b,GAAO0+T,EAASyhJ,QAAUzhJ,EAASyhJ,QAAUx7c,EAAM+2L,KAAK17L,KAIxDroB,GAAO2se,GAHKzT,EAAYnyI,EAAS/rV,QAAU+rV,EAAS/rV,OACnD2P,EAAQo8U,EAAS/rV,QAAUk+d,EAAYnyI,EAAS/rV,MAAM,KAAO+rV,EAAS/rV,MAAM,IAC5EgyB,EAAM+2L,KAAK/jN,KACkB+mV,EAAS+6I,QAAS/6I,EAASk7I,SAC/Dl7I,SAAShjI,KAAO,CAAE17L,QAAMroB,SAEpB+mV,EAAS/rV,QAEL2P,EAAQo8U,EAAS/rV,SACjB+rV,EAAS4/I,cAAgB5/I,EAAS/rV,MAClC+rV,EAAS6+I,aAAe7+I,EAAS/rV,MAAMkE,IAAK6H,IAAMA,KAGlDggV,EAAS/rV,iBAAiBJ,OAC1BmsV,EAAS2/I,aAAe3/I,EAAS/rV,MACjC+rV,EAAS6+I,aAAe,CAAC7+I,EAAS/rV,SAKnCK,OAAOc,OAAO,GAAI6wB,EAAO+5T,QAG/Bq8I,GAAoBe,aAAc,CACnC,IAAKn3c,EAAM+2L,KACP,OAAO/2L,EAEX,MAAM+5T,EAAW,CACb4/I,cAAezqd,EAAOioB,QACtB4/K,KAAM/2L,EAAM+2L,MAEkB,QAAjCtiN,EAAKslV,EAAS4/I,qBAAkC,IAAPlle,GAAyBA,EAAGga,QAAQ,CAACmxd,GAAKjmd,MAChF,GAAI1nB,MAAM0L,QAAQqiB,EAAM44c,cAAe,CACnC,MAAM6G,GAAQz/c,EAAM44c,aAAaj/c,IAC7B8ld,IACAC,GAASE,GAAKH,OAI1B,MAAMpkd,GAAO2E,EAAM+2L,KAAK17L,KAElBroB,GAAO2se,GADCzwd,EAAOioB,SAAWjoB,EAAOioB,QAAQ,IAAMnX,EAAM+2L,KAAK/jN,KAChCgtB,EAAM80c,QAAS90c,EAAMi1c,SACrDl7I,SAAShjI,KAAO,CAAE17L,QAAMroB,SACjB3E,OAAOc,OAAO,GAAI6wB,EAAO+5T,QAE/Bq8I,GAAoBmB,aACrB,OAAOlpe,OAAOc,OAAO,GAAI6wB,EAAO,CAC5B80c,QAAS5ld,EAAOioB,eAGnBi/b,GAAoBoB,aACrB,OAAOnpe,OAAOc,OAAO,GAAI6wB,EAAO,CAC5Bi1c,QAAS/ld,EAAOioB,eAGnBi/b,GAAoBwB,gBACrB,OAAOvpe,OAAOc,OAAO,GAAI6wB,EAAO,CAC5Bg4I,WAAY9oJ,EAAOioB,eAGtBi/b,GAAoByB,wBACrB,OAAOxpe,OAAOc,OAAO,GAAI6wB,EAAO,CAC5B01c,kBAAmBxmd,EAAOioB,eAG7Bi/b,GAAoB0B,uBACrB,OAAOzpe,OAAOc,OAAO,GAAI6wB,EAAO,CAC5B41c,iBAAkB1md,EAAOioB,kBAI7B,OAAOnX,GAuLnB,YAA0BA,GACtB,MAAO,CACHmiP,OAAQniP,EAAMmiP,OACdsxN,WAAYzzc,EAAMyzc,WAClBC,UAAW1zc,EAAM0zc,UACjBC,SAAU3zc,EAAM2zc,SAChBC,WAAY5zc,EAAM4zc,WAClBC,UAAW7zc,EAAM6zc,UACjBC,YAAa9zc,EAAM8zc,aAS3B,YAAqB4H,EAAU5G,EAASG,GACpC,MAAMva,EAAQzod,MAAM0L,QAAQ+9d,GAAYA,EAAS,GAAKA,EACtD,OAAI5G,GAAWhE,GAAQgE,EAASpa,EAAO,OAC5Boa,EAEPG,GAAWxE,GAASwE,EAASva,EAAO,OAC7Bua,EAEJva,EAEX,YAA2BghB,EAAU5G,EAASG,GAC1C,SAAIA,IAAWmF,GAAOnF,EAASyG,EAAU,SAGlC5G,GAAWG,GAAWH,EAAQ3tN,aAAe8tN,EAAQ9tN,eAG1D04N,SAAN,gBAAgCC,KAC5B1ze,cACI,MAAM2ze,EAAc,IAAI9re,KAAgB,CACpCrE,KAAM,iCAGVowD,MAAM+/a,EAAaC,GADL,IAAIC,KAAUlG,GAAwBgG,EAAaC,MAIzEH,SAAkBpse,UAAlB,0BAA8Gose,IAC9GA,EAAkBjse,WAzwCmFzG,MAywCrG,OAAkH0ye,EAAlHzye,QAAkHyye,EAAlH,qBAAiJ,aAV3IA,MAmBN,IAAIK,GAAqB,MACxB,OAAUA,EAGRA,KAA0BA,GAAwB,KAF3BA,EAAsBl9T,GAAQ,GAAK,KACzDk9T,EAAsBA,EAAsBj9T,KAAU,GAAK,OAH3Di9T,GACH,IAAUA,GADc,OAMnBC,SAAN,SAEAA,SAA2B1se,UAA3B,0BAAuH0se,IACvHA,EAA2BtrZ,UA3xC0E1nF,MA2xCrG,MAA2Ggze,EAA3G52b,mIA3xCqGp8C,MA2xCoH,UA3xCpHA,CA2xCoH,UA3xCpHA,MA2xCwJ,GA3xCxJA,WA2xCrG,MA3xCqGA,MA2xCwJ,GA3xCxJA,MA2xCwJ8yN,WAA7P3tC,kBAHM6tT,MAcAC,SAAN,QACIh0e,cACIK,KAAK4ze,KAAO,KACZ5ze,KAAK81Q,MAAQ,EACb91Q,KAAK+1Q,QAAU,GAGvB49N,SAA0B3se,UAA1B,0BAAsH2se,IACtHA,EAA0BvrZ,UA9yC2E1nF,MA8yCrG,MAA0Gize,EAA1G72b,u1BA9yCqGp8C,MA+yCjG,UA/yCiGA,CA+yCjG,UA/yCiGA,CA+yCjG,cA/yCiGA,MAizCnD,OAjzCmDA,cAkzC7F,aAlzC6FA,MAmzC7F,cAnzC6FA,MAmzCnD,OAnzCmDA,gBAqzC/F,UArzC+FA,CAqzC/F,cArzC+FA,MAszCnD,OAtzCmDA,cAuzC7F,cAvzC6FA,MAwzC7F,eAxzC6FA,MAwzCnD,QAxzCmDA,gBA0zC/F,eA1zC+FA,MA0zC9C,IA1zC8CA,MA2zC7F,YA3zC6FA,WA8yCrG,MA9yCqGA,MAkzC1E,GAlzC0EA,MAkzC1E,iBAlzC0EA,MAuzC1E,GAvzC0EA,MAuzC1E,mBAvzC0EA,MA0zC9C,GA1zC8CA,MA0zC9C,iBAZvDmlL,kBARM8tT,MAqDAE,SAAN,SAEAA,SAA0B7se,UAA1B,0BAAsH6se,IACtHA,EAA0BzrZ,UA91C2E1nF,MA81CrG,MAA0Gmze,EAA1G/2b,gOA91CqGp8C,MA81CrGoze,IA91CqGpze,MAg2CjG,8BAh2CiGA,MAm2CjG,WAn2CiGA,MAo2C/F,GAp2C+FA,cAu2CjG,WAv2CiGA,MAw2C/F,KAx2C+FA,cA42CjG,6BAdJ,MA91CqGA,MAg2C7D,WAh2C6DA,MA42CjF,GA52CiFA,MA42CjF,aAdpBg8D,YAe0Cg3a,GAAsFC,GAA8EI,OAf9MluT,kBAHMguT,MA0CAG,SAAN,QACIr0e,cACIK,KAAKi0e,WAAa,IAAI9uZ,MACtBnlF,KAAKk0e,WAAa,IAAI/uZ,MAE1BgvZ,MAAM19B,GACFz2c,KAAKi0e,WAAWtmU,KAAK8oS,EAAOg9B,GAAsBj9T,KAAOi9T,GAAsBl9T,IAEnF+zC,KAAKmiR,GACDzse,KAAKk0e,WAAWvmU,KAAK8+T,IAG7BuH,SAAoChte,UAApC,0BAAgIgte,IAChIA,EAAoC5rZ,UAl5CiE1nF,MAk5CrG,MAAoHsze,EAApHl3b,kVAl5CqGp8C,MAm5CjG,cAn5CiGA,MAu5CzF,0BAAS8yN,SAAM,KAv5C0E9yN,MAw5C/F,UAx5C+FA,MAw5CzF,YAx5CyFA,gBA25CjG,2BA35CiGA,MAs6CjG,cAt6CiGA,MAy6CjG,cAz6CiGA,MAy6CzE,0BAAS8yN,OAAK,UAz6C2D9yN,MA06C/F,UA16C+FA,MA06CzF,GA16CyFA,gBA66CjG,cA76CiGA,MAg7CjG,cAh7CiGA,MAo7CzF,0BAAS8yN,SAAM,KAp7C0E9yN,MAo7ClE,WAp7CkEA,MAo7C5D,aAp7C4DA,WAk5CrG,MAl5CqGA,MAq5CzF,0DAr5CyFA,MAo5CzF,wCAp5CyFA,MA25ClF,GA35CkFA,MA25ClF,0CA35CkFA,MA06CzF,GA16CyFA,MA06CzF8yN,sBA16CyF9yN,MAk7CzF,GAl7CyFA,MAk7CzF,2DAl7CyFA,MAi7CzF,2CA/BZg8D,YAoC0Cq3a,OApC1CluT,oCAbMmuT,MAqGAI,SAAN,QACIz0e,YAAYmlF,EAASuvZ,EAAQrzN,IACzBhhR,KAAK8kF,QAAUA,EACf9kF,KAAKq0e,OAASA,EACdr0e,KAAKghR,UAAYA,GACjBhhR,KAAKswO,IAAM,CAAE/pO,KAAM,IAAIpF,KAAQ2B,MAAO,IAE1C+5C,WACI,IAAI70C,EAAIC,EAAIyvH,IACa,QAAnB1vH,EAAKhI,KAAKswO,WAAwB,IAAPtoO,OAAgB,EAASA,EAAGype,UAAYzxe,KAAK8kF,SAAW9kF,KAAK8kF,QAAQwvZ,kBAClGt0e,KAAKghR,UAAU7/L,SAASnhF,KAAKq0e,OAAOzuZ,cAAe5lF,KAAK8kF,QAAQwvZ,kBAEmB,iBAAvD,QAAnBrse,EAAKjI,KAAKswO,WAAwB,IAAProO,OAAgB,EAASA,EAAGype,iBAC5C,QAAnBh6W,GAAK13H,KAAKswO,WAAwB,IAAP54G,IAAyBA,GAAGg6W,cAAczre,MAAM,KAAKmO,OAAQ2mF,IAAcA,IAAW/4E,QAAS+4E,KACvH/6F,KAAKghR,UAAU7/L,SAASnhF,KAAKq0e,OAAOzuZ,cAAemV,QAKnEq5Y,SAAkCpte,UAAlC,0BAA8Hote,GA7/CzB1ze,MA6/C4E8le,IA7/C5E9le,MA6/C2GA,OA7/C3GA,MA6/CqIA,SAC1O0ze,EAAkChsZ,UA9/CmE1nF,MA8/CrG,MAAkH0ze,EAAlHt3b,2FA9/CqGp8C,MA8/CrG,4BA9/CqGA,CA8/CrG,iCA9/CqGA,CA8/CrG,oCA9/CqGA,CA8/CrG,kDA9/CqGA,CA8/CrG,2BA9/CqGA,CA8/CrG,sCA9/CqGA,CA8/CrG,kCA9/CqGA,CA8/CrG,qGA9/CqGA,MA8/Cqf,GAA1lB,KA9/CqGA,MA8/Cqf8yN,yBAA1lB3tC,oCApBMuuT,MA0CAG,SAAN,QACI50e,YAAYmlF,GACR9kF,KAAK8kF,QAAUA,EACf9kF,KAAKi0e,WAAa,IAAI9uZ,MACtBnlF,KAAKk0e,WAAa,IAAI/uZ,MACtBnlF,KAAKkuN,SAAW,IAAI/oI,MACpBnlF,KAAKs+Z,QAAU,IAAIn5U,MACnBnlF,KAAKw0e,YAAc,IAAIrvZ,MACvBnlF,KAAKy0e,MAAS,mBAAmBjpd,KAAKm2D,UAAUmwM,WACpB,aAAvBnwM,UAAUmwM,UAA2BnwM,UAAU+yZ,eAAiB,EACjE10e,KAAK8kF,QAAQqkZ,kBAAoBnpe,KAAK8kF,QAAQqkZ,iBAAiB1oe,OAAS,IACxET,KAAK20e,eAAgB,GAG7B/O,WAAWtwc,GAEPt1B,KAAKi0e,WAAWtmU,KAAK,CAAEt2J,KAAM,CAAEg5N,MADlBojQ,GAAsBj9T,OAASlhJ,GAAQ,EAAK,KAG7D60c,eAAe70c,GACXt1B,KAAKk0e,WAAWvmU,KAAKr4I,GAEzB+vc,UAAU/vc,GACNt1B,KAAKkuN,SAASvgD,KAAKr4I,GAEvB6vc,WAAW5V,GAIP,IAHKvvd,KAAK8kF,QAAQqgZ,aAAenle,KAAK8kF,QAAQ8vZ,qBAGrB,IAArBrlB,EAAK7zM,KAAKj7Q,OACV,OAEJ,GAAIT,KAAK8kF,QAAQqgZ,YAAc5V,EAAK7zM,KAAK,KACjC6zM,EAAK7zM,KAAK,GAAGnwG,YACdvrK,KAAK8kF,QAAQ+vZ,qBAEhB,YADA70e,KAAKkuN,SAASvgD,KAAK4hT,EAAK7zM,KAAK,IAGjC,MAAMo5N,EAAcvlB,EAAK7zM,KAAK7iQ,KAAMy3N,KACzBtwO,KAAK8kF,QAAQ+vZ,uBAEbvkQ,GAAIs8P,gBAAiBt8P,GAAI/kE,YAGpC,GADAvrK,KAAKkuN,SAASvgD,KAAKmnU,GACf90e,KAAK8kF,QAAQ8vZ,oBAAqB,CAElC,MAAMG,GAAiBr5N,EADLA,KAAK91Q,MAAM,GACDsqK,UAAUr3J,KAAMy3N,KACjCtwO,KAAK8kF,QAAQ+vZ,uBAEbvkQ,GAAIs8P,gBAAiBt8P,GAAI/kE,YAEpCvrK,KAAKkuN,SAASvgD,KAAKonU,KAG3B3P,iBAAiByF,EAAMD,IACd5qe,KAAK8kF,QAAQqgZ,YAAenle,KAAK8kF,QAAQ8vZ,sBAQ1CI,EALuBt5N,KAAK7iQ,KAAMy3N,KAC3BtwO,KAAK8kF,QAAQ+vZ,uBAEbvkQ,GAAIs8P,gBAAiBt8P,GAAI/kE,cAGhCs/T,EAAKD,UAAYA,EACjB5qe,KAAKi1e,cAAgBrK,EACrB5qe,KAAKw0e,YAAY7mU,KAAKk9T,IAG9BvF,SAASuF,EAAMD,GACP5qe,KAAK8kF,QAAQ+vZ,sBAAwBhK,EAAK+B,eAC1C/B,EAAKqK,oBAAsBtK,GAE3B5qe,KAAK8kF,QAAQqkZ,mBACb0B,EAAK+G,YAAc,GACnB5xe,KAAK8kF,QAAQqkZ,iBAAiBnnd,QAASmzd,KAC/BlE,GAAUkE,GAAS5ue,KAAMske,EAAKtke,QAC9Bske,EAAK+G,YAAcuD,GAASvD,gBAKxC5xe,KAAKs+Z,QAAQ3wP,KAAK,CAAEk9T,OAAMD,eAGlC2J,SAA4Bvte,UAA5B,0BAAwHute,GAxmDnB7ze,MAwmDgE8le,MACrK+N,EAA4BnsZ,UAzmDyE1nF,MAymDrG,MAA4G6ze,EAA5Gz3b,mlCAzmDqGp8C,MA0mDjG,uBA1mDiGA,CA0mDjG,qCA1mDiGA,MA6mD7F,iCAAc8yN,kBA7mD+E9yN,CA6mD7F,iCACc8yN,uBA9mD+E9yN,cAinD/F,YAjnD+FA,CAinD/F,UAjnD+FA,CAinD/F,QAjnD+FA,MAqnD3F,iBArnD2FA,MAsnD3F,iBAtnD2FA,gBA2nD7F,WA3nD6FA,MA4nD7F,iBA5nD6FA,aAymDrG,MAzmDqGA,MA4mD7F,GA5mD6FA,MA4mD7F,uBA5mD6FA,MAqnDtF,GArnDsFA,MAqnDtF,6CArnDsFA,MAsnDnE,GAtnDmEA,MAsnDnE,+BAtnDmEA,MA4nDxE,GA5nDwEA,MA4nDxE,8BAnB7Bg8D,YAqD0Cm3a,GAAqEG,GAAuJI,GAAoHL,MAAkFA,MAA2GzzO,OArDvjBz6E,kBArFM0uT,MAuNAa,SAAN,QACIz1e,cACIK,KAAKi0e,WAAa,IAAI9uZ,MACtBnlF,KAAKk0e,WAAa,IAAI/uZ,MACtBnlF,KAAKkuN,SAAW,IAAI/oI,MACpBnlF,KAAKs+Z,QAAU,IAAIn5U,MAEvBygZ,WAAWtwc,GAEPt1B,KAAKi0e,WAAWtmU,KAAK,CAAEt2J,KAAM,CAAE84N,KADlBsjQ,GAAsBj9T,OAASlhJ,GAAQ,EAAK,KAG7Diwc,UAAUl1P,GACNrwO,KAAKkuN,SAASvgD,KAAK0iE,GAEvBm1P,WAAWqF,EAAMD,GACb5qe,KAAKs+Z,QAAQ3wP,KAAK,CAAEk9T,OAAMD,cAE9BT,eAAe70c,GACXt1B,KAAKk0e,WAAWvmU,KAAKr4I,IAG7B8/c,SAA6Bpue,UAA7B,0BAAyHoue,IACzHA,EAA6BhtZ,UAjwDwE1nF,MAiwDrG,MAA6G00e,EAA7Gt4b,mdAjwDqGp8C,MAkwDjG,uBAlwDiGA,CAkwDjG,qCAlwDiGA,MAqwD7F,iCAAc8yN,kBArwD+E9yN,CAqwD7F,iCACc8yN,uBAtwD+E9yN,cAywD/F,YAzwD+FA,CAywD/F,WAzwD+FA,MA2wD7F,iBA3wD6FA,aAiwDrG,MAjwDqGA,MAowD7F,GApwD6FA,MAowD7F,uBApwD6FA,MA2wDzE,GA3wDyEA,MA2wDzE,qDAV5Bg8D,YAuB0Cm3a,GAAqEG,GAAqKD,OAvBpRluT,kBAtBMuvT,MAuFAC,SAAN,QACI11e,cACIK,KAAKi0e,WAAa,IAAI9uZ,MACtBnlF,KAAKk0e,WAAa,IAAI/uZ,MACtBnlF,KAAKkuN,SAAW,IAAI/oI,MACpBnlF,KAAKs+Z,QAAU,IAAIn5U,MAEvBygZ,WAAWtwc,GAEPt1B,KAAKi0e,WAAWtmU,KAAK,CAAEt2J,KAAM,CAAE84N,KA/gCd9sJ,IA8gCJowZ,GAAsBj9T,OAASlhJ,GAAQ,EAAK,MAG7Dmwc,SAASt1P,GACLnwO,KAAKkuN,SAASvgD,KAAKwiE,GAEvBu1P,UAAUmF,EAAMD,GACZ5qe,KAAKs+Z,QAAQ3wP,KAAK,CAAEk9T,OAAMD,cAE9BT,eAAe70c,GACXt1B,KAAKk0e,WAAWvmU,KAAKr4I,IAG7B+/c,SAA6Brue,UAA7B,0BAAyHque,IACzHA,EAA6BjtZ,UAx1DwE1nF,MAw1DrG,MAA6G20e,EAA7Gv4b,kdAx1DqGp8C,MAy1DjG,uBAz1DiGA,CAy1DjG,qCAz1DiGA,MA41D7F,iCAAc8yN,kBA51D+E9yN,CA41D7F,iCACc8yN,uBA71D+E9yN,cAg2D/F,YAh2D+FA,CAg2D/F,WAh2D+FA,MAk2D7F,iBAl2D6FA,aAw1DrG,MAx1DqGA,MA21D7F,GA31D6FA,MA21D7F,uBA31D6FA,MAk2DzE,GAl2DyEA,MAk2DzE,oDAV5Bg8D,YAuB0Cm3a,GAAqEG,GAAqKD,OAvBpRluT,kBAtBMwvT,MAuFAC,SAAN,QACI31e,cACIK,KAAKkuN,SAAW,IAAI/oI,MAExBwgZ,iBAAiBxkU,GACbnhK,KAAKkuN,SAASvgD,KAAKxM,IAG3Bm0U,SAA2Btue,UAA3B,0BAAuHsue,IACvHA,EAA2BltZ,UAl6D0E1nF,MAk6DrG,MAA2G40e,EAA3Gx4b,mWAl6DqGp8C,MAm6DjG,WAn6DiGA,MAo6D/F,qBAp6D+FA,SAk6DrG,MAl6DqGA,MAo6DrE,GAp6DqEA,MAo6DrE,sBAFhCg8D,YAU0Cq3a,OAV1CluT,oCATMyvT,MA+CAC,SAAN,gBAA6CC,GACzC71e,YAAYqhR,EAAWl8L,EAASknZ,GAAQruP,GAAUkuP,GAAUvD,GAAUmN,IAClElib,QACAvzD,KAAK8kF,QAAUA,EACf9kF,KAAKgse,OAASA,GACdhse,KAAK29O,SAAWA,GAChB39O,KAAK6re,SAAWA,GAChB7re,KAAKy1e,iBAAmBA,GACxBz1e,KAAKymK,YAAc,IAAIthF,MACvBnlF,KAAK01e,eAAiB,OACtB11e,KAAK21e,eAAgB,EACrB31e,KAAK8lO,MAAQ,GACb9lO,KAAKsoe,SAAWA,GAChBtnN,EAAU8E,SAASnoC,GAAS/3J,cAAe,UAAW,SACtDo7L,EAAU8E,SAASnoC,GAAS/3J,cAAe,WAAY,YAEvDrkF,UAAMA,GACN,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAG29J,SAASpkK,GAE1Es7C,WACI,IAAI70C,EAAIC,EACRjI,KAAKy1e,iBAAiB1mD,WAAW,CAC7Bt0M,UAAW,CACPr6B,KAAM,CACFx2I,QAAS5pE,KAAK8kF,QAAQu8D,kBAE1Bu0V,gBAAiB,CACbhsa,QAAS5pE,KAAK8kF,QAAQu8D,mBAG9BymV,iBAAkB9ne,KAAK8kF,QAAQgjZ,mBAEK,QAAvC9/d,EAAKhI,KAAKy1e,iBAAiBI,cAA2B,IAAP7te,GAAyBA,EAAG8C,MAAK2lC,OAAK,IAAI9oC,UAAU,KAChG3H,KAAKy1e,iBAAiBzmP,UAElBhvP,KAAK01e,eADL11e,KAAK8kF,QAAQw8D,WACSthJ,KAAK81e,cAAgB,cAAgB,gBAGzC,eAE1B91e,KAAK+1e,oBAAsB/1e,KAAK8kF,QAAQ+vZ,qBACxC70e,KAAK+zP,eAAiB/zP,KAAK8kF,QAAQivK,eACnC/zP,KAAKg2e,aAAeh2e,KAAK8kF,QAAQwiZ,gBACjCtne,KAAKi2e,YAAcj2e,KAAK8kF,QAAQ4iZ,iBAChC1ne,KAAKk2e,SAAWl2e,KAAK8kF,QAAQ0iZ,cAC7Bxne,KAAKm2e,aAAen2e,KAAK8kF,QAAQyiZ,gBACjCvne,KAAKo2e,YAAcp2e,KAAK8kF,QAAQ6iZ,iBAChC3ne,KAAKq2e,SAAWr2e,KAAK8kF,QAAQ2iZ,cAC7Bzne,KAAKs2e,kBAAoBt2e,KAAK8kF,QAAQ8iZ,uBACtC5ne,KAAK6ne,eAAiB7ne,KAAK8kF,QAAQ+iZ,eACV,QAAxB5/d,EAAKjI,KAAKsoe,gBAA6B,IAAPrge,GAAyBA,EAAGxF,KAAKzC,KAAKgse,QAAQj9C,WAAW/ub,KAAK8kF,SAASonZ,YAAYlse,MAAM0se,iBAAiB1se,MAAM6se,gCAGjJ7se,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAAOzwc,OAAQhI,IAAUA,GAAM05c,cAActle,UAAWpB,IAASvG,KAAKymK,YAAYkH,KAAKpnK,MAC5GvG,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAAS1B,eAAenqe,KAAK8kF,QAAQ26M,YAEnE31H,kBACI,IAAI9hK,EAAIC,EACRjI,KAAKooe,gBAAgBj0c,IAAiC,QAA5BnsB,EAAKhI,KAAKmse,oBAAiC,IAAPnke,OAAgB,EAASA,EAAGL,UAAW8zB,KACjG,IAAIzzB,GACAxC,MAAM0L,QAAQuqB,KAAQA,GAAIh7B,QAAU,IACJ,QAA/BuH,GAAKhI,KAAKu2e,uBAAoC,IAAPvue,IAAyBA,GAAGmjK,WAAW1vI,GAAI,QAG3D,QAA/BxzB,EAAKjI,KAAKu2e,uBAAoC,IAAPtue,GAAyBA,EAAGmjK,iBAAkB3vI,KAClFz7B,KAAKwpe,kBAAkB/tc,GAAK,KAGhCq6c,oBACA,OAAO91e,KAAK29O,SAAS/3J,cAAcgR,UAAUxP,SAAS,OAE1Dm/Y,wBACIvme,KAAKy1e,iBAAiB9mP,SAE1B66O,kBAAkBjje,EAAM2mB,GACpBltB,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAAS5B,WAAW1je,EAAM2mB,IAExD64c,iBAAiBz1P,IACRA,IAGctwO,KAAK+1e,oBAAsBzlQ,EAAI/kE,WAAc+kE,EAAIs8P,cAAgBt8P,EAAI/kE,aAIxFvrK,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAAStwc,OAAO+0M,EAAI/pO,OAElD0/d,mBAAmB31P,IACVA,GAAOA,EAAI/kE,YAGhBvrK,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAASjG,WAAW,CAC1C//M,KAAM,CACFx1C,MAAOqqC,GAASpqC,EAAI/pO,MACpB4pO,KAAMqD,GAAYlD,EAAI/pO,OAE1Bkme,SAAU,SAGlBtG,kBAAkB71P,IACTA,GAAOA,EAAI/kE,YAGhBvrK,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAASjG,WAAW,CAC1C//M,KAAM,CACF11C,KAAMqD,GAAYlD,EAAI/pO,OAE1Bkme,SAAU,WAGlBrG,WACIpme,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAAStwc,OAAO,IAAIp6B,OAElDkle,YACIrme,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAAStwc,YAAOt4B,IAE9CiJ,cACI,IAAIlE,EACJ,UAAWmE,KAAOnM,KAAK8lO,MACnB35N,EAAIC,cAERpM,KAAKooe,gBAAgBh8d,cACI,QAAxBpE,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGk9C,WAGrEqwb,SAA+Bvue,UAA/B,0BAA2Huue,GAtkEtB70e,MAskEsEA,OAtkEtEA,MAskE+F8le,IAtkE/F9le,MAskE8H0ye,IAtkE9H1ye,MAskE4JA,OAtkE5JA,MAskEsLipe,IAtkEtLjpe,MAskEsNkre,IAtkEtNlre,MAskEsP2/P,SAC3Vk1O,EAA+BntZ,UAvkEsE1nF,MAukErG,MAA+G60e,EAA/Gz4b,wEAvkEqGp8C,KAukErG81e,kBAvkEqG91e,MAukErG+1e,GAvkEqG/1e,WAukErG8yN,gDAAkN,SAAlN,aAA0O,WAA1O,4CAvkEqG9yN,MAukErG,4BAA+G8yN,0BAA/G/tD,UAvkEqG/kK,MAukE8O,CAAC0ye,GAAmBxH,KAvkElQlre,OAukErGi9C,u2CAvkEqGj9C,MAukEsd,oBAvkEtdA,MAukErG,iBAvkEqGA,MAukEihB,OAvkEjhBA,MAukEihB,kBAAtnBg8D,YAAgzI63a,GAAwLnnI,MAAsWgoI,GAAgKC,GAAgKC,GAAqKvB,MAAkFA,MAA4EA,MAAsEA,MAAkFA,OAAzmL5jR,OAA+tL4jR,OAA/tLluT,gCAA4vL,CAACmiT,OA/HvvLuN,MA6IAmB,SAAN,QACI/2e,YAAYmlF,EAASJ,EAAas8L,GAAWvb,GAAmBkxO,IAC5D32e,KAAK8kF,QAAUA,EACf9kF,KAAK0kF,YAAcA,EACnB1kF,KAAKghR,UAAYA,GAIjBhhR,KAAKk9J,UAAY,SAKjBl9J,KAAK4nd,SAAW,QAIhB5nd,KAAK0ma,cAAe,EAIpB1ma,KAAKotC,UAAY,OACjBptC,KAAK6nd,YAAa,EAClB7nd,KAAK42e,WAAa,IAAIlze,KAItB1D,KAAKurK,YAAa,EAIlBvrK,KAAK62e,cAAgB,IAAI1xZ,MACzBnlF,KAAK8lO,MAAQ,GACb9lO,KAAK82e,kBAAoB,IAAIpze,KAE7B9B,OAAOc,OAAO1C,KAAMA,KAAK8kF,SACzB9kF,KAAK+2e,YAAcJ,GAAI/tB,aAAalkY,EAAa+gL,GAAmBub,IACpEhhR,KAAK6jD,QAAU7jD,KAAK+2e,YAAYlzb,QAChC7jD,KAAK4jD,SAAW5jD,KAAK+2e,YAAYnzb,SACjC5jD,KAAKg3e,QAAU,IAAIxve,KAAgBxH,KAAKkgJ,QAKxCA,aACA,OAAOlgJ,KAAK+2e,YAAYnwB,QAExB1mU,WAAO3+I,GACPvB,KAAKg3e,QAAQ9ye,KAAK3C,GAKlB01e,YAAQ11e,GACR,IAAIyG,EACAhI,KAAKk3e,UAAY31e,GAASvB,KAAKk3e,SAAS/0e,YAAcZ,EAAMY,YAG3DnC,KAAKk3e,WAAY31e,GAAUvB,KAAK8kF,QAAQ+iZ,gBAEzCoL,GAAS1xe,EADG,IAAIJ,MAGhBI,IAAmC,QAAxByG,EAAKhI,KAAKm3e,gBAA6B,IAAPnve,OAAgB,EAASA,EAAGove,mBACvE71e,EAAQ81e,GAA2B91e,IAEvCvB,KAAKk3e,SAAW31e,EAChBvB,KAAK62e,cAAclpU,KAAKpsK,IAExB+1e,uBACA,OAAOt3e,KAAK82e,kBAEhBj6b,WACI78C,KAAK+2e,YAAYl0U,OAAO,CACpB6jQ,aAAc1ma,KAAK0ma,aACnBmhD,WAAY7nd,KAAK6nd,WACjBD,SAAU5nd,KAAK4nd,SACflka,KAAM,IAAM1jD,KAAK0jD,SAErB1jD,KAAKu3e,YAETl9Y,YAAYp9E,GACR,IAAIjV,EAAIC,GAAIyvH,GAAIE,GACZ36G,EAAQk6d,YACyC,QAA3Cnve,EAAKiV,EAAQk6d,SAAYvsU,oBAAiC,IAAP5iK,OAAgB,EAASA,EAAGove,mBAAiE,QAA3Cnve,GAAKgV,EAAQk6d,SAAYvsU,oBAAiC,IAAP3iK,QAAgB,EAASA,GAAGmve,oBAAmE,QAA5C1/W,GAAKz6G,EAAQk6d,SAAYxnZ,qBAAkC,IAAP+nC,QAAgB,EAASA,GAAG0/W,kBAAoBp3e,KAAKk3e,WACtTl3e,KAAKk3e,SAAWG,GAA2Br3e,KAAKk3e,UAChDl3e,KAAK62e,cAAclpU,KAAK3tK,KAAKk3e,WAEjCl3e,KAAKu3e,YACLv3e,KAAK82e,kBAAkB5ye,KAAKlE,KAAKm3e,UAAYn3e,KAAKm3e,SAAStQ,kBAE1D7me,KAAKw3e,gBAAmBx3e,KAAKw3e,eAAexgd,WAG7C/Z,EAAQord,UACRroe,KAAKw3e,eAAexgd,SAASqxc,QAAUroe,KAAKqoe,SAE5Cprd,EAAQurd,UACRxoe,KAAKw3e,eAAexgd,SAASwxc,QAAUxoe,KAAKwoe,SAE5Cvrd,EAAQyrd,eACR1oe,KAAKw3e,eAAexgd,SAAS0xc,aAAe1oe,KAAK0oe,cAEjDzrd,EAAQ2rd,gBACR5oe,KAAKw3e,eAAexgd,SAAS4xc,cAAgB5oe,KAAK4oe,eAElD3rd,EAAQ6rd,eACR9oe,KAAKw3e,eAAexgd,SAAS8xc,aAAe9oe,KAAK8oe,cAEjD7rd,EAAQsuJ,cACwB,QAA3B3zC,GAAK53H,KAAK0kF,mBAAgC,IAAPkzC,QAAgB,EAASA,GAAGhyC,gBAChE5lF,KAAK0kF,YAAYkB,cAAc/D,aAAa,WAAY7hF,KAAKurK,YAEjEvrK,KAAKw3e,eAAexgd,SAASu0I,WAAavrK,KAAKurK,YAE/CtuJ,EAAQgsd,oBACRjpe,KAAKw3e,eAAexgd,SAASiyc,kBAAoBjpe,KAAKipe,mBAEtDhsd,EAAQksd,mBACRnpe,KAAKw3e,eAAexgd,SAASmyc,iBAAmBnpe,KAAKmpe,mBAG7DsO,iBAEIz3e,KAAK8lO,MAAMl1N,KAAK5Q,KAAK62e,cAAclve,UAAWpG,IACtCvB,KAAKw3e,iBACLx3e,KAAKw3e,eAAexgd,SAASz1B,MAAQA,MAIzCvB,KAAKw3e,gBACLx3e,KAAK8lO,MAAMl1N,KAAK5Q,KAAKw3e,eAAexgd,SAASyvI,YAAY9+J,UAAWpG,IAChEvB,KAAKi3e,QAAU11e,EACfvB,KAAKkwD,UAIjB45G,kBACI9pK,KAAKg3e,QAAQlse,MAAKsJ,OAAO8rI,GAAUA,IAAWlgJ,KAAKkgJ,SAASwlG,OAAU1lP,KAAK42e,aACtEjve,UAAU,IAAM3H,KAAKmlP,UAM9BzhM,OACQ1jD,KAAK+2e,YAAYnwB,UAGrB5md,KAAKu3e,YACLv3e,KAAKw3e,eAAiBx3e,KAAK+2e,YACtBx0Z,QAAQ,CAAEA,QAASikZ,GAAoBhkZ,SAAUxiF,KAAK8kF,UACtDkK,OAAOumZ,IACP3iU,GAAG5yK,KAAKotC,WACRgkB,SAAS,CAAE41Z,WAAYhnd,KAAKk9J,YAC5Bx5G,KAAK,CAAEw5G,UAAWl9J,KAAKk9J,YAC5Bl9J,KAAKy3e,kBAMTvnb,OACQlwD,KAAKkgJ,QACLlgJ,KAAK+2e,YAAY7mb,OAErB,UAAW/jD,KAAOnM,KAAK8lO,MACnB35N,EAAIC,cAEJpM,KAAK8kF,QAAQ4hZ,oBACb1me,KAAKghR,UAAU85C,kBAAkB96T,KAAK0kF,YAAYkB,eAAec,QAOzEy+J,SACI,GAAInlP,KAAKkgJ,OACL,OAAOlgJ,KAAKkwD,OAEhBlwD,KAAK0jD,OAKT6zb,YACI,IAAIvve,EACJhI,KAAK8kF,QAAUljF,OAAOc,OAAO,GAAI1C,KAAK8kF,QAAS9kF,KAAKm3e,SAAU,CAC1D51e,MAAOm2e,GAAa13e,KAAKk3e,SAAUl3e,KAAKwoe,SAAWxoe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS3O,SAClFj9T,WAAYvrK,KAAKurK,WACjB88T,QAASroe,KAAKqoe,SAAWroe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS9O,QACxDG,QAASxoe,KAAKwoe,SAAWxoe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS3O,QACxDE,aAAc1oe,KAAK0oe,cAAgB1oe,KAAKm3e,UAAYn3e,KAAKm3e,SAASzO,aAClEO,kBAAmBjpe,KAAKipe,mBAAqBjpe,KAAKm3e,UAAYn3e,KAAKm3e,SAASlO,kBAC5EE,iBAAkBnpe,KAAKmpe,kBAAoBnpe,KAAKm3e,UAAYn3e,KAAKm3e,SAAShO,iBAC1EP,cAAe5oe,KAAK4oe,eAAiB5oe,KAAKm3e,UAAYn3e,KAAKm3e,SAASvO,cACpEE,aAAc9oe,KAAK8oe,cAAgB9oe,KAAKm3e,UAAYn3e,KAAKm3e,SAASrO,aAClEiG,QAAS/ue,KAAK+ue,SAAW/ue,KAAKm3e,UAAYn3e,KAAKm3e,SAASpI,QACxDqI,gBAA0C,QAAxBpve,EAAKhI,KAAKm3e,gBAA6B,IAAPnve,OAAgB,EAASA,EAAGove,kBAGtFO,2BACI,IAAI3ve,GACsB,QAArBA,EAAKhI,KAAK8lO,aAA0B,IAAP99N,OAAgB,EAASA,EAAGvH,UAC1DT,KAAK8lO,MAAMrgO,IAAI0G,GAAOA,EAAIC,eAC1BpM,KAAK8lO,MAAMrlO,OAAS,GAG5ByL,cACIlM,KAAK+2e,YAAY3tZ,UACjBppF,KAAKg3e,QAAQ9ye,MAAK,GACdlE,KAAK42e,aACL52e,KAAK42e,WAAW1ye,KAAK,MACrBlE,KAAK42e,WAAW32Z,YAEpBjgF,KAAK23e,4BAGbjB,SAAsB1ve,UAAtB,0BAAkH0ve,GA/yEbh2e,MA+yEoD8le,IA/yEpD9le,MA+yEmFA,OA/yEnFA,MA+yE6GA,OA/yE7GA,MA+yEsIA,OA/yEtIA,MA+yEsKgwF,SAC3QgmZ,EAAsBjvZ,UAhzE+E/mF,MAgzErG,MAAsGg2e,EAAtG55b,sjBAhzEqGp8C,SAqlE/Fg2e,MAodAkB,SAAN,gBAAkDpC,GAC9C71e,YAAYqhR,EAAWl8L,EAASknZ,GAAQruP,GAAUkuP,GAAUvD,GAAUmN,IAClElib,QACAvzD,KAAK8kF,QAAUA,EACf9kF,KAAKgse,OAASA,GACdhse,KAAK29O,SAAWA,GAChB39O,KAAK6re,SAAWA,GAChB7re,KAAKy1e,iBAAmBA,GACxBz1e,KAAKymK,YAAc,IAAIthF,MACvBnlF,KAAK01e,eAAiB,OACtB11e,KAAK63e,YAAc,GACnB73e,KAAKkoe,YAAc,GACnBloe,KAAK8lO,MAAQ,GACb9lO,KAAK21e,eAAgB,EACrB31e,KAAKsoe,SAAWA,GAChBtoe,KAAKioe,aAAejoe,KAAK8kF,QAAQgpZ,QAAU,GAC3C9te,KAAKs2e,kBAAoBt2e,KAAK8kF,QAAQ8iZ,uBACtC5mN,EAAU8E,SAASnoC,GAAS/3J,cAAe,UAAW,SACtDo7L,EAAU8E,SAASnoC,GAAS/3J,cAAe,WAAY,YAEvDrkF,UAAMA,GACN,IAAIyG,EACqB,QAAxBA,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGike,cAAc1qe,GAE/Es7C,WACI,IAAI70C,EAAIC,EACRjI,KAAKy1e,iBAAiB1mD,WAAW,CAC7Bt0M,UAAW,CACPr6B,KAAM,CACFx2I,QAAS5pE,KAAK8kF,QAAQu8D,kBAE1Bu0V,gBAAiB,CACbhsa,QAAS5pE,KAAK8kF,QAAQu8D,mBAG9BymV,iBAAkB9ne,KAAK8kF,QAAQgjZ,mBAEK,QAAvC9/d,EAAKhI,KAAKy1e,iBAAiBI,cAA2B,IAAP7te,GAAyBA,EAAG8C,MAAK2lC,OAAK,IAAI9oC,UAAU,KAChG3H,KAAKy1e,iBAAiBzmP,UAElBhvP,KAAK01e,eADL11e,KAAK8kF,QAAQw8D,WACSthJ,KAAK81e,cAAgB,cAAgB,gBAGzC,eAE1B91e,KAAK+zP,eAAiB/zP,KAAK8kF,QAAQivK,eACnC/zP,KAAK+1e,oBAAsB/1e,KAAK8kF,QAAQ+vZ,qBACxC70e,KAAK6ne,eAAiB7ne,KAAK8kF,QAAQ+iZ,eACV,QAAxB5/d,EAAKjI,KAAKsoe,gBAA6B,IAAPrge,GAAyBA,EAAGxF,KAAKzC,KAAKgse,QAAQj9C,WAAW/ub,KAAK8kF,SAASonZ,YAAYlse,MAAM0se,iBAAiB1se,MAAM6se,gCAGjJ7se,KAAK8lO,MAAMl1N,KAAK5Q,KAAKgse,OAChBzwc,OAAOhI,IAASA,GAAM25c,eACtBvle,UAAUmwe,KACX93e,KAAKymK,YAAYkH,KAAKmqU,IACtB93e,KAAKkoe,YAAc4P,IAAa,MAGxChuU,kBACI,IAAI9hK,EAAIC,EAAIyvH,GACZ13H,KAAKooe,gBAAgBj0c,IAAiC,QAA5BnsB,EAAKhI,KAAKmse,oBAAiC,IAAPnke,OAAgB,EAASA,EAAGL,UAAW8zB,KACjG,IAAIzzB,GAAIC,GACJzC,MAAM0L,QAAQuqB,KAAQA,GAAIh7B,QAAU,IACJ,QAA/BuH,GAAKhI,KAAKu2e,uBAAoC,IAAPvue,IAAyBA,GAAGmjK,WAAW1vI,GAAI,IACrD,QAA7BxzB,GAAKjI,KAAK+3e,qBAAkC,IAAP9ve,IAAyBA,GAAGkjK,WAAW1vI,GAAI,QAGzD,QAA/BxzB,EAAKjI,KAAKu2e,uBAAoC,IAAPtue,GAAyBA,EAAGmjK,iBAAkB3vI,KAClFz7B,KAAKwpe,kBAAkB/tc,GAAK,KAEF,QAA7Bi8F,GAAK13H,KAAK+3e,qBAAkC,IAAPrgX,IAAyBA,GAAG0zC,iBAAkB3vI,KAChFz7B,KAAKwpe,kBAAkB/tc,GAAK,KAGhCq6c,oBACA,OAAO91e,KAAK29O,SAAS/3J,cAAcgR,UAAUxP,SAAS,OAE1Dm/Y,wBACIvme,KAAKy1e,iBAAiB9mP,SAE1B66O,kBAAkBjje,EAAM2mB,GACpBltB,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAAS5B,WAAW1je,EAAM2mB,IAExD64c,iBAAiBz1P,IACRA,IAGctwO,KAAK+1e,oBAAsBzlQ,EAAI/kE,WAAc+kE,EAAIs8P,cAAgBt8P,EAAI/kE,aAIxFvrK,KAAKg4e,iBAAiB1nQ,GAE1B21P,mBAAmB31P,GACf,GAAKA,IAAOA,EAAI/kE,WAIhB,IADA+kE,EAAInkB,YAAa,EACY,UAAzBnsN,KAAK8kF,QAAQiqZ,QAAqB,CAClC,GAAIz+P,EAAI/kE,WACJ,OASJ,YAPAvrK,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAASjG,WAAW,CAC1C//M,KAAM,CACFx1C,MAAOqqC,GAASpqC,EAAI/pO,MACpB4pO,KAAMqD,GAAYlD,EAAI/pO,OAE1Bkme,SAAU,SAIlBzse,KAAKg4e,iBAAiB1nQ,IAE1B61P,kBAAkB71P,GACd,GAAKA,IAAOA,EAAI/kE,WAIhB,IADA+kE,EAAInkB,YAAa,EACY,SAAzBnsN,KAAK8kF,QAAQiqZ,QAAoB,CACjC,GAAIz+P,EAAI/kE,WACJ,OAQJ,YANAvrK,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAASjG,WAAW,CAC1C//M,KAAM,CACF11C,KAAMqD,GAAYlD,EAAI/pO,OAE1Bkme,SAAU,WAIlBzse,KAAKg4e,iBAAiB1nQ,IAE1B0nQ,iBAAiB1nQ,GAMmB,IAA5BtwO,KAAK63e,YAAYp3e,SACjBT,KAAK63e,YACDvnQ,EAAI/pO,MAAQvG,KAAK63e,YAAY,GACvB,CAAC73e,KAAK63e,YAAY,GAAIvnQ,EAAI/pO,MAC1B,CAAC+pO,EAAI/pO,OAEfvG,KAAK8kF,QAAQmzZ,cACbj4e,KAAKk4e,0BAA0B5nQ,EAAI/pO,MAEP,IAA5BvG,KAAK63e,YAAYp3e,SACjBT,KAAK63e,YAAc,CAACvnQ,EAAI/pO,MACpBvG,KAAK8kF,QAAQmzZ,cACbj4e,KAAKk4e,0BAA0B5nQ,EAAI/pO,OAG3CvG,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAASpB,YAAYzqe,KAAK63e,cACpB,IAA5B73e,KAAK63e,YAAYp3e,SACjBT,KAAK63e,YAAc,IAG3B3re,cACI,IAAIlE,EACJ,UAAWmE,KAAOnM,KAAK8lO,MACnB35N,EAAIC,cAERpM,KAAKooe,gBAAgBh8d,cACI,QAAxBpE,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGk9C,UAEjEohb,mBAAmBmD,GACXA,IACAzpe,KAAK63e,YAAcpO,EAAMloe,iBAAiBJ,KAAO,CAACsoe,EAAMloe,OAASkoe,EAAMloe,OAE3EvB,KAAKgse,OAAO7rc,SAASngC,KAAK6re,SAASpB,YAAYzqe,KAAK63e,cAExDK,0BAA0BC,GACtB,IAAInwe,EACJ,IAAIiwe,GAAe,IAAI92e,KAAKg3e,GAC5B,GAAIn4e,KAAK8kF,QAAQ0jZ,QAAS,CACtB,MAAM4P,GAA6Bp4e,KAAK8kF,QAAQ0jZ,QAAQrme,UAClDk2e,GAA6BF,EAAiBh2e,UApwEtC,OAowEoDnC,KAAK8kF,QAAQmzZ,cAAgB,GAC/FA,GAAeI,GAA6BD,GACxC,IAAIj3e,KAAKnB,KAAK8kF,QAAQ0jZ,SACtB,IAAIrne,KAAKk3e,SAGbJ,GAAajqB,QAAQmqB,EAAiBx9N,WAAa36Q,KAAK8kF,QAAQmzZ,cAAgB,IAE3D,QAAxBjwe,EAAKhI,KAAKsoe,gBAA6B,IAAPtge,GAAyBA,EAAGyge,WAAWwP,KAGhFL,SAAoC5we,UAApC,0BAAgI4we,GAruF3Bl3e,MAquFgFA,OAruFhFA,MAquFyG8le,IAruFzG9le,MAquFwI0ye,IAruFxI1ye,MAquFsKA,OAruFtKA,MAquFgMipe,IAruFhMjpe,MAquFgOkre,IAruFhOlre,MAquFgQ2/P,SACrWu3O,EAAoCxvZ,UAtuFiE1nF,MAsuFrG,MAAoHk3e,EAApH96b,8EAtuFqGp8C,KAsuFrG81e,MAtuFqG91e,KAsuFrG43e,mBAtuFqG53e,MAsuFrG+1e,GAtuFqG/1e,WAsuFrG8yN,4BAtuFqG9yN,MAsuFrG+1e,GAtuFqG/1e,WAsuFrG8yN,8CAAiO,SAAjO,aAAyP,WAAzP,4CAtuFqG9yN,MAsuFrG,4BAAoH8yN,0BAApH/tD,UAtuFqG/kK,MAsuF6P,CAAC0ye,GAAmBxH,KAtuFjRlre,OAsuFrGi9C,u2CAtuFqGj9C,MAsuF8jB,oBAtuF9jBA,MAsuFrG,iBAtuFqGA,MAsuFynB,OAtuFznBA,MAsuFynB,kBAA9tBg8D,YAAw5I63a,GAAwLnnI,MAAsWgoI,GAAgKC,GAAgKC,GAAqKvB,MAAkFA,MAA4EA,MAAsEA,MAAkFA,OAAjtL5jR,OAAu0L4jR,OAAv0LluT,gCAAo2L,CAACmiT,OA7L/1L4P,MA0XN,MAAMW,GAA+B,CACjCh2Z,QAAS8jF,MACTC,aAAaC,SAAW,IAAMiyU,IAC9BrsW,OAAO,GAELssW,GAA0B,CAC5Bl2Z,QAASuwE,MACTwT,aAAaC,SAAW,IAAMiyU,IAC9BrsW,OAAO,OAELqsW,SAAN,QACI74e,YAAY+4e,EAAS5M,EAAgB9qN,GAAWqzN,GAAQt2V,IACpD/9I,KAAK04e,QAAUA,EACf14e,KAAK8re,eAAiBA,EACtB9re,KAAKghR,UAAYA,GACjBhhR,KAAKq0e,OAASA,GACdr0e,KAAK+9I,gBAAkBA,GACvB/9I,KAAK0iV,UAAY9oK,SAAS/3K,UAC1B7B,KAAKssa,WAAa1yP,SAAS/3K,UAC3B7B,KAAK24e,iBAAmB/+T,SAAS/3K,UACjC7B,KAAK8lO,MAAQ,IAAIrwI,MAErB54C,WACI,MAAM+7b,EAAcr3e,IAChBvB,KAAK64e,eAAet3e,GAChBvB,KAAKu1F,SAAWh0F,IAChBvB,KAAKu1F,OAASh0F,EACdvB,KAAK0iV,UAAUnhV,GACfvB,KAAKssa,cAETtsa,KAAK+9I,gBAAgB51D,gBAGrBnoF,KAAK04e,QAAQxB,UACb0B,EAAW54e,KAAK04e,QAAQxB,UAG5Bl3e,KAAK8lO,MAAM3xM,IAAIn0B,KAAK04e,QAAQ7B,cAAclve,UAAUixe,IAEpD54e,KAAK8lO,MAAM3xM,IAAIn0B,KAAK8re,eAAeJ,aAAa/je,UAAU,KACtD3H,KAAK64e,eAAe74e,KAAKu1F,WAE7Bv1F,KAAK8lO,MAAM3xM,IAAIn0B,KAAK04e,QAAQpB,iBAAiBxse,MAAKsyI,UAAwBz1I,UAAU,KAChF3H,KAAK64e,eAAe74e,KAAKu1F,WAGjCrpF,cACIlM,KAAK8lO,MAAM15N,cAEf0se,eAAexjd,IACW,KAAlBA,EAAMg0D,SAAiC,UAAfh0D,EAAMjQ,OAC9BrlB,KAAKkwD,OAGb2ob,eAAet3e,GACX,MAAM2se,EAAcjsV,EACdulI,GAAWjmR,EAAOvB,KAAK04e,QAAQ5zZ,QAAQ+hZ,gBAAiB7me,KAAK8re,eAAeH,eADrD,GAE7B3re,KAAKghR,UAAU+d,YAAY/+R,KAAKq0e,OAAOzuZ,cAAe,QAASsoZ,GAEnE/nb,SAAS7wB,GAELt1B,KAAKmrK,WAAW71I,EAAMlkB,OAAO7P,OAC7BvB,KAAK0iV,UAAU1iV,KAAKu1F,QAChBv1F,KAAK04e,QAAQ5zZ,QAAQ4hZ,oBACrB1me,KAAKghR,UAAU85C,kBAAkB96T,KAAKq0e,OAAOzuZ,eAAec,QAEhE1mF,KAAKssa,aAEThzF,SAAS5zU,GACL,MAAM6vF,EAAS7vF,EAAEnE,MACjB,GAAe,MAAXg0F,GAAsD,KAAXA,EAC3C,OAAO,KAEX,GAAI9zF,EAAO8zF,GAAS,CAEhB,IADqBkqY,EAAYlqY,GAE7B,MAAO,CAAEwjZ,OAAQ,CAAEv6Z,QAAS+W,IAEhC,GAAIv1F,KAAK04e,SAAW14e,KAAK04e,QAAQrQ,SAAWrE,GAASzuY,EAAQv1F,KAAK04e,QAAQrQ,QAAS,QAC/E,YAAKl9T,WAAWnrK,KAAK04e,QAAQrQ,SACtB,CAAE0Q,OAAQ,CAAE1Q,QAASroe,KAAK04e,QAAQrQ,UAE7C,GAAIroe,KAAK04e,SAAW14e,KAAK04e,QAAQlQ,SAAWnE,GAAQ9uY,EAAQv1F,KAAK04e,QAAQlQ,QAAS,QAC9E,YAAKr9T,WAAWnrK,KAAK04e,QAAQlQ,SACtB,CAAEuQ,OAAQ,CAAEvQ,QAASxoe,KAAK04e,QAAQlQ,UAGjD,OAAO,KAEXrrJ,0BAA0BrxT,GACtB9rB,KAAK24e,iBAAmB7sd,EAE5Bq/I,WAAW5pK,GACP,GAAKA,EAGA,CACD,MAAMy3e,EAAah5e,KAAK8re,eAAeH,cAEvC,IADgBld,GAAUuqB,GAEtB,MAAM,IAAIn0e,MAAO,WAAUm0e,6DAE/Bh5e,KAAKu1F,OAASn1E,GAAU7e,EAAOvB,KAAK04e,QAAQ5zZ,QAAQ+hZ,gBAAiB7me,KAAK8re,eAAeH,eACrF3re,KAAK04e,QAAQ5zZ,QAAQ2hZ,SACrBzme,KAAKu1F,OAAS0jZ,GAAWj5e,KAAKu1F,cAVlCv1F,KAAKu1F,YAAS,EAalBv1F,KAAK04e,QAAQzB,QAAUj3e,KAAKu1F,OAEhC+1E,iBAAiBC,GACbvrK,KAAK04e,QAAQntU,WAAaA,EACtBA,EACAvrK,KAAKghR,UAAUn/L,aAAa7hF,KAAKq0e,OAAOzuZ,cAAe,WAAY,YAGvE5lF,KAAKghR,UAAUv6L,gBAAgBzmF,KAAKq0e,OAAOzuZ,cAAe,YAE9DwlF,iBAAiBt/I,GACb9rB,KAAK0iV,UAAY52T,EAErBu/I,kBAAkBv/I,GACd9rB,KAAKssa,WAAaxgZ,EAEtBwkY,SACItwZ,KAAKssa,aAETp8W,OACIlwD,KAAK04e,QAAQxob,OACblwD,KAAKghR,UAAU85C,kBAAkB96T,KAAKq0e,OAAOzuZ,eAAe2qU,OACxDvwZ,KAAK04e,QAAQ5zZ,QAAQ4hZ,oBACrB1me,KAAKghR,UAAU85C,kBAAkB96T,KAAKq0e,OAAOzuZ,eAAec,SAIxE8xZ,SAA2Bxxe,UAA3B,0BAAuHwxe,GAziGlB93e,MAyiG8Dg2e,GAAnK,GAziGqGh2e,MAyiG4G6qe,IAziG5G7qe,MAyiGwIA,OAziGxIA,MAyiGiKA,OAziGjKA,MAyiG2LA,SAChS83e,EAA2B/wZ,UA1iG0E/mF,MA0iGrG,MAA2G83e,EAA3G17b,wEA1iGqGp8C,MA0iGrG,6BAA2G8yN,gBA1iGN9yN,CA0iGrG,8BAA2G8yN,UA1iGN9yN,CA0iGrG,8BAA2G8yN,sBA1iGN9yN,CA0iGrG,yBAA2G8yN,cAA3G/tD,UA1iGqG/kK,MA0iGqN,CAAC63e,GAA8BE,QA7HnVD,MAiJAU,SAAN,gBAAsC1S,GAClC7me,cACI4zD,SAASwK,WAET/9D,KAAK2me,cAAgB,GAG7BuS,SAAwBlye,UAAxB,iDArkGqGtG,MAqkGew4e,KAApH1lR,GAAoH0lR,IAApH,GACAA,EAAwB/xe,WAtkG6EzG,MAskGrG,OAAwHw4e,EAAxHv4e,QAAwHu4e,EAAxH,qBAA6J,SARvJA,MAgBAC,SAAN,QACIx5e,YAAYmlF,EAASJ,EAAas8L,GAAWvb,GAAmBkxO,IAC5D32e,KAAK8kF,QAAUA,EACf9kF,KAAK0kF,YAAcA,EACnB1kF,KAAKghR,UAAYA,GAIjBhhR,KAAKk9J,UAAY,SAKjBl9J,KAAK4nd,SAAW,QAIhB5nd,KAAK0ma,cAAe,EAIpB1ma,KAAKotC,UAAY,OACjBptC,KAAK6nd,YAAa,EAClB7nd,KAAK42e,WAAa,IAAIlze,KAItB1D,KAAKurK,YAAa,EAIlBvrK,KAAK62e,cAAgB,IAAI1xZ,MACzBnlF,KAAK8lO,MAAQ,GACb9lO,KAAKo5e,mBAAqB,IAAI11e,KAC9B1D,KAAK+2e,YAAcJ,GAAI/tB,aAAalkY,EAAa+gL,GAAmBub,IACpEp/Q,OAAOc,OAAO1C,KAAM8kF,GACpB9kF,KAAK6jD,QAAU7jD,KAAK+2e,YAAYlzb,QAChC7jD,KAAK4jD,SAAW5jD,KAAK+2e,YAAYnzb,SACjC5jD,KAAKg3e,QAAU,IAAIxve,KAAgBxH,KAAKkgJ,QAKxCA,aACA,OAAOlgJ,KAAK+2e,YAAYnwB,QAExB1mU,WAAO3+I,GACPvB,KAAKg3e,QAAQ9ye,KAAK3C,GAKlB01e,YAAQ11e,GACR,IAAIyG,EACAhI,KAAKk3e,WAAa31e,IAGlBA,IAAmC,QAAxByG,EAAKhI,KAAKm3e,gBAA6B,IAAPnve,OAAgB,EAASA,EAAGove,mBACvE71e,EAAQ83e,GAAqC93e,IAEjDvB,KAAKk3e,SAAW31e,EAChBvB,KAAK62e,cAAclpU,KAAKpsK,IAExB+3e,wBACA,OAAOt5e,KAAKo5e,mBAEhBv8b,WACI78C,KAAK42e,WAAa,IAAIlze,KACtB1D,KAAK+2e,YAAYl0U,OAAO,CACpB6jQ,aAAc1ma,KAAK0ma,aACnBmhD,WAAY7nd,KAAK6nd,WACjBD,SAAU5nd,KAAK4nd,SACflka,KAAM,IAAM1jD,KAAK0jD,SAErB1jD,KAAKu3e,YAETl9Y,YAAYp9E,GACR,IAAIjV,EAAIC,GAAIyvH,GAAIE,GACZ36G,EAAQk6d,YACyC,QAA3Cnve,EAAKiV,EAAQk6d,SAAYvsU,oBAAiC,IAAP5iK,OAAgB,EAASA,EAAGove,mBAAiE,QAA3Cnve,GAAKgV,EAAQk6d,SAAYvsU,oBAAiC,IAAP3iK,QAAgB,EAASA,GAAGmve,oBAAmE,QAA5C1/W,GAAKz6G,EAAQk6d,SAAYxnZ,qBAAkC,IAAP+nC,QAAgB,EAASA,GAAG0/W,kBAAoBp3e,KAAKk3e,WACtTl3e,KAAKk3e,SAAWmC,GAAqCr5e,KAAKk3e,UAC1Dl3e,KAAK62e,cAAclpU,KAAK3tK,KAAKk3e,WAEjCl3e,KAAKu3e,YACLv3e,KAAKo5e,mBAAmBl1e,KAAK+Y,EAAQk6d,SAAYvsU,cAAgB3tJ,EAAQk6d,SAAYvsU,aAAam8T,mBAEjG/me,KAAKw3e,gBAAmBx3e,KAAKw3e,eAAexgd,WAG7C/Z,EAAQord,UACRroe,KAAKw3e,eAAexgd,SAASqxc,QAAUroe,KAAKqoe,SAE5Cprd,EAAQurd,UACRxoe,KAAKw3e,eAAexgd,SAASwxc,QAAUxoe,KAAKwoe,SAE5Cvrd,EAAQ2rd,gBACR5oe,KAAKw3e,eAAexgd,SAAS4xc,cAAgB5oe,KAAK4oe,eAElD3rd,EAAQ6rd,eACR9oe,KAAKw3e,eAAexgd,SAAS8xc,aAAe9oe,KAAK8oe,cAEjD7rd,EAAQyrd,eACR1oe,KAAKw3e,eAAexgd,SAAS0xc,aAAe1oe,KAAK0oe,cAEjDzrd,EAAQsuJ,cACwB,QAA3B3zC,GAAK53H,KAAK0kF,mBAAgC,IAAPkzC,QAAgB,EAASA,GAAGhyC,gBAChE5lF,KAAK0kF,YAAYkB,cAAc/D,aAAa,WAAY7hF,KAAKurK,YAEjEvrK,KAAKw3e,eAAexgd,SAASu0I,WAAavrK,KAAKurK,YAE/CtuJ,EAAQgsd,oBACRjpe,KAAKw3e,eAAexgd,SAASiyc,kBAAoBjpe,KAAKipe,oBAG9Dn/T,kBACI9pK,KAAKg3e,QAAQlse,MAAKsJ,OAAO8rI,GAAUA,IAAWlgJ,KAAKkgJ,SAASwlG,OAAU1lP,KAAK42e,aACtEjve,UAAU,IAAM3H,KAAKmlP,UAM9BzhM,OACQ1jD,KAAK+2e,YAAYnwB,UAGrB5md,KAAKu3e,YACLv3e,KAAKw3e,eAAiBx3e,KAAK+2e,YACtBx0Z,QAAQ,CAAEA,QAASikZ,GAAoBhkZ,SAAUxiF,KAAK8kF,UACtDkK,OAAO4oZ,IACPhlU,GAAG5yK,KAAKotC,WACRgkB,SAAS,CAAE41Z,WAAYhnd,KAAKk9J,YAC5Bx5G,KAAK,CAAEw5G,UAAWl9J,KAAKk9J,YAC5Bl9J,KAAKy3e,kBAETA,iBAEIz3e,KAAK8lO,MAAMl1N,KAAK5Q,KAAK62e,cAAclve,UAAWpG,IACtCvB,KAAKw3e,iBACLx3e,KAAKw3e,eAAexgd,SAASz1B,MAAQA,MAIzCvB,KAAKw3e,gBACLx3e,KAAK8lO,MAAMl1N,KAAK5Q,KAAKw3e,eAAexgd,SAASyvI,YACxC37J,MAAKsJ,OAAQ+sJ,GAAUA,GAASA,EAAM,MAAQA,EAAM,KACpDx5J,UAAWpG,IACZvB,KAAKi3e,QAAU11e,EACfvB,KAAKkwD,UAOjBqnb,YACI,IAAIvve,EACJhI,KAAK8kF,QAAUljF,OAAOc,OAAO,GAAI1C,KAAK8kF,QAAS9kF,KAAKm3e,SAAU,CAC1D51e,MAAOm2e,GAAa13e,KAAKk3e,SAAUl3e,KAAKwoe,SAAWxoe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS3O,SAClFj9T,WAAYvrK,KAAKurK,WACjB88T,QAASroe,KAAKqoe,SAAWroe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS9O,QACxDG,QAASxoe,KAAKwoe,SAAWxoe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS3O,QACxDE,aAAc1oe,KAAK0oe,cAAgB1oe,KAAKm3e,UAAYn3e,KAAKm3e,SAASzO,aAClEO,kBAAmBjpe,KAAKipe,mBAAqBjpe,KAAKm3e,UAAYn3e,KAAKm3e,SAASlO,kBAC5EL,cAAe5oe,KAAK4oe,eAAiB5oe,KAAKm3e,UAAYn3e,KAAKm3e,SAASvO,cACpEE,aAAc9oe,KAAK8oe,cAAgB9oe,KAAKm3e,UAAYn3e,KAAKm3e,SAASrO,aAClEgF,OAAQyL,GAAuBv5e,KAAKm3e,UAAYn3e,KAAKm3e,SAASrJ,OAAQ9te,KAAKwoe,SAAWxoe,KAAKm3e,UAAYn3e,KAAKm3e,SAAS3O,SACrHyP,aAAcj4e,KAAKm3e,UAAYn3e,KAAKm3e,SAASc,aAC7Cb,gBAA0C,QAAxBpve,EAAKhI,KAAKm3e,gBAA6B,IAAPnve,OAAgB,EAASA,EAAGove,kBAOtFlnb,OACQlwD,KAAKkgJ,QACLlgJ,KAAK+2e,YAAY7mb,OAErB,UAAW/jD,KAAOnM,KAAK8lO,MACnB35N,EAAIC,cAEJpM,KAAK8kF,QAAQ4hZ,oBACb1me,KAAKghR,UAAU85C,kBAAkB96T,KAAK0kF,YAAYkB,eAAec,QAOzEy+J,SACI,GAAInlP,KAAKkgJ,OACL,OAAOlgJ,KAAKkwD,OAEhBlwD,KAAK0jD,OAETi0b,2BACI,IAAI3ve,GACsB,QAArBA,EAAKhI,KAAK8lO,aAA0B,IAAP99N,OAAgB,EAASA,EAAGvH,UAC1DT,KAAK8lO,MAAMrgO,IAAI0G,GAAOA,EAAIC,eAC1BpM,KAAK8lO,MAAMrlO,OAAS,GAG5ByL,cACIlM,KAAK+2e,YAAY3tZ,UACjBppF,KAAKg3e,QAAQ9ye,MAAK,GACdlE,KAAK42e,aACL52e,KAAK42e,WAAW1ye,KAAK,MACrBlE,KAAK42e,WAAW32Z,YAEpBjgF,KAAK23e,4BAGbwB,SAA2Bnye,UAA3B,0BAAuHmye,GAnyGlBz4e,MAmyG8Dw4e,IAnyG9Dx4e,MAmyGkGA,OAnyGlGA,MAmyG4HA,OAnyG5HA,MAmyGqJA,OAnyGrJA,MAmyGqLgwF,SAC1RyoZ,EAA2B1xZ,UApyG0E/mF,MAoyGrG,MAA2Gy4e,EAA3Gr8b,0gBApyGqGp8C,SA8kG/Fy4e,MAmQN,MAAMK,GAAoC,CACtCj3Z,QAAS8jF,MACTC,aAAaC,SAAW,IAAMkzU,IAC9BttW,OAAO,GAELutW,GAA+B,CACjCn3Z,QAASuwE,MACTwT,aAAaC,SAAW,IAAMkzU,IAC9BttW,OAAO,OAELstW,SAAN,QACI95e,YAAY+4e,EAAS5M,EAAgB9qN,GAAWqzN,GAAQt2V,IACpD/9I,KAAK04e,QAAUA,EACf14e,KAAK8re,eAAiBA,EACtB9re,KAAKghR,UAAYA,GACjBhhR,KAAKq0e,OAASA,GACdr0e,KAAK+9I,gBAAkBA,GACvB/9I,KAAK0iV,UAAY9oK,SAAS/3K,UAC1B7B,KAAKssa,WAAa1yP,SAAS/3K,UAC3B7B,KAAK24e,iBAAmB/+T,SAAS/3K,UACjC7B,KAAK8lO,MAAQ,IAAIrwI,MAErB54C,WAWQ78C,KAAK04e,QAAQxB,UAVG31e,KAChBvB,KAAK64e,eAAet3e,GAChBvB,KAAKu1F,SAAWh0F,IAChBvB,KAAKu1F,OAASh0F,EACdvB,KAAK0iV,UAAUnhV,GACfvB,KAAKssa,cAETtsa,KAAK+9I,gBAAgB51D,gBAIrBywZ,CAAW54e,KAAK04e,QAAQxB,UAG5Bl3e,KAAK8lO,MAAM3xM,IAAIn0B,KAAK04e,QAAQ7B,cAAclve,UAAWpG,IACjDvB,KAAK64e,eAAet3e,GAChBvB,KAAKu1F,SAAWh0F,IAChBvB,KAAKu1F,OAASh0F,EACdvB,KAAK0iV,UAAUnhV,GACfvB,KAAKssa,cAETtsa,KAAK+9I,gBAAgB51D,kBAGzBnoF,KAAK8lO,MAAM3xM,IAAIn0B,KAAK8re,eAAeJ,aAAa/je,UAAU,KACtD3H,KAAK64e,eAAe74e,KAAKu1F,WAE7Bv1F,KAAK8lO,MAAM3xM,IAEXn0B,KAAK04e,QAAQY,kBAAkBxue,MAAKsyI,UAAwBz1I,UAAU,KAClE3H,KAAK64e,eAAe74e,KAAKu1F,WAGjCrpF,cACIlM,KAAK8lO,MAAM15N,cAEf0se,eAAexjd,IACW,KAAlBA,EAAMg0D,SAAiC,UAAfh0D,EAAMjQ,OAC9BrlB,KAAKkwD,OAGb2ob,eAAetye,GACX,IAAI46J,EAAQ,GACZ,GAAI56J,EAAM,CACN,MAAMotD,GAAQsuF,EAAM,GACdulI,GAAWjhR,EAAK,GAAIvG,KAAK04e,QAAQ5zZ,QAAQiiZ,iBAAkB/me,KAAK8re,eAAeH,eAD5D,GAEnBvza,GAAM6pF,EAAM,GACZulI,GAAWjhR,EAAK,GAAIvG,KAAK04e,QAAQ5zZ,QAAQiiZ,iBAAkB/me,KAAK8re,eAAeH,eAD9D,GAEvBxqU,EAASxtG,IAASyE,GAAOzE,GAAQ3zD,KAAK04e,QAAQ5zZ,QAAQgiZ,eAAiB1ua,GAAM,GAEjFp4D,KAAKghR,UAAU+d,YAAY/+R,KAAKq0e,OAAOzuZ,cAAe,QAASu7E,GAEnEh7G,SAAS7wB,GAELt1B,KAAKmrK,WAAW71I,EAAMlkB,OAAO7P,OAC7BvB,KAAK0iV,UAAU1iV,KAAKu1F,QAChBv1F,KAAK04e,QAAQ5zZ,QAAQ4hZ,oBACrB1me,KAAKghR,UAAU85C,kBAAkB96T,KAAKq0e,OAAOzuZ,eAAec,QAEhE1mF,KAAKssa,aAEThzF,SAAS5zU,GACL,IAAI6vF,EAAS7vF,EAAEnE,MACf,MAAMuvB,GAAS,GACf,GAAe,MAAXykE,IAA4CrkF,EAAQqkF,GACpD,OAAO,KAEXA,EAASA,EAAO3vF,QAAQ2mB,KAAK,CAACC,GAAGnD,KAAMmD,GAAErqB,UAAYknB,GAAElnB,WACvD,MAAMw3e,GAAoBla,EAAYlqY,EAAO,IACvCqkZ,GAAqBna,EAAYlqY,EAAO,IAC9C,OAAKokZ,GAGAC,IAGD55e,KAAK04e,SAAW14e,KAAK04e,QAAQrQ,SAAWrE,GAASzuY,EAAO,GAAIv1F,KAAK04e,QAAQrQ,QAAS,UAClF9yY,EAAO,GAAKv1F,KAAK04e,QAAQrQ,QACzBv3c,GAAOlgB,KAAK,CAAEmoe,OAAQ,CAAE1Q,QAASroe,KAAK04e,QAAQrQ,YAE9Croe,KAAK04e,SAAW14e,KAAK04e,QAAQlQ,SAAWnE,GAAQ9uY,EAAO,GAAIv1F,KAAK04e,QAAQlQ,QAAS,UACjFjzY,EAAO,GAAKv1F,KAAK04e,QAAQlQ,QACzB13c,GAAOlgB,KAAK,CAAEmoe,OAAQ,CAAEvQ,QAASxoe,KAAK04e,QAAQlQ,YAE9C13c,GAAOrwB,OAAS,GAChBT,KAAKmrK,WAAW51E,GACTzkE,IAEJ,MAdI,CAAEiod,OAAQ,CAAEv6Z,QAAS+W,EAAO,KAH5B,CAAEwjZ,OAAQ,CAAEv6Z,QAAS+W,EAAO,KAmB3C4nP,0BAA0BrxT,GACtB9rB,KAAK24e,iBAAmB7sd,EAE5Bq/I,WAAW5pK,GACP,GAAKA,EAGA,CACD,MAAMy3e,EAAah5e,KAAK8re,eAAeH,cAEvC,IADgBld,GAAUuqB,GAEtB,MAAM,IAAIn0e,MAAO,WAAUm0e,6DAE/B,IAAI/V,GAAS,GACb,GAAqB,iBAAV1he,EAAoB,CAC3B,MAAMs4e,GAAmB75e,KAAK04e,QAAQ5zZ,QAAQgiZ,eAAe5ka,OAEzD+ga,GADA1he,EAAMqD,QAAQ,QAAS,IAAInE,OAAS,EAC3Bc,EAAM0E,MAAMjG,KAAK04e,QAAQ5zZ,QAAQgiZ,gBAGjCvle,EACJ0E,MAAM4ze,GAAiBp5e,OAAS,EAAIo5e,GAAmB75e,KAAK04e,QAAQ5zZ,QAAQgiZ,gBAC5Erhe,IAAIq0e,IAAQA,GAAK53a,QAG1B18D,MAAM0L,QAAQ3P,KACd0he,GAAS1he,GAEbvB,KAAKu1F,OAAS0tY,GACTx9d,IAAKq0e,IACF95e,KAAK04e,QAAQ5zZ,QAAQ2hZ,OACdwS,GAAW74d,GAAU05d,GAAM95e,KAAK04e,QAAQ5zZ,QAAQiiZ,iBAAkB/me,KAAK8re,eAAeH,gBAE1Fvrd,GAAU05d,GAAM95e,KAAK04e,QAAQ5zZ,QAAQiiZ,iBAAkB/me,KAAK8re,eAAeH,gBAEjFlme,IAAKc,IAAUmuC,MAAMnuC,GAAKK,gBAAa,EAASL,SA9BrDvG,KAAKu1F,YAAS,EAgClBv1F,KAAK04e,QAAQzB,QAAUj3e,KAAKu1F,OAEhC+1E,iBAAiBC,GACbvrK,KAAK04e,QAAQntU,WAAaA,EACtBA,EACAvrK,KAAKghR,UAAUn/L,aAAa7hF,KAAKq0e,OAAOzuZ,cAAe,WAAY,YAGvE5lF,KAAKghR,UAAUv6L,gBAAgBzmF,KAAKq0e,OAAOzuZ,cAAe,YAG9DwlF,iBAAiBt/I,GACb9rB,KAAK0iV,UAAY52T,EAGrBu/I,kBAAkBv/I,GACd9rB,KAAKssa,WAAaxgZ,EAEtBwkY,SACItwZ,KAAKssa,aAETp8W,OACIlwD,KAAK04e,QAAQxob,OACblwD,KAAKghR,UAAU85C,kBAAkB96T,KAAKq0e,OAAOzuZ,eAAe2qU,OACxDvwZ,KAAK04e,QAAQ5zZ,QAAQ4hZ,oBACrB1me,KAAKghR,UAAU85C,kBAAkB96T,KAAKq0e,OAAOzuZ,eAAec,SAIxE+yZ,SAAgCzye,UAAhC,0BAA4Hyye,GApgHvB/4e,MAogHwEy4e,GAA7K,GApgHqGz4e,MAogH2H6qe,IApgH3H7qe,MAogHuJA,OApgHvJA,MAogHgLA,OApgHhLA,MAogH0MA,SAC/S+4e,EAAgChyZ,UArgHqE/mF,MAqgHrG,MAAgH+4e,EAAhH38b,6EArgHqGp8C,MAqgHrG,6BAAgH8yN,gBArgHX9yN,CAqgHrG,8BAAgH8yN,UArgHX9yN,CAqgHrG,8BAAgH8yN,sBArgHX9yN,CAqgHrG,yBAAgH8yN,cAAhH/tD,UArgHqG/kK,MAqgHoO,CAAC84e,GAAmCE,QA1KvWD,MA8LA96E,SAAN,QAAyBhoY,iBAEjB,MAAO,CACHi+G,SAAU+pR,EACVhwU,UAAW,CACPkzD,MACAC,MACAsxV,GACAzJ,GACAiC,GACAL,GACAwO,SAKhBp7E,SAAmB33Z,UAAnB,0BAA+G23Z,IAC/GA,EAAmBv8U,UA1iHkF1hF,MA0iHrG,MAAgHi+Z,IA4BhHA,EAAmBt8U,UAtkHkF3hF,MAskHrG,UAA8I,CAAC8vD,MAAc2qC,MAAeyjU,UA7CtKD,0MCjnHAq7E,EAAoB,EACtB/1Z,QAAM,CAAEZ,OAAQ,EAAG89D,SAAU,YAC7B98D,QAH8B,oCAGKJ,QAAM,CAAEZ,OAAQ,IAAK89D,SAAU,iBAGhE84V,QAAN,QACIt6e,cACIK,KAAKmuF,UAAY,OACjBnuF,KAAKm+C,WAAY,EACjBn+C,KAAKk6e,aAAc,EACnBl6e,KAAKshJ,YAAa,EAClBthJ,KAAKm6e,wBAAyB,EAC9Bn6e,KAAK8jD,aAAe,IAAIqhC,MACxBnlF,KAAKo6e,iBAAmB,IAAIj1Z,MAC5BnlF,KAAKq6e,YAAc,IAAIl1Z,MACvBnlF,KAAKs6e,OAAS,EACdt6e,KAAKu6e,aAAe,IAAI3jd,QAAQC,IAC5B72B,KAAKw6e,oBAAsB3jd,KAIvCojd,SAAgBjze,UAAhB,0BAA4Gize,IAC5GA,EAAgB9ye,WADkFzG,MAClG,OAAgHu5e,EAAhHt5e,QAAgHs5e,EAAhH,qBAA6I,aAjBvIA,MAyBAQ,QAAN,QACI96e,YAAY63C,EAAQu3I,EAAIiyF,GAAWrjC,GAAUqnO,GACzChld,KAAKw3C,OAASA,EACdx3C,KAAK+uL,GAAKA,EACV/uL,KAAKghR,UAAYA,GACjBhhR,KAAK29O,SAAWA,GAChB39O,KAAKkgJ,QAAS,EACdlgJ,KAAK06e,0BAA4B11B,EAAS70L,MAAM6pN,GAChDh6e,KAAK+mQ,cAAgBvvN,EAAOsM,aAAan8C,UAAWpG,KAChDvB,KAAKkgJ,OAAS3+I,GACd,MAAMq+c,GAAW5/c,KAAK29O,SAAS/3J,cAAcvE,cAAc,kBAC3DrhF,KAAKghR,UAAU7/L,SAASnhF,KAAK29O,SAAS/3J,cAAcvE,cAAc,OAAQ,QACtEu+X,MAAa0C,YACbtid,KAAKghR,UAAU7/L,SAASy+X,GAAU,SAC9BA,GAAShpX,UAAUxP,SAAS,wBAA0Bw4X,GAAShpX,UAAUxP,SAAS,wBAClFpnF,KAAKghR,UAAU8E,SAAS85L,GAAU,OAAQ,QAC1C5/c,KAAKghR,UAAU8E,SAAS85L,GAAU,QAAS,MAExB,OAAnB5/c,KAAKmuF,YACLnuF,KAAKghR,UAAU8E,SAAS85L,GAAU,MAAO,QACzC5/c,KAAKghR,UAAU8E,SAAS85L,GAAU,YAAa,uBAGnDA,IAAY5/c,KAAKw3C,OAAO8pG,YACxBthJ,KAAK06e,0BAA0Bnge,OAAOqlc,IACjC79X,OAET/hF,KAAK+uL,GAAG5mG,eACRnoF,KAAK+uL,GAAGtxC,kBAGZtvD,gBACA,OAAOnuF,KAAKw3C,OAAO22C,UAGvB2gR,UAAUh1Q,GACN,OAAO95F,KAAK29O,SAAS/3J,cAAcwB,SAAS0S,GAEhD5tF,cACIlM,KAAK+mQ,cAAc36P,eAG3Bque,SAA6Bzze,UAA7B,0BAAyHyze,GAnDvB/5e,MAmDqEu5e,GAnDrEv5e,MAmDiGA,OAnDjGA,MAmDkIA,OAnDlIA,MAmD2JA,OAnD3JA,MAmDqLgwF,QACvR+pZ,EAA6BryZ,UApDqE1nF,MAoDlG,MAA6G+5e,EAA7G39b,qMApDkGp8C,cAqD9F,WArD8FA,MAwDnE,GAxDmEA,SAoDlG,MApDkGA,MAqDzF,4BArDyFA,CAqDzF,gBArDyFA,CAqDzF,iBArDyFA,MAsDzF,UAtDyFA,MAsDzF,6BAFTg8D,YAM0C2rB,MAN1Cw9F,oCA3CM40T,MAsEAE,QAAN,QACIh7e,cAEIK,KAAKm+C,WAAY,EAEjBn+C,KAAKk6e,aAAc,EAEnBl6e,KAAKshJ,YAAa,EAElBthJ,KAAKm6e,wBAAyB,GAGtCQ,SAAiB3ze,UAAjB,0BAA6G2ze,IAC7GA,EAAiBxze,WA5FiFzG,MA4FlG,OAAiHi6e,EAAjHh6e,QAAiHg6e,EAAjH,qBAA+I,SAbzIA,MAqBAC,QAAN,QACIj7e,YAAY+kF,EAAas8L,EAAWvb,GAAmBo1O,GAAMrjc,EAAQstC,GAASkgY,IAC1Ehld,KAAK0kF,YAAcA,EACnB1kF,KAAKghR,UAAYA,EACjBhhR,KAAKylQ,kBAAoBA,GACzBzlQ,KAAK66e,KAAOA,GACZ76e,KAAKw3C,OAASA,EACdx3C,KAAK8kF,QAAUA,GAIf9kF,KAAK86e,QAAS,EAEd96e,KAAK+6e,eAAgB,EACrB/6e,KAAK4pa,aAAc,EACnB5pa,KAAK+0J,eAAiB,GACtB/0J,KAAKg7e,WAAY,EAEjBh7e,KAAKw3C,OAAO2G,UAAYn+C,KAAK8kF,QAAQ3mC,UACrCn+C,KAAKw3C,OAAO0ic,YAAcl6e,KAAK8kF,QAAQo1Z,YACvCl6e,KAAKw3C,OAAO8pG,WAAathJ,KAAK8kF,QAAQw8D,WACtCthJ,KAAKw3C,OAAO2ic,uBAAyBn6e,KAAK8kF,QAAQq1Z,uBAClDn6e,KAAK06e,0BAA4B11B,GAAS70L,MAAM6pN,GAEhDh6e,KAAK+ma,UAAY/ma,KAAK66e,KACjBjyB,aAAa5od,KAAK0kF,YAAa1kF,KAAKylQ,kBAAmBzlQ,KAAKghR,WAC5Dz+L,QAAQ,CAAEA,QAAS03Z,EAAiBz3Z,SAAUxiF,KAAKw3C,SACxDx3C,KAAK6jD,QAAU7jD,KAAK+ma,UAAUljX,QAC9B7jD,KAAK4jD,SAAW5jD,KAAK+ma,UAAUnjX,SAC/B5jD,KAAK8jD,aAAe9jD,KAAKw3C,OAAOsM,aAMhC3F,cAAU58C,GACVvB,KAAKw3C,OAAO2G,UAAY58C,EAExB48C,gBACA,OAAOn+C,KAAKw3C,OAAO2G,UAKnBmjG,eAAW//I,GACXvB,KAAKw3C,OAAO8pG,WAAa//I,EAEzB+/I,iBACA,OAAOthJ,KAAKw3C,OAAO8pG,WAKnB44V,gBAAY34e,GACZvB,KAAKw3C,OAAO0ic,YAAc34e,EAE1B24e,kBACA,OAAOl6e,KAAKw3C,OAAO0ic,YAKnB3uU,eAAWhqK,GACXvB,KAAK4pa,YAAcroa,EACnBvB,KAAKw3C,OAAO4ic,iBAAiBzsU,KAAKpsK,GAC9BA,GACAvB,KAAKkwD,OAGTq7G,iBACA,OAAOvrK,KAAK4pa,YAKZ1pR,aACA,OAAIlgJ,KAAKi7e,YACEj7e,KAAK+6e,cAET/6e,KAAK+ma,UAAU6/C,QAEtB1mU,WAAO3+I,GACHA,EACAvB,KAAK0jD,OAGL1jD,KAAKkwD,OAGTgrb,YACA,QAAQ54B,UAER24B,kBACA,OAAQj7e,KAAKotC,UAEjByP,WAIQ78C,KAAKg7e,YAGTh7e,KAAKg7e,WAAY,EAEjBh7e,KAAK+ma,UAAUlkQ,OAAO,CAElB6jQ,cAAc,EACdkhD,SAAU5nd,KAAK4nd,SACflka,KAAM,IAAM1jD,KAAK0jD,SAGrB1jD,KAAK+0J,eAAenkJ,KAAK5Q,KAAKw3C,OAAO6ic,YAAY1ye,UAAWpG,GAAUvB,KAAKmlP,OAAO5jP,KAElFvB,KAAK+0J,eAAenkJ,KAAK5Q,KAAKw3C,OAAO4ic,iBAChCtve,MAAKsJ,OAAQ7S,GAAUA,IACvBoG,UAAU,IAAyB3H,KAAKkwD,UAMjDxM,OACI,IAAI1jD,KAAKkgJ,SAAUlgJ,KAAKurK,WAGxB,IAAIvrK,KAAKi7e,YAmBL,OAlBKj7e,KAAKm7e,cACNn7e,KAAKw3C,OAAO+ic,aAAankd,KAAMmkd,IAC3Bv6e,KAAK+ma,UAAUihD,aAAauyB,EAAaj1O,cAAei1O,EAAar6T,aACrElgL,KAAKm7e,aAAen7e,KAAK+ma,UAAUmhD,eACnClod,KAAKo7e,kBACDp7e,KAAKm7e,cACLn7e,KAAKghR,UAAU7/L,SAASnhF,KAAKm7e,aAAa9yT,UAAU,GAAGs2D,WAAY,QAEvE3+O,KAAKq7e,kBAGJ/kd,QAETt2B,KAAKo7e,kBACLp7e,KAAK+6e,eAAgB,EACrB/6e,KAAK6jD,QAAQ8pH,MAAK,GAClB3tK,KAAKw3C,OAAOsM,aAAa6pH,MAAK,QAC9B3tK,KAAKq7e,gBAGTr7e,KAAKw3C,OAAO+ic,aAAankd,KAAKmkd,IAE1B,MAAMe,EAAUt7e,KAAK86e,aACO,IAAhB96e,KAAK86e,QAA0B96e,KAAK86e,OAChD96e,KAAKw3C,OAAO22C,UAAYmtZ,EAAU,KAAO,OACzC,MAAMC,GAAav7e,KAAKk9J,YAAco+U,EAAU,YAAc,gBAE9Dt7e,KAAK+ma,UACA/3U,OAAOyrZ,GACP7nU,GAAG5yK,KAAKotC,WACRgkB,SAAS,CAAE41Z,WAAYu0B,KACvB73b,KAAK,CACN49B,QAASi5Z,EAAar6T,YACtBhjB,UAAWq+U,KAEfv7e,KAAKw3C,OAAOsM,aAAa6pH,MAAK,KAG7Br3I,SAMT45B,QACSlwD,KAAKkgJ,SAGNlgJ,KAAKi7e,aACLj7e,KAAKw7e,kBACLx7e,KAAKy7e,qBACLz7e,KAAK+6e,eAAgB,EACrB/6e,KAAK4jD,SAAS+pH,MAAK,IAGnB3tK,KAAK+ma,UAAU72W,OAEnBlwD,KAAKw3C,OAAOsM,aAAa6pH,MAAK,IAOlCw3E,OAAO5jP,GACH,OAAIvB,KAAKkgJ,SAAW3+I,EACTvB,KAAKkwD,OAETlwD,KAAK0jD,OAGhBorT,UAAUx5U,GAEN,OAAOt1B,KAAK0kF,YAAYkB,cAAcwB,SAAS9xD,EAAMlkB,SAChDpR,KAAK+ma,UAAU/vY,UAAYh3B,KAAK+ma,UAAU/vY,SAAS83U,UAAUx5U,EAAMlkB,QAE5Esqe,gBAAgBpmd,GACZ,MAAM01D,EAAMhrF,KAAK0kF,YAAYkB,cAAcvE,cAAc,kBACzD,IAAK2J,EACD,OAEJ,MAAM2wZ,GAAc37e,KAAK0kF,YAAYkB,cAAc62J,cAAct1J,cAC3Dy0Z,GAAS5wZ,EAAIq0J,iBAAiB,kBACpC,OAAQ/pN,EAAMg0D,cACL,GACGtpF,KAAKw3C,OAAO8ic,OAAS,GACrBsB,KAAS57e,KAAKw3C,OAAO8ic,QAAQ5zZ,QAEjC,WACC,GACG1mF,KAAKw3C,OAAO8ic,OAAS,EAAIsB,GAAOn7e,SAC5Bk7e,GAAY/kZ,YAAcglZ,GAAO57e,KAAKw3C,OAAO8ic,QAAQ1jZ,UACrDglZ,GAAO57e,KAAKw3C,OAAO8ic,QAAQ5zZ,QAG3Bk1Z,KAAS57e,KAAKw3C,OAAO8ic,QAAQ5zZ,SAM7CpxD,EAAMkuB,iBAEVt3C,cAEI,UAAWC,KAAOnM,KAAK+0J,eACnB5oJ,EAAIC,cAERpM,KAAK+ma,UAAU39U,UAEnBgyZ,mBACS94B,YACDtid,KAAK67e,eACL77e,KAAK87e,sBACL97e,KAAK+7e,mBAGbV,gBACQr7e,KAAKw3C,OAAO8pG,YAActhJ,KAAKm7e,cAC/Bxjd,WAAW,KACH33B,KAAKm7e,cACLn7e,KAAK06e,0BAA0Bnge,OAAOva,KAAKm7e,aAAa9yT,UAAU,IAAItmG,SAKtF85Z,eACQ77e,KAAKm7e,cAAgBn7e,KAAKm7e,aAAa9yT,UAAU,IACjDroL,KAAKghR,UAAU7/L,SAASnhF,KAAKm7e,aAAa9yT,UAAU,GAAI,QAGhEmzT,kBACQx7e,KAAKm7e,cAAgBn7e,KAAKm7e,aAAa9yT,UAAU,IACjDroL,KAAKghR,UAAUqB,YAAYriR,KAAKm7e,aAAa9yT,UAAU,GAAI,QAGnEyzT,sBACI,GAAI97e,KAAKm7e,cAAgBn7e,KAAKm7e,aAAa9yT,UAAU,GAAI,CACrD,MAAM2zT,EAAiBh8e,KAAKm7e,aAAa9yT,UAAU,GAAGzxF,UAAUxP,SAAS,wBAA0BpnF,KAAKm7e,aAAa9yT,UAAU,GAAGzxF,UAAUxP,SAAS,qBACrJpnF,KAAKghR,UAAU8E,SAAS9lR,KAAKm7e,aAAa9yT,UAAU,GAAI,OAAQ2zT,EAAiB,OAAS,KAC1Fh8e,KAAKghR,UAAU8E,SAAS9lR,KAAKm7e,aAAa9yT,UAAU,GAAI,QAAS2zT,EAAiB,IAAM,SAGhGD,kBACQ/7e,KAAKm7e,cAAgBn7e,KAAKm7e,aAAa9yT,UAAU,KAEjDroL,KAAKghR,UAAU8E,SAAS9lR,KAAKm7e,aAAa9yT,UAAU,GAAI,MAAOroL,KAAK86e,OAAS,OAAS,QACtF96e,KAAKghR,UAAU8E,SAAS9lR,KAAKm7e,aAAa9yT,UAAU,GAAI,YAAaroL,KAAK86e,OAAS,oBAAsB,iBACzG96e,KAAKghR,UAAU8E,SAAS9lR,KAAKm7e,aAAa9yT,UAAU,GAAI,SAAU,SAG1EozT,qBACQz7e,KAAKm7e,cAAgBn7e,KAAKm7e,aAAa9yT,UAAU,KACjDroL,KAAKghR,UAAU+E,YAAY/lR,KAAKm7e,aAAa9yT,UAAU,GAAI,OAC3DroL,KAAKghR,UAAU+E,YAAY/lR,KAAKm7e,aAAa9yT,UAAU,GAAI,aAC3DroL,KAAKghR,UAAU+E,YAAY/lR,KAAKm7e,aAAa9yT,UAAU,GAAI,YAIvEuyT,SAAoB5ze,UAApB,0BAAgH4ze,GAjYdl6e,MAiYmDA,OAjYnDA,MAiY6EA,OAjY7EA,MAiYsGA,OAjYtGA,MAiYsI4mF,MAjYtI5mF,MAiY4Ku5e,GAjY5Kv5e,MAiYwMi6e,GAjYxMj6e,MAiYqOgwF,QACvUkqZ,EAAoBnzZ,UAlY8E/mF,MAkYlG,MAAoGk6e,EAApG99b,+FAlYkGp8C,MAkYlG,wCAAoG83N,uBAlYF93N,CAkYlG,sCAAoG83N,wBAApG,KAlYkG93N,MAkYlG,kBAlYkGA,CAkYlG,gBAlYkGA,CAkYlG,mVAlYkGA,MAkYqlB,CAACu5e,OA9RlrBW,MA4UAqB,QAAN,QACIt8e,YAAY63C,EAAQkrO,EAAgBwB,IAChC1sO,EAAOgjc,oBAAoB,CACvBt6T,YAAagkG,GACb5e,cAAeod,KAI3Bu5N,SAAwBj1e,UAAxB,0BAAoHi1e,GAxblBv7e,MAwb2Du5e,GAxb3Dv5e,MAwbuFA,OAxbvFA,MAwbuHA,SACzNu7e,EAAwBx0Z,UAzb0E/mF,MAyblG,MAAwGu7e,EAAxGn/b,4FATMm/b,MAkBAC,QAAN,QACIv8e,YAAYilF,EAAoBmiV,EAAWppL,GAAUqjC,GAAWxpO,GAC5Dx3C,KAAK4kF,mBAAqBA,EAC1B5kF,KAAK+ma,UAAYA,EACjB/ma,KAAK29O,SAAWA,GAChB39O,KAAKghR,UAAYA,GACjBhhR,KAAKw3C,OAASA,EACdx3C,KAAKkgJ,QAAS,EACdlgJ,KAAK+0J,eAAiB,GAEtB/0J,KAAK+0J,eAAenkJ,KAAK5Q,KAAKw3C,OAAOsM,aAAan8C,UAAWpG,KACzDvB,KAAKkgJ,OAAS3+I,GACd+tc,IACItvc,KAAKm8e,uBAAyBn8e,KAAKghR,UAAUn+G,OAAO,WAAY,QAAUvtI,KAClEt1B,KAAKw3C,OAAO2G,WAA8B,IAAjB7oB,GAAM40U,SAC9BlqW,KAAK29O,SAAS/3J,cAAcwB,SAAS9xD,GAAMlkB,WAC1CpR,KAAKw3C,OAAO0ic,cAAel6e,KAAK+ma,UAAUj4D,UAAUx5U,OACtDt1B,KAAKw3C,OAAO6ic,YAAY1sU,MAAK,GAC7B3tK,KAAK4kF,mBAAmB64D,mBAGhCz9I,KAAKo8e,kBAAoBp8e,KAAKghR,UAAUn+G,OAAO7iK,KAAK29O,SAAS/3J,cAAe,YAAa,KACjF5lF,KAAKw3C,OAAO2G,YACZn+C,KAAKw3C,OAAO6ic,YAAY1sU,MAAK,GAC7B3tK,KAAK4kF,mBAAmB64D,qBAKhCz9I,KAAKm8e,wBAA0Bn8e,KAAKm8e,yBACpCn8e,KAAKo8e,mBAAqBp8e,KAAKo8e,wBAIvCp8e,KAAK+0J,eAAenkJ,KAAK5Q,KAAKw3C,OAAO4ic,iBAChCzye,UAAWpG,IAAUvB,KAAKurK,WAAahqK,SAAS,IAEzDmlL,QAAQpxJ,GACAt1B,KAAKw3C,OAAO2ic,wBACZ7kd,EAAM0/I,mBAENh1K,KAAKurK,YAGTvrK,KAAKw3C,OAAO6ic,YAAY1sU,MAAK,GAEjCzhK,cACQlM,KAAKm8e,wBACLn8e,KAAKm8e,yBAELn8e,KAAKo8e,mBACLp8e,KAAKo8e,oBAET,UAAWjwe,KAAOnM,KAAK+0J,eACnB5oJ,EAAIC,eAIhB8ve,SAA0Bl1e,UAA1B,0BAAsHk1e,GA5fpBx7e,MA4f+DA,OA5f/DA,MA4fgGk6e,GA5fhGl6e,MA4fgIA,OA5fhIA,MA4f0JA,OA5f1JA,MA4fmLu5e,KACrRiC,EAA0Bz0Z,UA7fwE/mF,MA6flG,MAA0Gw7e,EAA1Gp/b,2GA7fkGp8C,MA6flG,4BAA0G83N,gBAA1G,KA7fkG93N,MA6flG,mBA7fkGA,CA6flG,wBA7fkGA,CA6flG,6DA3DMw7e,MAiFArrb,QAAN,QAAuBl6B,iBAEf,MAAO,CACHi+G,SAAU/jF,EACV89B,UAAW,CACPkzD,KACAC,KACAm4V,KAKhBppb,SAAiB7pD,UAAjB,0BAA6G6pD,IAC7GA,EAAiBuxB,UAhiBiF1hF,MAgiBlG,MAA8GmwD,IAM9GA,EAAiBwxB,UAtiBiF3hF,MAsiBlG,UAA0I,CAAC8vD,SAnBrIK,wICljBN,gBAAwBrpD,IACpB7H,YAAY08e,EAAeC,EAAoB/+X,GAC3ChqD,MAAM8ob,GAESE,EAD2Bzxe,MAAKuwN,OAAUyJ,MAC3Bh6N,MAAKyoC,OAAK,CAAChgB,EAAO9Q,IACvCA,EAGE86F,EAAQhqF,EAAO9Q,GAFX8Q,EAGZ8od,IACI10e,UAAWpG,GAAUvB,KAAKkE,KAAK3C,KAO9C,gBAAwBw9E,IACpBp/E,YAAY2ze,EAEZkJ,EAEA7xb,GACI4I,QACAvzD,KAAKsze,YAAcA,EACnBtze,KAAKw8e,SAAWA,EAChBx8e,KAAK8Z,OAAS6wC,EAElBpvB,OAAOymZ,GACH,IAAIh6a,EAIJ,QADwC,QAAtBA,EAAKhI,KAAK8Z,cAA2B,IAAP9R,OAAgB,EAASA,EAAG8C,MAAKrF,OAAIu8a,OAAkB,IAAIjjW,KAAaj0E,MAAKrF,OAAIu8a,KAClHl3a,MAAKsyI,UAExB7L,KAAKC,GACD,MAAMn2G,EAAQ,IAAIg4c,EAAUrze,KAAKsze,YAAatze,KAAKw8e,SAAUx8e,MAC7Dq7B,SAAMm2G,SAAWA,EACVn2G,EAEX8E,SAAS1d,GACLziB,KAAKsze,YAAYpve,KAAKue,GAE1Bve,KAAKue,GACDziB,KAAKsze,YAAYpve,KAAKue,GAG1BniB,MAAMqV,GACF3V,KAAKsze,YAAYhze,MAAMqV,GAE3BsqE,qICYAoiL,EApDEo6O,QAAN,SACI98e,cAGIK,KAAK08e,gBAAkB,GAM3Bpyd,SAASqyd,IAEL38e,KAAK08e,gBAAkB18e,KAAK08e,gBAAgBtoe,OAAQ6hO,IAAOA,KAAO0mQ,IAClE,IAAItob,GAAQr0D,KAAK08e,gBACbrob,GAAM5zD,QACN4zD,GAAMA,GAAM5zD,OAAS,GAAGm8e,WAE5Bvob,GAAMzjD,KAAK+re,IACXA,GAAUE,UAMdz2O,WAAWu2O,IACPA,GAAUC,WACV,MAAMvob,GAAQr0D,KAAK08e,gBACbpve,GAAI+mD,GAAM/uD,QAAQq3e,KACd,IAANrve,KACA+mD,GAAMq7B,OAAOpiF,GAAG,GACZ+mD,GAAM5zD,QACN4zD,GAAMA,GAAM5zD,OAAS,GAAGo8e,YAKxCJ,UAAiBz1e,UAAjB,4BAA6Gy1e,KAC7GA,GAAiBt1e,WADkFzG,MACnG,OAAiH+7e,GAAjH97e,QAAiH87e,GAAjH,qBAA+I,SArCzIA,OA0DN,IACIp6O,EAAsC,oBAATC,MAAwBA,KAAKC,sBAEvDv6P,IACHq6P,GAAqB,MAMnBI,QAAN,SACI9iQ,YAAY+iQ,IACR1iQ,KAAK0iQ,YAAcA,GAKnB1iQ,KAAKm2F,UAAYn2F,KAAK0iQ,aAClBC,QAAkB3iQ,KAAK0iQ,aAAmC,iBAAbthL,YAA2BA,SAE5EphF,KAAK4iQ,KAAO5iQ,KAAKm2F,WAAa,UAAU3qE,KAAKm2D,UAAUC,WAEvD5hF,KAAK6iQ,QAAU7iQ,KAAKm2F,WAAa,kBAAkB3qE,KAAKm2D,UAAUC,WAGlE5hF,KAAKirP,MAAQjrP,KAAKm2F,cAAiBpgE,OAAO+sO,SAAUT,IACjC,oBAARU,MAAwB/iQ,KAAK4iQ,OAAS5iQ,KAAK6iQ,QAItD7iQ,KAAK88O,OAAS98O,KAAKm2F,WACf,eAAe3qE,KAAKm2D,UAAUC,aAAe5hF,KAAKirP,QAAUjrP,KAAK4iQ,OAAS5iQ,KAAK6iQ,QAEnF7iQ,KAAK+8O,IAAM/8O,KAAKm2F,WAAa,mBAAmB3qE,KAAKm2D,UAAUC,cACzD,aAAc7rD,QAMpB/1B,KAAKk9O,QAAUl9O,KAAKm2F,WAAa,uBAAuB3qE,KAAKm2D,UAAUC,WAGvE5hF,KAAKgjQ,QAAUhjQ,KAAKm2F,WAAa,WAAW3qE,KAAKm2D,UAAUC,aAAe5hF,KAAK6iQ,QAK/E7iQ,KAAKo2F,OAASp2F,KAAKm2F,WAAa,UAAU3qE,KAAKm2D,UAAUC,YAAc5hF,KAAK88O,QAGpF2lB,UAASz7P,UAAT,4BAAqGy7P,IAzEF/hQ,MAyE4BuiQ,SAC/HR,GAASt7P,WA1E0FzG,MA0EnG,OAAyG+hQ,GAAzG9hQ,QAAyG8hQ,GAAzG,qBAA+H,SA1CzHA,OAuEAxmB,QAAN,SACIt8O,YAAYs1F,IACRj1F,KAAKi1F,UAAYA,GAQrBs2E,WAAWnlF,IAGP,OAAOA,GAAQ8J,aAAa,YAUhC6zE,UAAU39E,IACN,OAwGR,WAAqBA,IAGjB,SAAUA,GAAQ81J,aAAe91J,GAAQu6D,cACF,mBAA3Bv6D,GAAQ+1J,gBAAiC/1J,GAAQ+1J,iBAAiB17O,QA5GnE27O,CAAYh2J,KAAqD,YAAzCi2J,iBAAiBj2J,IAASm9E,WAS7D+4E,WAAWl2J,IAEP,IAAKpmF,KAAKi1F,UAAUkB,UAChB,OAAO,EAEX,MAAMomJ,GAiFd,WAAyBxmN,IACrB,IACI,OAAOA,GAAOwmN,mBAEXv0O,IACH,OAAO,MAtFcw0O,CAwK7B,WAAmB9oL,IAEf,OAAOA,GAAK+oL,eAAiB/oL,GAAK+oL,cAAcC,aAAe3mN,OA1KtB4mN,CAAUv2J,KAC/C,GAAIm2J,MAEuC,IAAnCK,EAAiBL,MAIhBv8O,KAAK+jK,UAAUw4E,KAChB,OAAO,EAGf,IAAItsJ,GAAW7J,GAAQ6J,SAAS5mF,cAC5BwzO,GAAgBD,EAAiBx2J,IACrC,OAAIA,GAAQ8J,aAAa,oBACI,IAAlB2sJ,KAEM,WAAb5sJ,IAAsC,WAAbA,IAOzBjwF,KAAKi1F,UAAU6nJ,QAAU98O,KAAKi1F,UAAU8nJ,MA0HpD,WAAkC32J,IAC9B,IAAI6J,GAAW7J,GAAQ6J,SAAS5mF,cAC5B2zO,GAAyB,UAAb/sJ,IAAwB7J,GAAQjjF,KAChD,MAAqB,SAAd65O,IACc,aAAdA,IACa,WAAb/sJ,IACa,aAAbA,GAhIiDgtJ,CAAyB72J,OAG5D,UAAb6J,KAGK7J,GAAQ8J,aAAa,cAKD,IAAlB2sJ,GAEM,UAAb5sJ,IAKsB,IAAlB4sJ,KAKkB,OAAlBA,IAMG78O,KAAKi1F,UAAUioJ,SAAW92J,GAAQ8J,aAAa,aAEnD9J,GAAQE,UAAY,GAS/BD,YAAYD,GAAS7hF,IAGjB,OA2FR,YAAgC6hF,IAE5B,OAtDJ,WAAuBA,IACnB,OAOJ,WAAwBA,IACpB,MAAyC,SAAlCA,GAAQ6J,SAAS5mF,cARjB8zO,CAAe/2J,KAA4B,UAAhBA,GAAQjjF,KAqDtCi6O,CAAch3J,MA9DtB,WAA6BA,IACzB,IAAI6J,GAAW7J,GAAQ6J,SAAS5mF,cAChC,MAAoB,UAAb4mF,IACU,WAAbA,IACa,WAAbA,IACa,aAAbA,GA4DGotJ,CAAoBj3J,KArD/B,WAA0BA,IACtB,OAOJ,WAAyBA,IACrB,MAAyC,KAAlCA,GAAQ6J,SAAS5mF,cARjBi0O,CAAgBl3J,KAAYA,GAAQ8J,aAAa,QAqDpDqtJ,CAAiBn3J,KACjBA,GAAQ8J,aAAa,oBACrBstJ,EAAiBp3J,KAnGVq3J,CAAuBr3J,MAAapmF,KAAKurK,WAAWnlF,OAC1C,MAAX7hF,QAAuC,EAASA,GAAOm5O,mBAAqB19O,KAAK+jK,UAAU39E,MAGzG61J,UAAqBj1O,UAArB,4BAAiHi1O,IAnNdv7O,MAmNoD+hQ,KACvJxmB,GAAqB90O,WApN8EzG,MAoNnG,OAAqHu7O,GAArHt7O,QAAqHs7O,GAArH,qBAAuJ,SA7GjJA,OA+JN,WAA0B71J,IACtB,IAAKA,GAAQ8J,aAAa,kBAAoCjtF,IAArBmjF,GAAQE,SAC7C,OAAO,EAEX,IAAIA,GAAWF,GAAQ+J,aAAa,YAEpC,MAAgB,UAAZ7J,OAGMA,IAAa5xC,MAAMn0B,SAAS+lE,GAAU,MAMpD,WAA0BF,IACtB,IAAKo3J,EAAiBp3J,IAClB,OAAO,KAGX,MAAME,GAAW/lE,SAAS6lE,GAAQ+J,aAAa,aAAe,GAAI,IAClE,OAAOz7C,MAAM4xC,KAAY,EAAKA,GAuClC,WAA+B/kF,IAC3B,OAAgB,MAATA,IAAgC,SAAd,GAAEA,KAoB/B,SACI5B,YAAYg+O,GAAUC,GAAU54J,GAASH,GAAWg5J,IAAe,GAC/D79O,KAAK29O,SAAWA,GAChB39O,KAAK49O,SAAWA,GAChB59O,KAAKglF,QAAUA,GACfhlF,KAAK6kF,UAAYA,GACjB7kF,KAAK89O,cAAe,EAEpB99O,KAAK+9O,oBAAsB,IAAM/9O,KAAKg+O,2BACtCh+O,KAAKi+O,kBAAoB,IAAMj+O,KAAKk+O,4BACpCl+O,KAAKm+O,UAAW,EACXN,IACD79O,KAAKo+O,gBAITx0K,cACA,OAAO5pE,KAAKm+O,SAEZv0K,YAAQroE,IACRvB,KAAKm+O,SAAW58O,GACZvB,KAAKq+O,cAAgBr+O,KAAKs+O,aAC1Bt+O,KAAKu+O,sBAAsBh9O,GAAOvB,KAAKq+O,cACvCr+O,KAAKu+O,sBAAsBh9O,GAAOvB,KAAKs+O,aAI/Cp5L,UACI,MAAMs5L,GAAcx+O,KAAKq+O,aACnBI,GAAYz+O,KAAKs+O,WACnBE,KACAA,GAAYh4J,oBAAoB,QAASxmF,KAAK+9O,qBAC1CS,GAAYG,YACZH,GAAYG,WAAW2wC,YAAY9wC,KAGvCC,KACAA,GAAUj4J,oBAAoB,QAASxmF,KAAKi+O,mBACxCQ,GAAUE,YACVF,GAAUE,WAAW2wC,YAAY7wC,KAGzCz+O,KAAKq+O,aAAer+O,KAAKs+O,WAAa,KACtCt+O,KAAK89O,cAAe,EAQxBM,gBAEI,QAAIp+O,KAAK89O,eAGT99O,KAAKglF,QAAQuB,kBAAkB,KACtBvmF,KAAKq+O,eACNr+O,KAAKq+O,aAAer+O,KAAK0+O,gBACzB1+O,KAAKq+O,aAAav8J,iBAAiB,QAAS9hF,KAAK+9O,sBAEhD/9O,KAAKs+O,aACNt+O,KAAKs+O,WAAat+O,KAAK0+O,gBACvB1+O,KAAKs+O,WAAWx8J,iBAAiB,QAAS9hF,KAAKi+O,sBAGnDj+O,KAAK29O,SAASgB,aACd3+O,KAAK29O,SAASgB,WAAWC,aAAa5+O,KAAKq+O,aAAcr+O,KAAK29O,UAC9D39O,KAAK29O,SAASgB,WAAWC,aAAa5+O,KAAKs+O,WAAYt+O,KAAK29O,SAASkB,aACrE7+O,KAAK89O,cAAe,GAEjB99O,KAAK89O,cAQhBh3J,+BACI,OAAO,IAAIlwD,QAAQC,KACf72B,KAAK8+O,iBAAiB,IAAMjoN,GAAQ72B,KAAK++O,0BASjDC,qCACI,OAAO,IAAIpoN,QAAQC,KACf72B,KAAK8+O,iBAAiB,IAAMjoN,GAAQ72B,KAAKk+O,gCASjDe,oCACI,OAAO,IAAIroN,QAAQC,KACf72B,KAAK8+O,iBAAiB,IAAMjoN,GAAQ72B,KAAKg+O,+BAQjDkB,mBAAmBC,IAEf,IAAIC,GAAUp/O,KAAK29O,SAAS0B,iBAAkB,qBAAoBF,uBAC5CA,mBACJA,OAClB,QAAS7xO,GAAI,EAAGA,GAAI8xO,GAAQ3+O,OAAQ6M,KAE5B8xO,GAAQ9xO,IAAG4iF,aAAc,aAAYivJ,MACrC51O,QAAQlJ,KAAM,gDAA+C8+O,2BACnCA,kEACiBC,GAAQ9xO,KAE9C8xO,GAAQ9xO,IAAG4iF,aAAc,oBAAmBivJ,OACjD51O,QAAQlJ,KAAM,uDAAsD8+O,2BAC1CA,kEACOC,GAAQ9xO,KAGjD,MAAa,SAAT6xO,GACOC,GAAQ3+O,OAAS2+O,GAAQ,GAAKp/O,KAAKs/O,yBAAyBt/O,KAAK29O,UAErEyB,GAAQ3+O,OACX2+O,GAAQA,GAAQ3+O,OAAS,GAAKT,KAAKu/O,wBAAwBv/O,KAAK29O,UAMxEoB,sBAEI,MAAMS,GAAoBx/O,KAAK29O,SAASt8J,cAAe,0CAEvD,GAAIm+J,GAAmB,CASnB,GAPIA,GAAkBtvJ,aAAc,sBAChC3mF,QAAQlJ,KAAM,0IAEkBm/O,KAI/Bx/O,KAAK49O,SAASv3J,YAAYm5J,IAAoB,CAC/C,MAAMC,GAAiBz/O,KAAKs/O,yBAAyBE,IACrDC,OAAmB,MAAnBA,IAAgEA,GAAe/4J,UACtE+4J,GAEbD,UAAkB94J,SACX,EAEX,OAAO1mF,KAAKk+O,4BAMhBA,4BACI,MAAMsB,GAAoBx/O,KAAKk/O,mBAAmB,SAClD,OAAIM,IACAA,GAAkB94J,UAEb84J,GAMbxB,2BACI,MAAMwB,GAAoBx/O,KAAKk/O,mBAAmB,OAClD,OAAIM,IACAA,GAAkB94J,UAEb84J,GAKbh6J,cACI,OAAOxlF,KAAK89O,aAGhBwB,yBAAyBtrH,IACrB,GAAIh0H,KAAK49O,SAASv3J,YAAY2tC,KAASh0H,KAAK49O,SAAStB,WAAWtoH,IAC5D,OAAOA,GAIX,IAAIp1C,GAAWo1C,GAAKp1C,UAAYo1C,GAAK2zD,WACrC,QAASr6K,GAAI,EAAGA,GAAIsxE,GAASn+E,OAAQ6M,KAAK,CACtC,IAAIoyO,GAAgB9gK,GAAStxE,IAAGwqL,WAAa93L,KAAK6kF,UAAU86J,aACxD3/O,KAAKs/O,yBAAyB1gK,GAAStxE,KACvC,KACJ,GAAIoyO,GACA,OAAOA,GAGf,OAAO,KAGXH,wBAAwBvrH,IACpB,GAAIh0H,KAAK49O,SAASv3J,YAAY2tC,KAASh0H,KAAK49O,SAAStB,WAAWtoH,IAC5D,OAAOA,GAGX,IAAIp1C,GAAWo1C,GAAKp1C,UAAYo1C,GAAK2zD,WACrC,QAASr6K,GAAIsxE,GAASn+E,OAAS,EAAG6M,IAAK,EAAGA,KAAK,CAC3C,IAAIoyO,GAAgB9gK,GAAStxE,IAAGwqL,WAAa93L,KAAK6kF,UAAU86J,aACxD3/O,KAAKu/O,wBAAwB3gK,GAAStxE,KACtC,KACJ,GAAIoyO,GACA,OAAOA,GAGf,OAAO,KAGXhB,gBACI,MAAMkB,GAAS5/O,KAAK6kF,UAAUnD,cAAc,OAC5C,YAAK68J,sBAAsBv+O,KAAKm+O,SAAUyB,IAC1CA,GAAOhpJ,UAAUziE,IAAI,uBACrByrN,GAAOhpJ,UAAUziE,IAAI,yBACrByrN,GAAO/9J,aAAa,cAAe,QAC5B+9J,GAOXrB,sBAAsBsB,GAAWD,IAG7BC,GAAYD,GAAO/9J,aAAa,WAAY,KAAO+9J,GAAOn5J,gBAAgB,YAM9Eq5J,cAAcl2K,IACN5pE,KAAKq+O,cAAgBr+O,KAAKs+O,aAC1Bt+O,KAAKu+O,sBAAsB30K,GAAS5pE,KAAKq+O,cACzCr+O,KAAKu+O,sBAAsB30K,GAAS5pE,KAAKs+O,aAIjDQ,iBAAiBhzN,IACT9rB,KAAKglF,QAAQ+6J,SACbj0N,KAGA9rB,KAAKglF,QAAQg7J,SAASl1O,MAAK2lC,OAAK,IAAI9oC,UAAUmkB,SASpDm0N,SAAN,SACItgP,YAAYi+O,GAAU54J,GAASH,IAC3B7kF,KAAK49O,SAAWA,GAChB59O,KAAKglF,QAAUA,GACfhlF,KAAK6kF,UAAYA,GASrBtqE,OAAO6rE,GAAS85J,IAAuB,GACnC,OAAO,IAAIC,GAAU/5J,GAASpmF,KAAK49O,SAAU59O,KAAKglF,QAAShlF,KAAK6kF,UAAWq7J,KAGnFD,UAAiBj5O,UAAjB,4BAA6Gi5O,IArnBVv/O,MAqnB4Cu7O,GArnB5Cv7O,MAqnB6EA,OArnB7EA,MAqnBmG6mF,QACtM04J,GAAiB94O,WAtnBkFzG,MAsnBnG,OAAiHu/O,GAAjHt/O,QAAiHs/O,GAAjH,qBAA+I,SAlBzIA,OA6BA68P,QAAN,SACIn9e,YAAY+kF,GAAaC,GAAmBE,IACxC7kF,KAAK0kF,YAAcA,GACnB1kF,KAAK2kF,kBAAoBA,GAEzB3kF,KAAK+8e,0BAA4B,KACjC/8e,KAAKg9e,cAAe,EACpBh9e,KAAK6kF,UAAYA,GACjB7kF,KAAK28e,UAAY38e,KAAK2kF,kBAAkBpqE,OAAOva,KAAK0kF,YAAYkB,eAAe,GAG/Ehc,cACA,OAAO5pE,KAAK28e,UAAU/ya,QAEtBA,YAAQroE,IACRvB,KAAK28e,UAAU/ya,QAAUwkL,EAAsB7sP,IAM/C07e,kBACA,OAAOj9e,KAAKg9e,aAEZC,gBAAY17e,IACZvB,KAAKg9e,aAAe5uP,EAAsB7sP,IAE9C2K,cACIlM,KAAK28e,UAAUz3b,UAGXllD,KAAK+8e,4BACL/8e,KAAK+8e,0BAA0Br2Z,QAC/B1mF,KAAK+8e,0BAA4B,MAGzCl4T,qBACI7kL,KAAK28e,UAAUv+P,gBACXp+O,KAAKi9e,aACLj9e,KAAKk9e,gBAGbx7N,YACS1hR,KAAK28e,UAAUn3Z,eAChBxlF,KAAK28e,UAAUv+P,gBAGvB/jJ,YAAYp9E,IACR,MAAMkge,GAAoBlge,GAAQgge,YAC9BE,KAAsBA,GAAkBrkN,aAAe94R,KAAKi9e,aAC5Dj9e,KAAK28e,UAAUn3Z,eACfxlF,KAAKk9e,gBAGbA,gBACIl9e,KAAK+8e,0BAA4B/8e,KAAK6kF,UAAUsC,cAChDnnF,KAAK28e,UAAU71Z,gCAGvBg2Z,UAAmB91e,UAAnB,4BAA+G81e,IA5rBZp8e,MA4rBgDA,OA5rBhDA,MA4rB0Eu/O,IA5rB1Ev/O,MA4rBuG6mF,QAC1Mu1Z,GAAmBr1Z,UA7rBgF/mF,MA6rBnG,MAAmGo8e,GAAnGhgc,mKA7rBmGp8C,SAioB7Fo8e,OAgFAM,SAAN,SAAsBzmd,iBAEd,MAAO,CACHi+G,SAAUwoW,GACVzuZ,UAAW,CACP8tZ,EACAh6O,EACAxmB,KAKhBmhQ,UAAgBp2e,UAAhB,4BAA4Go2e,KAC5GA,GAAgBh7Z,UA9tBmF1hF,MA8tBnG,MAA6G08e,KAC7GA,GAAgB/6Z,UA/tBmF3hF,MA+tBnG,UAAwI,CAAC8vD,SAdnI4sb,iDCxvBAC,SAAN,SACI19e,cAIIK,KAAKkwD,KAAO,OAIZlwD,KAAK8wV,SAAW,QAGxBusJ,UAAWr2e,UAAX,4BAAuGq2e,KACvGA,GAAWl2e,WADkFzG,MAC7F,OAA2G28e,GAA3G18e,QAA2G08e,GAA3G,qBAAmI,aAb7HA,OA0BAC,SAAN,UAEAA,UAAat2e,UAAb,4BAAyGs2e,KACzGA,GAAan2e,WAjBgFzG,MAiB7F,OAA6G48e,GAA7G38e,QAA6G28e,GAA7G,qBAAuI,aAHjIA,OAQN,MAAMC,GAAsB,CACxBt8Z,UAAU,EACVC,UAAU,EACVwF,OAAO,EACPhjC,MAAM,EACN85b,qBAAqB,EACrB75b,MAAO,GACP85b,UAAU,EACV18Z,aAAc,GACd28Z,sBAAkB,GAEhBC,GAAgC,IAAIt5e,MAAe,+BAyBnDu5e,SAAN,SACIj+e,YAAYiD,GAAS+6O,GAAUqjC,IAC3BhhR,KAAK29O,SAAWA,GAChB39O,KAAKghR,UAAYA,GACjBhhR,KAAK4md,SAAU,EACf5md,KAAKshJ,YAAa,EAClBthJ,KAAK69e,eAAgB,EACrB79e,KAAK89e,uBAAwB,EAC7B99e,KAAKuE,OAAS3C,OAAOc,OAAO,GAAIE,IAEpCi6C,WACQ78C,KAAKshJ,YACLthJ,KAAKghR,UAAU7/L,SAASnhF,KAAK29O,SAAS/3J,cAhCxC,QAkCF5lF,KAAKghR,UAAU8E,SAAS9lR,KAAK29O,SAAS/3J,cAAe,UAAW,SAChEjuD,WAAW,KACP33B,KAAK4md,SAAU,EACf5md,KAAKghR,UAAU7/L,SAASnhF,KAAK29O,SAAS/3J,eAAe08X,UApCzD,KACE,SAoCCtid,KAAKshJ,WA1BF,IA0B+C,GACjDlgE,UAAYA,SAAS7vC,OACjBvxC,KAAK+9e,gBAA2D,IAAzC/9e,KAAK+9e,eAAeC,mBAC3Ch+e,KAAK+9e,eAAeE,iBACpBj+e,KAAK+9e,eAAeG,gBAExBl+e,KAAKghR,UAAU7/L,SAASC,SAAS7vC,KA7CnC,cA8CEvxC,KAAKghR,UAAU8E,SAAS1kM,SAAS7vC,KAAM,aAAc,WAErDvxC,KAAK29O,SAAS/3J,eACd5lF,KAAK29O,SAAS/3J,cAAcc,QAGpCy3Z,eAAe7od,IACXt1B,KAAK89e,sBAAwBxod,GAAMlkB,SAAWpR,KAAK29O,SAAS/3J,cAEhEw4Z,YAAY9od,IACR,IAAIttB,GAEAhI,KAAKuE,OAAOi5e,qBACa,WAAzBx9e,KAAKuE,OAAO08E,UAFU3rD,GAAMlkB,SAAWpR,KAAK29O,SAAS/3J,eAAkB5lF,KAAK89e,sBAI5E99e,KAAK89e,uBAAwB,GAGF,QAA9B91e,GAAKhI,KAAK+9e,sBAAmC,IAAP/1e,IAAyBA,GAAGq2e,iBAhD7D,kBAiDNr+e,KAAKkwD,QAETy4M,aACI,IAAI3gQ,GAC2B,QAA9BA,GAAKhI,KAAK+9e,sBAAmC,IAAP/1e,IAAyBA,GAAGq2e,iBAnDjE,mCAoDFr+e,KAAKkwD,OAEToub,MAAMhpd,IACF,IAAIttB,GAAIC,IACHjI,KAAK4md,WAGY,KAAlBtxb,GAAMg0D,SAAgC,WAAdh0D,GAAMzyB,MAC9ByyB,GAAMkuB,iBAENxjD,KAAKuE,OAAO28E,UACZlhF,KAAK6pH,SAA0C,QAA9B7hH,GAAKhI,KAAK+9e,sBAAmC,IAAP/1e,QAAgB,EAASA,GAAGg2e,oBACpD,QAA9B/1e,GAAKjI,KAAK+9e,sBAAmC,IAAP91e,IAAyBA,GAAGo2e,iBAjEtE,OAkEGr+e,KAAKkwD,SAGbhkD,cACQlM,KAAK4md,SACL5md,KAAKu+e,QAGbrub,OACI,IAAIlwD,KAAK69e,eAAkB79e,KAAK4md,QAGhC,IAAI5md,KAAKuE,OAAOm5e,iBAEZ,YADA19e,KAAKuE,OAAOm5e,mBAAmBtnd,KAAK,IAAMp2B,KAAKu+e,QAAS,QAG5Dv+e,KAAKu+e,SAETA,QACIv+e,KAAK69e,eAAgB,EACrB79e,KAAKghR,UAAUqB,YAAYriR,KAAK29O,SAAS/3J,eAAe08X,UArGxD,KACE,QAqGF3qb,WAAW,KACP,IAAI3vB,GAAIC,GACRjI,KAAK4md,SAAU,EACXxlY,UACAA,SAAS7vC,MACiF,KAA1D,QAA9BvpC,GAAKhI,KAAK+9e,sBAAmC,IAAP/1e,QAAgB,EAASA,GAAGg2e,oBACpEh+e,KAAKghR,UAAUqB,YAAYjhM,SAAS7vC,KA9G1C,cA+GMvxC,KAAKghR,UAAU8E,SAAS1kM,SAAS7vC,KAAM,aAAc,KAE1B,QAA9BtpC,GAAKjI,KAAK+9e,sBAAmC,IAAP91e,IAAyBA,GAAGioD,KAAKlwD,KAAKuE,OAAOxD,IACpFf,KAAK69e,eAAgB,GACtB79e,KAAKshJ,WAvGL,IAuG+C,IAG1Ds8V,UAAwB52e,UAAxB,4BAAoH42e,IA3JvBl9e,MA2JgE48e,IA3JhE58e,MA2JyFA,OA3JzFA,MA2JmHA,SAChNk9e,GAAwBx1Z,UA5JqE1nF,MA4J7F,MAAwGk9e,GAAxG9gc,kDAA4L,SAA5L,WAAkN,KAAlN,yDA5J6Fp8C,MA4J7F,gCAAwG89e,uBA5JX99e,CA4J7F,4BAAwG89e,oBA5JX99e,CA4J7F,6BAAwG89e,kBAAxG,EA5J6F99e,OA4J7F,kCAAwG89e,eAAxG,EA5J6F99e,OA4J7F,MA5J6FA,MA4J7F,gBA5J6FA,CA4J7F,2CA5J6FA,CA4J7F,oLA5J6FA,cA6JzF,UA7JyFA,CA6JzF,WA7JyFA,MAiKrF,GAjKqFA,WA4J7F,MA5J6FA,MA6JpF,0DADTg8D,YAQ0Cg0B,GAR1Cm1F,kBAlGM+3T,OAiJAa,SAAN,SACI9+e,YAAYymF,GAASvF,IACjB7gF,KAAK0+e,aAAc,EACnB1+e,KAAK2+e,UAAW,EAChB3+e,KAAKomF,QAAUA,GACfpmF,KAAK6gF,SAAWA,GAEhBygE,iBACA,OAAOthJ,KAAK0+e,YAEZp9V,eAAW//I,IACXvB,KAAK0+e,YAAcn9e,GAEnBqld,cACA,OAAO5md,KAAK2+e,SAEZ/3B,YAAQrld,IACRvB,KAAK2+e,SAAWp9e,GAChBinZ,GACIxoZ,KAAK6gF,SAASM,SAASnhF,KAAKomF,QAAQR,cAAgB,MAGpD5lF,KAAK6gF,SAASwhM,YAAYriR,KAAKomF,QAAQR,cAAgB,OAEtD08X,YACG/gd,GACAvB,KAAK6gF,SAASM,SAASnhF,KAAKomF,QAAQR,cAAgB,QAGpD5lF,KAAK6gF,SAASwhM,YAAYriR,KAAKomF,QAAQR,cAAgB,SAInE/oC,WACQ78C,KAAKshJ,aACLthJ,KAAK6gF,SAASM,SAASnhF,KAAKomF,QAAQR,cAAgB,QACpDg5Z,YAAa5+e,KAAKomF,QAAQR,gBAE9B5lF,KAAK4md,SAAU,GAGvB63B,UAAuBz3e,UAAvB,4BAAmHy3e,IApPtB/9e,MAoP8DA,OApP9DA,MAoPwFA,SACrL+9e,GAAuBr2Z,UArPsE1nF,MAqP7F,MAAuG+9e,GAAvG3hc,6HA1CM2hc,OA6ZFI,GAAY,EACVC,SAAN,SACIn/e,YAAYihF,GAAiBm+Z,GAAKC,IAC9Bh/e,KAAK++e,IAAMA,GACX/+e,KAAKg/e,mBAAqBA,GAC1Bh/e,KAAKi/e,OAAS,IAAI95Z,MAClBnlF,KAAK6jD,QAAU,IAAIshC,MACnBnlF,KAAKk/e,OAAS,IAAI/5Z,MAClBnlF,KAAK4jD,SAAW,IAAIuhC,MACpBnlF,KAAKm/e,mBAAoB,EACzBn/e,KAAKo/e,oBAAsB,EAC3Bp/e,KAAKq/e,eAAiB,EACtBr/e,KAAKs/e,YAAc,EACnBt/e,KAAKu/e,QAAU,GACfv/e,KAAKw/e,gBAAkBx/e,KAAK++e,IAAIn2B,eAChC5od,KAAKghR,UAAYpgM,GAAgBE,eAAe,KAAM,MACtD9gF,KAAKuE,OAASy6e,GACTp9e,OAAOc,OAAO,GAAI66e,GAAqByB,IACxCzB,GAGR75b,KAEA49B,GAAS/8E,IACLvE,KAAKs/e,cACLt/e,KAAKy/e,iBAEL,MAAM1+e,IAAiB,MAAXwD,QAAuC,EAASA,GAAOxD,KAAO89e,KAC1E,YAAKt6e,OAASvE,KAAKg/e,mBACfp9e,OAAOc,OAAO,GAAI66e,GAAqBv9e,KAAKg/e,mBAAoBz6e,IAChE3C,OAAOc,OAAO,GAAI66e,GAAqBh5e,IAC3CvE,KAAKuE,OAAOxD,GAAKA,GACjBf,KAAK0/e,gBACL1/e,KAAK2/e,uBAAoB,EAClB3/e,KAAK4/e,WAAWt+Z,IAE3BpxB,KAAKnvD,KACwB,IAArBf,KAAKs/e,aAA2B,MAANv+e,MAC1Bf,KAAK6/e,gBACL7/e,KAAK8/e,kBAET9/e,KAAKs/e,YAAct/e,KAAKs/e,aAAe,GAAW,MAANv+e,GAAaf,KAAKs/e,YAAc,EAAI,EAChF3nd,WAAW,KACP33B,KAAK+/e,WAAWh/e,IAChBf,KAAKggf,cAAcj/e,KACpBf,KAAKuE,OAAOk5e,SAnmBT,IAmmBoD,GAE9DiC,gBACI,MAAMO,IAA6C,IAAzBjgf,KAAKuE,OAAO08E,UAA8C,WAAzBjhF,KAAKuE,OAAO08E,SACjEi/Z,IAAmBlgf,KAAKmgf,cAAgBngf,KAAKmgf,YAAYnpd,SAAS4vb,QAC/C,IAArB5md,KAAKs/e,cACLt/e,KAAKogf,iBACDH,IAAqBC,KACrBlgf,KAAKw/e,gBACAxwZ,OAAOyvZ,IACP7rU,GAAG,QACHlvH,KAAK,CAAE49F,WAAYthJ,KAAKuE,OAAOk5e,WACpCz9e,KAAKmgf,YAAcngf,KAAKw/e,gBAAgB34B,gBAIpDg5B,gBACS7/e,KAAKmgf,cAGVngf,KAAKmgf,YAAYnpd,SAAS4vb,SAAU,EAEpCjvb,WAAW,IAAM33B,KAAKogf,iBADLpgf,KAAKuE,OAAOk5e,SAxnBvB,IAwnBkE,IAI5EmC,WAAWt+Z,IACP,IAAIt5E,GACJ,MAAMq4e,GAAcrgf,KAAKu/e,QAAQv/e,KAAKu/e,QAAQ9+e,OAAS,GACvD,GAAIT,KAAKuE,QAAUvE,KAAKuE,OAAOoqF,UAC3B,UAAWozN,MAAY/hT,KAAKuE,OAAOoqF,UAC/B0xZ,GAAY99Z,QAAQw/N,IAI5B,MAAMjiO,GAAa,IAAIu9Z,GACjBiD,GAAoBD,GACrB99Z,QAAQ,CAAEA,QAAS+6Z,GAAc96Z,SAAUxiF,KAAKuE,SAChDg+E,QAAQ,CAAEA,QAAS86Z,GAAY76Z,SAAU1C,KACzCkP,OAAO4uZ,IACPhrU,GAAG,QACR9yF,UAAW5vB,KAAO,KAAQ,IAAIloD,GAAI,OAA6C,QAArCA,GAAKs4e,GAAkBtpd,gBAA6B,IAAPhvB,QAAgB,EAASA,GAAGkoD,QACnH4vB,GAAWgxQ,SAAYyvJ,KACfD,GAAkBtpd,WAClBspd,GAAkBtpd,SAASzyB,OAAOo/C,MAAQ48b,KAGlDzga,GAAWl8B,SAAW,IAAIuhC,MAC1BrF,GAAWo/Z,OAAS,IAAI/5Z,MACxBnlF,KAAKwgf,UAAUH,GAAY/5B,aAAcxmY,GAAWo/Z,QACpDl/e,KAAKwgf,UAAUH,GAAYz8b,SAAUk8B,GAAWl8B,UAGhD08b,GAAkB58b,KAAK,CACnB49B,WACAggE,WAAYthJ,KAAKuE,OAAOk5e,SACxB18Z,aAAc/gF,KAAKuE,OAAOw8E,aAC1Bg9Z,eAAgB/9e,KAChBe,GAAIf,KAAKuE,OAAOxD,KAEhBu/e,GAAkBtpd,WAClBspd,GAAkBtpd,SAAS6yF,MAAQ7pH,KAAKg+e,iBACxCl+Z,GAAWwB,QAAU++Z,GAAYh4B,oBACjCvoY,GAAW/+E,GAAkD,QAA5CiH,GAAKs4e,GAAkBtpd,SAASzyB,cAA2B,IAAPyD,QAAgB,EAASA,GAAGjH,IAE9F++E,GAEXiga,WAAWh/e,IACP,GAAU,MAANA,GAAY,CACZ,MAAM0/e,GAAgBzgf,KAAKu/e,QAAQjwc,UAAUkxW,KAAY,IAAIx4Y,GAAI,OAAmC,QAA1BA,GAAKw4Y,GAAOxpX,gBAA6B,IAAPhvB,QAAgB,EAASA,GAAGzD,OAAOxD,MAAQA,KACjJs/e,GAAcrgf,KAAKu/e,QAAQkB,IAC7BJ,IACAA,GAAYnwb,KAAKnvD,SAIrBf,KAAKu/e,QAAQv9d,QAASw+X,KACdA,GAAOxpX,UACPwpX,GAAOtwV,KAAKswV,GAAOxpX,SAASzyB,OAAOxD,MAKnDi9e,iBACI,OAAOh+e,KAAKs/e,YAEhBjB,iBAAiB1+G,IACb3/X,KAAK2/e,kBAAoBhgH,GAE7BygH,iBACIpgf,KAAKghR,UAAUqB,YAAYjhM,SAAS7vC,KAzsBlC,cA0sBFvxC,KAAKghR,UAAU8E,SAAS1kM,SAAS7vC,KAAM,aAAc,IACrDvxC,KAAKw/e,gBAAgBtvb,OACrBlwD,KAAKmgf,iBAAc,EAIvBlC,iBACIj+e,KAAKm/e,kBAAoB/9Z,SAAS7vC,KAAK+qN,YAAcvmO,OAAO2xO,WAC5D1nQ,KAAKq/e,eAAiBr/e,KAAK0gf,oBAE/BxC,gBACS98Z,WAGLphF,KAAKo/e,oBAAsB7+d,SAASwV,OAC/BsmN,iBAAiBj7J,SAAS7vC,MAC1B+gT,iBAAiB,kBAAoB,IAAK,IAC3CtyV,KAAKm/e,oBACL/9Z,SAAS7vC,KAAK0yC,MAAM08Z,aAAgB,GAAE3gf,KAAKo/e,oBACvCp/e,KAAKq/e,qBAGjBS,iBACI1+Z,SAAS7vC,KAAK0yC,MAAM08Z,aAAgB,GAAE3gf,KAAKo/e,wBAG/CsB,oBACI,MAAME,GAAY5gf,KAAKghR,UAAUt/L,cAAc,OAC/C1hF,KAAKghR,UAAU7/L,SAASy/Z,GAxuBR,2BAyuBhB5gf,KAAKghR,UAAUjpL,YAAY3W,SAAS7vC,KAAMqvc,IAC1C,MAAMvB,GAAiBuB,GAAU1kQ,YAAc0kQ,GAAUtkP,YACzD,YAAK0kB,UAAUsO,YAAYluM,SAAS7vC,KAAMqvc,IACnCvB,GAEXI,iBACI,MAAMj/F,GAASxgZ,KAAK++e,IAAIn2B,eACxB5od,KAAKwgf,UAAUhgG,GAAO6lE,aAAcrmd,KAAKi/e,QACzCj/e,KAAKwgf,UAAUhgG,GAAO38V,QAAS7jD,KAAK6jD,SACpC7jD,KAAKwgf,UAAUhgG,GAAO8lE,aAActmd,KAAKk/e,QACzCl/e,KAAKwgf,UAAUhgG,GAAO58V,SAAU5jD,KAAK4jD,UACrC5jD,KAAKu/e,QAAQ3ue,KAAK4vY,IAEtBw/F,cAAcj/e,IACV,GAAU,MAANA,GAAY,CACZ,MAAM0/e,GAAgBzgf,KAAKu/e,QAAQjwc,UAAUkxW,KAAY,IAAIx4Y,GAAI,OAAmC,QAA1BA,GAAKw4Y,GAAOxpX,gBAA6B,IAAPhvB,QAAgB,EAASA,GAAGzD,OAAOxD,MAAQA,KACnJ0/e,IAAiB,IACjBzgf,KAAKu/e,QAAQ7vZ,OAAO+wZ,GAAe,GACnCzgf,KAAKu/e,QAAQv9d,QAAQ,CAACw+X,GAAQlzY,MACtBkzY,GAAOxpX,WACPwpX,GAAOxpX,SAAS6yF,MAAQv8G,GAAI,WAMxCtN,KAAKu/e,QAAQ7vZ,OAAO,EAAG1vF,KAAKu/e,QAAQ9+e,QAG5C+/e,UAAU5tX,GAAMggD,IACZhgD,GAAKjrH,UAAWmC,KACZ8oK,GAAGjF,KAAK3tK,KAAK2/e,mBAAqB71e,OAI9Cg1e,UAAe93e,UAAf,4BAA2G83e,IA/yBdp+e,MA+yB8CA,OA/yB9CA,MA+yB8E4mF,OA/yB9E5mF,MA+yBoHi9e,GAAjN,KACAmB,GAAe33e,WAhzB8EzG,MAgzB7F,OAA+Go+e,GAA/Gn+e,QAA+Gm+e,GAA/G,qBAA2I,aAvMrIA,OAoNkB1B,iBAClB19Z,SAAN,SAAkB/oD,iBAEV,MAAO,CACHi+G,SAAUl1D,GACViP,UAAW,CAACmwZ,GAAgBj9V,MAAwBC,yBAIxD,MAAO,CACHlN,SAAUl1D,GACViP,UAAW,CAACmwZ,GAAgBj9V,MAAwBC,QAIhEpiE,UAAY14E,UAAZ,4BAAwG04E,KACxGA,GAAY0C,UA70BiF1hF,MA60B7F,MAAyGg/E,KAGzGA,GAAY2C,UAh1BiF3hF,MAg1B7F,UAAgI,CAAC08e,OAlB3H19Z,wJCjzB0Fh/E,MA+BgiB,UA/BhiBA,MA+B2lB,GA/B3lBA,oCA+B2lB,GA/B3lBA,MA+B2lBkH,4BAjDrrBi5e,QAAN,QACIlhf,cAEIK,KAAKqhJ,kBAAmB,EAIxBrhJ,KAAKk9J,UAAY,MAKjBl9J,KAAK4nd,SAAW,QAChB5nd,KAAK0ma,cAAe,EAEpB1ma,KAAK81C,MAAQ,GAGrB+qc,SAAc75e,UAAd,0BAA0G65e,IAC1GA,EAAc15e,WADkFzG,MAChG,OAA8Gmgf,EAA9Glgf,QAA8Gkgf,EAA9G,qBAAyI,SAnBnIA,MA2BAC,QAAN,QACInhf,YAAY4E,GACRvE,KAAKu7e,WAAa,MAClB35e,OAAOc,OAAO1C,KAAMuE,GAEpB24J,cAAU37J,GAKNvB,KAAKu7e,WAJJv7e,KAAK+gf,YAAYC,MAIAC,KAAgB1/e,GAHhBA,EAOtBw/e,kBACA,OAAOG,UAEXC,uBACI,OAAOC,QAAaphf,KAAKu7e,aAGjCuF,SAA0B95e,UAA1B,0BAAsH85e,GA9BtBpgf,MA8BiEmgf,KACjKC,EAA0B14Z,UA/BsE1nF,MA+BhG,MAA0Gogf,EAA1Ghkc,oDAAsP,UAAtP,iEA/BgGp8C,MA+BhG,kBA/BgGA,MA+BhG,mIA/BgGA,MA+BhG,4BA/BgGA,CA+BhG,4SA/BgGA,cA+Bqf,WA/BrfA,MA+BgiB,gBA/BhiBA,MA+B6mB,WA/B7mBA,MA+B6pB,GA/B7pBA,SA+BhG,MA/BgGA,MA+B4kB,GA/B5kBA,MA+B4kB,kBAA5qBg8D,YAAonCg0B,MAApnCpI,8eAtBMw4Z,MA4DF//e,EAAK,EAIHsgf,QAAN,QACI1hf,YAAYmlF,EAASJ,EAAas8L,EAAWvb,EAAmBkxO,GAAKlB,GACjEz1e,KAAK0kF,YAAcA,EACnB1kF,KAAKghR,UAAYA,EACjBhhR,KAAKy1e,iBAAmBA,EAExBz1e,KAAKshf,UAAYvgf,IAEjBf,KAAKqhJ,kBAAmB,EAIxBrhJ,KAAKk9J,UAAY,MAIjBl9J,KAAK0ma,cAAe,EAKpB1ma,KAAK4nd,SAAW,QAIhB5nd,KAAK+zP,eAAiB,GAItB/zP,KAAK81C,MAAQ,EACb91C,KAAKg7e,WAAY,EACjBh7e,KAAKuhf,SAAW5K,GACX/tB,aAAalkY,EAAa+gL,EAAmBub,GAC7Cz+L,QAAQ,CAAEA,QAASs+Z,EAAer+Z,SAAUsC,IACjDljF,OAAOc,OAAO1C,KAAM8kF,GACpB9kF,KAAK6jD,QAAU7jD,KAAKuhf,SAAS19b,QAC7B7jD,KAAK4jD,SAAW5jD,KAAKuhf,SAAS39b,SAER,oBAAX7tB,QACP2uD,EAAYkB,cAAc9D,iBAAiB,QAAS,WAChD,IACI4C,EAAYkB,cAAcc,cAEvB/wE,GACH,UAQZuqI,aACA,OAAOlgJ,KAAKuhf,SAAS36B,QAErB1mU,WAAO3+I,GACHA,EACAvB,KAAK0jD,OAGL1jD,KAAKkwD,OAObsxb,qBACIxhf,KAAKyhf,iBAAmBzhf,KAAKkgJ,OAAU,eAAclgJ,KAAKshf,iBAAc,EACxEthf,KAASyhf,kBACDzhf,KAAKuhf,SAASvqd,WACdh3B,KAAKuhf,SAASvqd,SAASsqd,UAAYthf,KAAKyhf,kBAE5Czhf,KAAKghR,UAAUn/L,aAAa7hF,KAAK0kF,YAAYkB,cAAe,mBAAoB5lF,KAAKyhf,mBAGrFzhf,KAAKghR,UAAUv6L,gBAAgBzmF,KAAK0kF,YAAYkB,cAAe,oBAOvEliC,OACI,GAAI1jD,KAAKuhf,SAAS36B,UAAY5md,KAAK0hf,SAAW1hf,KAAK2hf,gBAC/C,OAEJ3hf,KAAKy1e,iBAAiB1mD,WAAW,CAC7Bt0M,UAAW,CACPr6B,KAAM,CACFx2I,QAAS5pE,KAAKqhJ,kBAElBu0V,gBAAiB,CACbhsa,QAAS5pE,KAAKqhJ,qBAI1B,MAAMugW,EAAc,KACZ5hf,KAAK2hf,kBACL3hf,KAAK2hf,qBAAkB1+e,GAE3BjD,KAAKuhf,SACAvyZ,OAAO8xZ,GACPluU,GAAG5yK,KAAKotC,WACRgkB,SAAS,CAAE41Z,WAAYhnd,KAAKk9J,YAC5Bx5G,KAAK,CACN49B,QAASthF,KAAK0hf,QACd71d,QAAS7rB,KAAK6hf,eACd3kV,UAAWl9J,KAAKk9J,UAChBptI,MAAO9vB,KAAK8hf,aACZ/tP,eAAgB/zP,KAAK+zP,kBAEpB/zP,KAAKqhJ,kBAAoBrhJ,KAAKuhf,SAAS16B,gBACxC7md,KAAKy1e,iBAAiBjtB,eACtBxod,KAAKy1e,iBAAiBluB,sBAAsBvnd,KAAKuhf,SAAS16B,cAAcvyc,WAE5EtU,KAAKkgJ,QAAS,EACdlgJ,KAAKwhf,sBAEHO,EAA8B,KAC5B/hf,KAAKgif,sBACLhif,KAAKgif,wBAGb,GAAIhif,KAAK81C,MAAO,CACZ,MAAMmsc,GAASlsc,OAAM/1C,KAAK81C,OAAOnuC,UAAU,KACvCi6e,IACAG,MAEA/hf,KAAK4nd,WACLs6B,QAAclif,KAAK4nd,UACd5lc,QAASgiE,KACLA,EAAQ2F,QAGb3pF,KAAKgif,qBAAuBhif,KAAKghR,UAAUn+G,OAAO7iK,KAAK0kF,YAAYkB,cAAe5B,EAAQ2F,MAAO,KAC7Fs4Z,EAAO71e,cACP21e,cAMZH,IAOR1xb,OACQlwD,KAAK2hf,kBACL74Z,aAAa9oF,KAAK2hf,iBAClB3hf,KAAK2hf,qBAAkB1+e,GAEvBjD,KAAKkgJ,SACLlgJ,KAAKuhf,SAASrxb,OACdlwD,KAAKwhf,qBACLxhf,KAAKkgJ,QAAS,GAOtBilG,SACI,GAAInlP,KAAKkgJ,OACL,OAAOlgJ,KAAKkwD,OAEhBlwD,KAAK0jD,OAET7G,WAIQ78C,KAAKg7e,YAGTh7e,KAAKg7e,WAAY,EACjBh7e,KAAKuhf,SAAS1+U,OAAO,CACjB+kT,SAAU5nd,KAAK4nd,SACflhD,aAAc1ma,KAAK0ma,aACnBhjX,KAAM,IAAM1jD,KAAK0jD,OACjBwM,KAAM,IAAMlwD,KAAKkwD,UAGzBhkD,cACIlM,KAAKuhf,SAASn4Z,WAGtBi4Z,SAAiBr6e,UAAjB,0BAA6Gq6e,GAvQb3gf,MAuQ+Cmgf,GAvQ/Cngf,MAuQyEA,OAvQzEA,MAuQmGA,OAvQnGA,MAuQ4HA,OAvQ5HA,MAuQ4J4hW,MAvQ5J5hW,MAuQoM2nF,QACpSg5Z,EAAiB55Z,UAxQ+E/mF,MAwQhG,MAAiG2gf,EAAjGvkc,6XA/LMukc,MA+NA70W,QAAN,QAAoB71G,iBAEZ,MAAO,CACHi+G,SAAUpI,EACV79C,UAAW,CAACkzD,KAAwBC,QAIhDtV,SAAcxlI,UAAd,0BAA0GwlI,IAC1GA,EAAcpqD,UAjTkF1hF,MAiThG,MAA2G8rI,IAC3GA,EAAcnqD,UAlTkF3hF,MAkThG,UAAoI,CAAC8vD,SAV/Hg8E,4JCrUF21W,EAAkB,MACrB,OAAUA,GAwBRA,IAAuBA,EAAqB,KAvBxB33Z,IAAS,MAC5B23Z,GAAmB13Z,OAAY,SAC/B03Z,GAAmB/3Z,KAAU,OAC7B+3Z,GAAmB93Z,MAAW,QAC9B83Z,GAAmBC,KAAU,OAC7BD,GAAmB/pb,IAAS,QAC5B+pb,GAAmBxub,MAAW,OAC9Bwub,GAAmB,YAAc,WACjCA,GAAmB,aAAe,YAClCA,GAAmB,aAAe,YAClCA,GAAmB,gBAAkB,eACrCA,GAAmB,gBAAkB,eACrCA,GAAmB,eAAiB,cACpCA,GAAmB,eAAiB,cACpCA,GAAmB,YAAc,WACjCA,GAAmB,aAAe,WAClCA,GAAmB,WAAa,YAChCA,GAAmB,WAAa,YAChCA,GAAmB,cAAgB,eACnCA,GAAmB,cAAgB,eACnCA,GAAmB,gBAAkB,cACrCA,GAAmB,gBAAkB,eACrCA,GAAmB,aAAe,WAxBlCA,EACH,IAAUA,IADW,GA0BlBlB,EAAe,MAClB,OAAUA,GAwBRA,IAAoBA,EAAkB,KAvBrBz2Z,IAAS,MACzBy2Z,GAAgBx2Z,OAAY,SAC5Bw2Z,GAAgB72Z,KAAU,QAC1B62Z,GAAgB52Z,MAAW,MAC3B42Z,GAAgBmB,KAAU,OAC1BnB,GAAgB7ob,IAAS,MACzB6ob,GAAgBttb,MAAW,QAC3Bstb,GAAgB,YAAc,YAC9BA,GAAgB,aAAe,UAC/BA,GAAgB,aAAe,UAC/BA,GAAgB,gBAAkB,aAClCA,GAAgB,gBAAkB,aAClCA,GAAgB,eAAiB,eACjCA,GAAgB,eAAiB,eACjCA,GAAgB,YAAc,YAC9BA,GAAgB,aAAe,YAC/BA,GAAgB,WAAa,UAC7BA,GAAgB,WAAa,UAC7BA,GAAgB,cAAgB,aAChCA,GAAgB,cAAgB,aAChCA,GAAgB,gBAAkB,eAClCA,GAAgB,gBAAkB,eAClCA,GAAgB,aAAe,YAxB/BA,EACH,IAAUA,IADQ,GA2BnB,WAAkC76Z,GAAS2vC,IACvC,GAAyB,IAArB3vC,GAAQ0xG,SACR,MAAO,GAGX,MAAM/hK,GAASqwD,GAAQq2J,cAAcC,YAC/B2lQ,GAAiB,MAAXtsd,QAAuC,EAASA,GAAOsmN,iBAAiBj2J,GAAS,MAG7F,OAAO2vC,GAAWssX,IAAOA,GAAItsX,IAAYssX,GAM7C,WAAyBj8Z,IACrB,IAAKA,GACD,OAAOhF,SAASub,gBAIpB,IAEI3M,GAFAsyZ,GAA2B,MAAZl8Z,QAAyC,EAASA,GAAQk8Z,aAG7E,KALuB,OAKhBA,IACAl8Z,GAAQm8Z,oBACRvyZ,KAAY5J,GAAQm8Z,oBAEvBvyZ,GAAU5J,GAAQm8Z,mBAClBD,GAAetyZ,GAAQsyZ,aAE3B,MAAMryZ,GAAWqyZ,IAAgBA,GAAaryZ,SAC9C,OAAKA,IAAyB,SAAbA,IAAoC,SAAbA,GAIpCqyZ,KACyD,IAAzD,CAAC,KAAM,KAAM,SAASh9e,QAAQg9e,GAAaryZ,WACY,WAAvDuyZ,EAAyBF,GAAc,YAChCG,EAAgBH,IAEpBA,GARItyZ,GAAUA,GAAQysJ,cAAc9/I,gBAAkBvb,SAASub,gBAwB1E,WAAiBjpC,IACb,OAAwB,OAApBA,GAAKirL,WACEmyI,EAAQp9T,GAAKirL,YAEjBjrL,GAMX,WAAgCgvb,GAAUC,IAEtC,KAAKD,IAAaA,GAAS5qT,UAAa6qT,IAAaA,GAAS7qT,UAC1D,OAAO12G,SAASub,gBAGpB,MAAM35F,GAAQ0/e,GAASj3M,wBAAwBk3M,IAAYp9P,KAAKq9P,4BAC1Djvb,GAAQ3wD,GAAQ0/e,GAAWC,GAC3Bvqb,GAAMp1D,GAAQ2/e,GAAWD,GAEzBvhV,GAAQ//E,SAASw8H,cACvBz8C,GAAM0hV,SAASlvb,GAAO,GACtBwtG,GAAM2hV,OAAO1qb,GAAK,GAElB,MAAM2qb,EAA0B5hV,GAAM4hV,wBAEtC,GAAKL,KAAaK,GACdJ,KAAaI,GACbpvb,GAAMyzB,SAAShvB,IACf,OAxCR,WAA2BguB,IACvB,MAAQ6J,aAAa7J,GACrB,MAAiB,SAAb6J,KAGiB,SAAbA,IAAuBwyZ,EAAgBr8Z,GAAQ48Z,qBAAuB58Z,IAmCtE68Z,CAAkBF,GACXA,EAEJN,EAAgBM,GAG3B,MAAMG,GAAepyH,EAAQ4xH,IAC7B,OAAIQ,GAAa95d,KACN+5d,EAAuBD,GAAa95d,KAAMu5d,IAG1CQ,EAAuBT,GAAU5xH,EAAQ6xH,IAAUv5d,MAOlE,WAAsCg9D,IAElC,IAAKA,KAAYA,GAAQ0J,cACrB,OAAO1O,SAASub,gBAEpB,IAAI7C,GAAK1T,GAAQ0J,cACjB,MAAe,MAAPgK,QAA+B,EAASA,GAAGhK,gBAAgE,SAA9C0yZ,EAAyB1oZ,GAAI,cAC9FA,GAAKA,GAAGhK,cAEZ,OAAOgK,IAAM1Y,SAASub,gBAM1B,WAAwBrU,GAAQ60K,IAC5B,MAAMimP,GAAiB,MAATjmP,GAAe,OAAS,MAChCkmP,GAAkB,SAAVD,GAAmB,QAAU,SAC3C,OAAQhre,WAAWkwE,GAAQ,SAAQ86Z,YAC/Bhre,WAAWkwE,GAAQ,SAAQ+6Z,YAGnC,WAAiBlmP,GAAM5rN,GAAM+rE,GAAMgpI,IAI/B,OAAOpuO,KAAKskC,IAHEjL,GAGS,SAAQ4rN,MAHjB5rN,GAGiC,SAAQ4rN,MAFzC7/I,GAEyD,SAAQ6/I,MAFjE7/I,GAEiF,SAAQ6/I,MAFzF7/I,GAEyG,SAAQ6/I,MAAS,GAE5I,WAAwB/7K,IACpB,MAAM7vC,GAAO6vC,GAAS7vC,KAChB+rE,GAAOl8B,GAASub,gBAEtB,MAAO,CACHtZ,OAAQiga,EAAQ,SAAU/xc,GAAM+rE,IAChCl6B,MAAOkga,EAAQ,QAAS/xc,GAAM+rE,KAItC,YAAuBw6P,IACnB,OAAOl2W,OAAOc,OAAOd,OAAOc,OAAO,GAAIo1W,IAAU,CAAEztR,OAAQytR,GAAQ1tR,MAAQ,GAAK0tR,GAAQ10R,MAAOqH,QAASqtR,GAAQttR,KAAO,GAAKstR,GAAQz0R,SAUxI,WAAkB9hF,IACd,MAAwB,iBAAVA,IAAgE,oBAA1CK,OAAOC,UAAUZ,SAASa,KAAKP,IAMvE,YAA+B6kF,IAC3B,MAAMikM,GAAOjkM,GAAQm+E,wBAkBrB,KAAM8lH,IAAQrlE,EAASqlE,GAAK7/L,MAAQw6H,EAASqlE,GAAKjgM,OAAS46H,EAASqlE,GAAK5/L,SAAWu6H,EAASqlE,GAAKhgM,QAC9F,OAAOggM,GAEX,MAAMp5Q,GAAS,CACXm5E,KAAMigM,GAAKjgM,KACXI,IAAK6/L,GAAK7/L,IACVpH,MAAOinM,GAAKhgM,MAAQggM,GAAKjgM,KACzB/G,OAAQgnM,GAAK5/L,OAAS4/L,GAAK7/L,KAGzB+4Z,GAA6B,SAArBn9Z,GAAQ6J,SAAsBuzZ,EAAep9Z,GAAQq2J,oBAAiBx5O,EAC9EmgF,IAAmB,MAAVmga,QAAqC,EAASA,GAAMnga,QAAUgD,GAAQk2K,aAC9Et3C,EAASqlE,GAAKhgM,QAAU26H,EAAS/zM,GAAOm5E,OAASigM,GAAKhgM,MAAQp5E,GAAOm5E,MAAQ,EAC9E/G,IAAoB,MAAVkga,QAAqC,EAASA,GAAMlga,SAAW+C,GAAQg2K,cAChFp3C,EAASqlE,GAAK5/L,SAAWu6H,EAAS/zM,GAAOu5E,MAAQ6/L,GAAK5/L,OAASx5E,GAAOu5E,KAAO,EACpF,IAAIi5Z,EAAiBr9Z,GAAQ81J,YAAc94J,GACvCsga,GAAgBt9Z,GAAQu6D,aAAet9D,GAG3C,GAAIoga,GAAkBC,GAAe,CACjC,MAAMp7Z,GAASk6Z,EAAyBp8Z,IACxCq9Z,GAAkBE,EAAer7Z,GAAQ,KACzCo7Z,IAAiBC,EAAer7Z,GAAQ,KACxCr3E,GAAOmyE,OAASqga,EAChBxye,GAAOoyE,QAAUqga,GAErB,OAAOE,GAAc3ye,IAQzB,YAAuBm1E,IACnB,MAAyB,SAArBA,GAAQ6J,SACD7J,GAEJA,GAAQu4J,YAAcv4J,GAAQh9D,KAQzC,WAAyBg9D,IAErB,IAAKA,GACD,OAAOhF,SAAS7vC,KAEpB,OAAQ60C,GAAQ6J,cACP,WACA,OACD,OAAO7J,GAAQq2J,cAAclrM,SAC5B,YACD,OAAO60C,GAAQ70C,KAIvB,MAAQ4vG,YAAU0iW,aAAWC,cAActB,EAAyBp8Z,IACpE,MAAI,wBAAwB56D,KAAKtpB,OAAOi/I,IAAYj/I,OAAO4hf,IAAa5hf,OAAO2hf,KACpEz9Z,GAEJ29Z,EAAgBC,GAAc59Z,KAGzC,YAA8CxH,GAAUmO,GAAQk3Z,IAAgB,GAC5E,IAAIj8e,GAAIC,GAAIyvH,GAAIE,EAAIi8Q,GAAIod,GACxB,MAAMizF,GAA6B,SAApBn3Z,GAAOkD,SAChBk0Z,GAAe5/U,GAAsB3lF,IACrCwla,GAAa7/U,GAAsBx3E,IAEnCzE,IADey7Z,EAAgBnla,IACtB4ja,EAAyBz1Z,KAClCs3Z,GAAiBjse,WAAWkwE,GAAO+7Z,gBACnCC,GAAkBlse,WAAWkwE,GAAOg8Z,iBAEtCL,IAAiBC,KACjBE,GAAW55Z,IAAMtyE,KAAKskC,IAA8B,QAAzBx0C,GAAKo8e,GAAW55Z,WAAwB,IAAPxiF,GAAgBA,GAAK,EAAG,GACpFo8e,GAAWh6Z,KAAOlyE,KAAKskC,IAA+B,QAA1Bv0C,GAAKm8e,GAAWh6Z,YAAyB,IAAPniF,GAAgBA,GAAK,EAAG,IAE1F,MAAM6vW,GAAU8rI,GAAc,CAC1Bp5Z,KAAkC,QAA3BktC,GAAKysX,GAAa35Z,WAAwB,IAAPktC,GAAgBA,GAAK,IAAgC,QAAzBE,EAAKwsX,GAAW55Z,WAAwB,IAAPotC,EAAgBA,EAAK,GAAKysX,GACjIj6Z,MAAoC,QAA5BypT,GAAKswG,GAAa/5Z,YAAyB,IAAPypT,GAAgBA,GAAK,IAAiC,QAA1Bod,GAAKmzF,GAAWh6Z,YAAyB,IAAP6mU,GAAgBA,GAAK,GAAKqzF,GACpIlha,MAAO+ga,GAAa/ga,MACpBC,OAAQ8ga,GAAa9ga,SAQzB,GANAy0R,GAAQ35G,UAAY,EACpB25G,GAAQ55G,WAAa,EAKjBgmP,GAAQ,CACR,MAAM/lP,GAAY/lP,WAAWkwE,GAAO61K,WAC9BD,GAAa9lP,WAAWkwE,GAAO41K,YACjCl5C,EAAS8yJ,GAAQttR,OACjBstR,GAAQttR,KAAO65Z,GAAiBlmP,IAEhCn5C,EAAS8yJ,GAAQrtR,UACjBqtR,GAAQrtR,QAAU45Z,GAAiBlmP,IAEnCn5C,EAAS8yJ,GAAQ1tR,QACjB0tR,GAAQ1tR,MAAQk6Z,GAAkBpmP,IAElCl5C,EAAS8yJ,GAAQztR,SACjBytR,GAAQztR,OAASi6Z,GAAkBpmP,IAGvC45G,GAAQ35G,UAAYA,GACpB25G,GAAQ55G,WAAaA,GAEzB,OAAO45G,GAMX,YAAmB1xR,GAASm+Z,GAAO,OAC/B,MAAMC,GAAqB,QAATD,GAAiB,YAAc,aAC3Ct0Z,GAAW7J,GAAQ6J,SACzB,GAAiB,SAAbA,IAAoC,SAAbA,GAAqB,CAC5C,MAAMqtB,GAAOl3B,GAAQq2J,cAAc9/I,gBAEnC,OADyBvW,GAAQq2J,cAAcgoQ,kBAAoBnnY,IAC3CknY,IAE5B,OAAOp+Z,GAAQo+Z,IAsBnB,YAAiBp+Z,IACb,MAAM6J,GAAW7J,GAAQ6J,SACzB,MAAiB,SAAbA,IAAoC,SAAbA,KAG2B,UAAlDuyZ,EAAyBp8Z,GAAS,aAG/Bs+Z,GAAQV,GAAc59Z,MAGjC,YAAuBh1E,GAAQgY,GAAMu7d,GAAU,EAAGC,GAAmBX,IAAgB,GAEjF,IAAIY,GAAa,CAAEr6Z,IAAK,EAAGJ,KAAM,GACjC,MAAMk4Z,EAAe2B,GAAgBa,EAA6B1ze,IAAU+xe,EAAuB/xe,GAAQgY,IAE3G,GAA0B,aAAtBw7d,GACAC,GApCR,WAAuDz+Z,GAAS2+Z,IAAgB,GAC5E,MAAMznY,GAAOl3B,GAAQq2J,cAAc9/I,gBAC7BqoZ,GAAiBC,GAAqC7+Z,GAASk3B,IAC/Dl6B,GAAQlrE,KAAKskC,IAAI8gE,GAAKg/I,YAAavmO,OAAO2xO,YAAc,GACxDrkL,GAASnrE,KAAKskC,IAAI8gE,GAAK8+I,aAAcrmO,OAAO4xO,aAAe,GAC3DzrK,EAAYo9J,GAAmC,EAAlB4rP,GAAU5nY,IACvCmqJ,GAAanO,GAA2C,EAA1B4rP,GAAU5nY,GAAM,QAOpD,OAAOsmY,GANQ,CACXp5Z,IAAK0R,EAAYmzH,OAA0B,MAAnB21R,QAAuD,EAASA,GAAex6Z,KAAO6kI,OAA0B,MAAnB21R,QAAuD,EAASA,GAAe7mP,WACpM/zK,KAAMq9K,GAAap4C,OAA0B,MAAnB21R,QAAuD,EAASA,GAAe56Z,MAAQilI,OAA0B,MAAnB21R,QAAuD,EAASA,GAAe9mP,YACvM96K,SACAC,YAyBa8ha,CAA8C7C,EAAc2B,QAExE,CAED,IAAImB,GACsB,iBAAtBR,IACAQ,GAAiBrB,EAAgBC,GAAc56d,KACf,SAA5Bg8d,GAAen1Z,WACfm1Z,GAAiBh0e,GAAOqrO,cAAc9/I,kBAI1CyoZ,GAD2B,WAA1B13C,GACgBt8b,GAAOqrO,cAAc9/I,gBAGrBioZ,GAErB,MAAM9sI,GAAUmtI,GAAqCG,GAAgB9C,EAAc2B,IAEnF,GAAInsI,IAAuC,SAA5BstI,GAAen1Z,WAAwBy0Z,GAAQpC,GAAe,CACzE,MAAQj/Z,UAAQD,UAAUoga,EAAepye,GAAOqrO,eAC5Cz3B,EAAS6/R,GAAWr6Z,MAAQw6H,EAAS8yJ,GAAQttR,MAAQw6H,EAAS8yJ,GAAQ35G,aACtE0mP,GAAWr6Z,KAAOstR,GAAQttR,IAAMstR,GAAQ35G,WAExCn5C,EAAS6/R,GAAWr6Z,OACpBq6Z,GAAWp6Z,OAAS4kI,OAAOhsI,IAAUgsI,OAAOyoJ,GAAQttR,MAEpDw6H,EAAS6/R,GAAWz6Z,OAAS46H,EAAS8yJ,GAAQ1tR,OAAS46H,EAAS8yJ,GAAQ55G,cACxE2mP,GAAWz6Z,MAAQ0tR,GAAQ1tR,KAAO0tR,GAAQ55G,YAE1Cl5C,EAAS6/R,GAAWr6Z,OACpBq6Z,GAAWx6Z,MAAQglI,OAAOjsI,IAASisI,OAAOyoJ,GAAQ1tR,YAGjD0tR,KAEL+sI,GAAa/sI,IAIrB,OAAI9yJ,EAAS6/R,GAAWz6Z,QACpBy6Z,GAAWz6Z,MAAQu6Z,IAEnB3/R,EAAS6/R,GAAWr6Z,OACpBq6Z,GAAWr6Z,KAAOm6Z,IAElB3/R,EAAS6/R,GAAWx6Z,SACpBw6Z,GAAWx6Z,OAASs6Z,IAEpB3/R,EAAS6/R,GAAWp6Z,UACpBo6Z,GAAWp6Z,QAAUk6Z,IAElBE,GAOX,aAAmBzha,SAAOC,YACtB,OAAOD,GAAQC,GAEnB,YAA8B65E,GAAWmoV,GAASj0e,GAAQgY,GAAM0+c,GAAmB,CAAC,MAAO,SAAU,QAAS,QAAS8c,GAAoB,WAAYD,EAAU,GAC7J,IAAI38e,GAAIC,GAAIyvH,GAAIE,GAAIi8Q,GAAIod,GAAIC,GAAI2lC,GAAIyuD,GAAIC,GAAIrjB,GAAIsjB,GAChD,IAAkC,IAA9BtoV,GAAU53J,QAAQ,QAClB,OAAO43J,GAEX,MAAM2nV,GAAaY,GAAcr0e,GAAQgY,GAAMu7d,EAASC,IAClDc,GAAQ,CACVl7Z,IAAK,CACDpH,MAA2F,QAAnFp7E,GAAoB,MAAf68e,QAA+C,EAASA,GAAWzha,aAA0B,IAAPp7E,GAAgBA,GAAK,EACxHq7E,QAAkF,QAAxEp7E,GAAiB,MAAZo9e,QAAyC,EAASA,GAAQ76Z,WAAwB,IAAPviF,GAAgBA,GAAK,IAAwF,QAAjFyvH,GAAoB,MAAfmtX,QAA+C,EAASA,GAAWr6Z,WAAwB,IAAPktC,GAAgBA,GAAK,IAExOrtC,MAAO,CACHjH,OAA4F,QAAnFw0C,GAAoB,MAAfitX,QAA+C,EAASA,GAAWx6Z,aAA0B,IAAPutC,GAAgBA,GAAK,IAAiF,QAA1Ei8Q,GAAiB,MAAZwxG,QAAyC,EAASA,GAAQh7Z,aAA0B,IAAPwpT,GAAgBA,GAAK,GACvOxwT,OAA6F,QAApF4tU,GAAoB,MAAf4zF,QAA+C,EAASA,GAAWxha,cAA2B,IAAP4tU,GAAgBA,GAAK,GAE9HxmU,OAAQ,CACJrH,MAA2F,QAAnF8tU,GAAoB,MAAf2zF,QAA+C,EAASA,GAAWzha,aAA0B,IAAP8tU,GAAgBA,GAAK,EACxH7tU,QAA8F,QAApFwzW,GAAoB,MAAfguD,QAA+C,EAASA,GAAWp6Z,cAA2B,IAAPosW,GAAgBA,GAAK,IAAkF,QAA3EyuD,GAAiB,MAAZD,QAAyC,EAASA,GAAQ56Z,cAA2B,IAAP66Z,GAAgBA,GAAK,IAE9Ol7Z,KAAM,CACFhH,OAAgC,QAAvBmia,GAAKF,GAAQj7Z,YAAyB,IAAPm7Z,GAAgBA,GAAK,IAAyF,QAAlFrjB,GAAoB,MAAf2iB,QAA+C,EAASA,GAAWz6Z,YAAyB,IAAP83Y,GAAgBA,GAAK,GACnL7+Y,OAA6F,QAApFmia,GAAoB,MAAfX,QAA+C,EAASA,GAAWxha,cAA2B,IAAPmia,GAAgBA,GAAK,IAG5HG,GAAc/jf,OAAOgqC,KAAK85c,IAC3Bjgf,IAAK5C,IAASjB,OAAOc,OAAOd,OAAOc,OAAO,CAAE0uD,SAAUvuD,IAAO6if,GAAM7if,KAAO,CAAE+if,KAAMC,GAAQH,GAAM7if,QAChG0pB,KAAK,CAACC,GAAGnD,KAAMA,GAAEu8d,KAAOp5d,GAAEo5d,MAC/B,IAAIE,GAAgBH,GAAYvxe,OAAO,EAAGgvE,SAAOC,aACtCD,IAAShyE,GAAOkrP,aAAej5K,IAAUjyE,GAAOgrP,cAE3D0pP,GAAgBA,GAAc1xe,OAAO,EAAGg9C,eAC7B02a,GAAiB7+d,KAAM88e,IACnBA,KAAoB30b,KAGnC,MAAM40b,GAAoBF,GAAcrlf,OAAS,EAAIqlf,GAAc,GAAG10b,SAAWu0b,GAAY,GAAGv0b,SAC1F60b,GAAY/oV,GAAUj3J,MAAM,KAAK,GAEvCmL,UAAO2pF,UAAY3pF,GAAO2pF,UAAUn2F,QAAQ,mBAAqB,eAAas8e,UAAWF,MAAQC,EAAgB+E,IAAqBA,MAC/HA,IAAqBC,GAAa,IAAGA,KAAc,IAoC9D,MAAM7/e,GAAQ,CAAC7E,GAAO2mI,GAAM,IAAM3mI,GAAQ6W,WAAW7W,IAAS2mI,GAC9D,YAAuB9hD,IACnB,MAAMrwD,GAASqwD,GAAQq2J,cAAcC,YAC/Bp0J,GAAoB,MAAXvyD,QAAuC,EAASA,GAAOsmN,iBAAiBj2J,IACjFx+E,GAAIxB,GAAiB,MAAXkiF,QAAuC,EAASA,GAAO61K,WAAa/3P,GAAiB,MAAXkiF,QAAuC,EAASA,GAAO81K,cAC3I3jG,GAAIr0J,GAAiB,MAAXkiF,QAAuC,EAASA,GAAO41K,YAAc93P,GAAiB,MAAXkiF,QAAuC,EAASA,GAAO+1K,aAClJ,MAAO,CACHj7K,MAAOisI,OAAOjpI,GAAQ81J,aAAezhF,GACrCp3E,OAAQgsI,OAAOjpI,GAAQu6D,cAAgB/4I,IAO/C,YAA6BwJ,GAAQgY,GAAM66d,IAIvC,OAAOgB,GAAqC77d,GAHjB66d,GACrBa,EAA6B1ze,IAC7B+xe,EAAuB/xe,GAAQgY,IACiC66d,IAM1E,YAA0B7ye,GAAQ80e,GAAa90b,IAC3C,IAAIppD,GAAIC,GAAIyvH,GACZ,MAAMwlC,EAAY9rG,GAASnrD,MAAM,KAAK,GAEhCkgf,GAAaC,GAAch1e,IAE3Bi1e,GAAgB,CAClBjja,MAAO+ia,GAAW/ia,MAClBC,OAAQ8ia,GAAW9ia,QAGjBija,IAAmD,IAAzC,CAAC,QAAS,QAAQhhf,QAAQ43J,GACpCqpV,GAAWD,GAAU,MAAQ,OAC7BE,GAAgBF,GAAU,OAAS,MACnCG,GAAcH,GAAU,SAAW,QACnCI,GAAuBz7N,GAAsB,QAAX,SACxCo7N,UAAcE,KACwB,QAAhCv+e,GAAKk+e,GAAYK,WAA8B,IAAPv+e,GAAgBA,GAAK,GAC3Dk+e,GAAYO,IAAe,EAC3BN,GAAWM,IAAe,EAClCJ,GAAcG,IAAiBtpV,IAAcspV,IACA,QAArCv+e,GAAKi+e,GAAYM,WAAmC,IAAPv+e,GAAgBA,GAAK,GAAKk+e,GAAWO,IACxB,QAA3DhvX,GAAKwuX,GAjEhB,YAA8BhpV,IAC1B,MAAMyxB,GAAO,CAAEvkG,KAAM,QAASC,MAAO,OAAQI,OAAQ,MAAOD,IAAK,UACjE,OAAO0yE,GAAUt4J,QAAQ,yBAA0Bw1I,IAAWu0C,GAAKv0C,KA+D3CusW,CAAqBH,YAAoC,IAAP9uX,GAAgBA,GAAK,EACxF2uX,GAGX,YAA2Bzjf,GAASq6X,IAChC,IAAIj1X,GACJ,SAAqD,QAA1CA,GAAKpF,GAAQ63O,UAAUwiJ,WAAkC,IAAPj1X,QAAgB,EAASA,GAAG4hE,SAG7F,MAAMg9a,GAAqB,CACvBp8Z,IAAK,CAAC,MAAO,YAAa,WAC1BC,OAAQ,CAAC,SAAU,eAAgB,cACnC92B,MAAO,CAAC,QAAS,YAAa,gBAC9ByE,IAAK,CAAC,MAAO,UAAW,eAE5B,YAA4B8kG,GAAW2pV,IACnC,SAAK3F,UAAWF,OAGT4F,GAAmBC,IAAep+e,SAASy0J,IAEtD,YAAsBA,IAClB,OAAKgkV,UAAWF,MAGZ8F,GAAmB5pV,GAAW,OACvB,OAEP4pV,GAAmB5pV,GAAW,SACvB,OAEP4pV,GAAmB5pV,GAAW,OACvB,OAEP4pV,GAAmB5pV,GAAW,UACvB,OAEJ,GAdI,GA4Cf,YAAmB92E,GAASkC,GAAQzH,KAC3BuF,KAAYkC,IAGjB1mF,OAAOgqC,KAAK08C,IAAQtmE,QAAS5H,KACzB,IAAIyrQ,GAAO,IAEiE,IAAxE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQvgR,QAAQ8U,KArc1E,WAAmB+V,IACf,MAAa,KAANA,KAAaukB,MAAMt8B,WAAW+X,MAAOysK,SAASyyB,OAAOl/L,KAqcpD42d,CAAUz+Z,GAAOluE,OACjByrQ,GAAO,MAEPhlM,GACAA,GAASilM,SAAS1/L,GAAShsE,GAAO,GAAElY,OAAOomF,GAAOluE,OAASyrQ,MAI/Dz/L,GAAQnC,MAAM7pE,IAAQlY,OAAOomF,GAAOluE,KAASyrQ,KAIrD,YAAe/7Q,IACX,IAAI9B,GAAIC,GAAIyvH,GAAIE,GAAIi8Q,GAAIod,EACxB,IAAIo1F,GAAgBv8e,GAAKguW,QAAQ1mW,OAEjC,MAAM41e,GAAel9e,GAAKktB,SAAS5lB,OAAOiwE,cAAc,UAExD,IAAK2la,GACD,OAAOl9e,GAEX,MAAMm9e,IAAyE,IAA5D,CAAC,OAAQ,SAAS3hf,QAAQwE,GAAKozJ,UAAUj3J,MAAM,KAAK,IACjEkvJ,GAAM8xV,GAAa,SAAW,QAC9BC,GAAkBD,GAAa,MAAQ,OACvC1C,GAAO2C,GAAgB79e,cACvB89e,GAAUF,GAAa,OAAS,MAChCG,GAASH,GAAa,SAAW,QACjCI,GAAmBjB,GAAcY,IAAc7xV,IAC/CmyV,GAAqBx9e,GAAKozJ,UAAUj3J,MAAM,KAAK,IAEX,QAApC+B,GAAK8B,GAAKguW,QAAQ1uV,KAAKg+d,WAA4B,IAAPp/e,GAAgBA,GAAK,GAAKq/e,IAAmD,QAA9Bp/e,GAAKo+e,GAAc9B,WAA0B,IAAPt8e,GAAgBA,GAAK,KACvJo+e,GAAe9B,MACoB,QAA9B7sX,GAAK2uX,GAAc9B,WAA0B,IAAP7sX,GAAgBA,GAAK,KAA4C,QAApCE,GAAK9tH,GAAKguW,QAAQ1uV,KAAKg+d,WAA4B,IAAPxvX,GAAgBA,GAAK,GAAKyvX,KAG/Ih4R,OAAQvlN,GAAMguW,QAAQ1uV,KAAKm7d,KAASl1R,OAAOg4R,KAAsD,QAAhCxzG,GAAKwyG,GAAce,WAA4B,IAAPvzG,GAAgBA,GAAK,KAC7HwyG,GAAe9B,KACZl1R,OAAQvlN,GAAMguW,QAAQ1uV,KAAKm7d,KAASl1R,OAAOg4R,IAAoBh4R,OAAQg3R,GAAee,MAE9Ff,GAAgBzC,GAAcyC,IAG9B,MAAMhE,GAAMG,EAAyB14e,GAAKktB,SAAS5lB,QAC7Cm2e,GAAmBnve,WAAWiqe,GAAK,SAAQ6E,QAAuB,EAClEM,GAAmBpve,WAAWiqe,GAAK,SAAQ6E,aAA4B,EAE7E,IAAIr2U,GACJ,GAAKy2U,GAGA,CACD,MAAMG,GAAqBrve,WAAWiqe,GAAIqF,eAAoB,EACxDC,GAAwBt4R,OAAOk4R,GAAmBC,GAAmBC,IAC3E52U,GAAS0zU,KAAS+C,GACdj4R,OAAQvlN,GAAMguW,QAAQ1uV,KAAKm7d,KAASoD,GACpCt4R,OAAQvlN,GAAMguW,QAAQ1uV,KAAKm7d,KAASl1R,OAAOvlN,GAAKguW,QAAQ1uV,KAAK+rI,IAAOwyV,SAPxE92U,GAASw+C,OAAQvlN,GAAMguW,QAAQ1uV,KAAKm7d,KAASl1R,OAAOvlN,GAAKguW,QAAQ1uV,KAAK+rI,IAAO,EAAIkyV,GAAmB,GASxG,IAAIO,GAAY/2U,IAAyC,QAA9BogP,EAAKo1F,GAAc9B,WAA0B,IAAPtzF,EAAgBA,EAAK,GAAKs2F,GAAmBC,GAE9GI,UAAY1ve,KAAKskC,IAAItkC,KAAKqkC,IAAI8pc,GAAclxV,KAAQkyV,GAAmB,GAAIO,IAAY,GACvF99e,GAAKguW,QAAQ+vI,MAAQ,EAChBtD,IAAOrse,KAAKyC,MAAMite,KAClBT,IAAU,IAEfr9e,GAAKktB,SAAS6wd,MAAQb,GACfl9e,GAGX,YAAcA,IAEV,GADAA,GAAKguW,QAAQ1mW,OAASwye,GAAc95e,GAAKguW,QAAQ1mW,SAC5C02e,GAAkBh+e,GAAKlH,QAAS,QACjCkH,UAAKguW,QAAQ1mW,OAASxP,OAAOc,OAAOd,OAAOc,OAAO,GAAIoH,GAAKguW,QAAQ1mW,QAAS22e,GAAiBj+e,GAAKktB,SAAS5lB,OAAQtH,GAAKguW,QAAQ1uV,KAAMtf,GAAKozJ,YACpIpzJ,GAEX,MAAM+6e,GAAaY,GAAc37e,GAAKktB,SAAS5lB,OAAQtH,GAAKktB,SAAS5N,KAAM,EAC3E,YAAY,GAEZ,IAAI8zI,GAAYpzJ,GAAKozJ,UAAUj3J,MAAM,KAAK,GACtCggf,GAAYn8e,GAAKozJ,UAAUj3J,MAAM,KAAK,IAAM,GAChD,MAGMo7I,GAAmB2mW,GAAqB,OAH1Bl+e,GAAKguW,QAAQ1uV,KAClBtf,GAAKktB,SAAS5lB,OAChBtH,GAAKktB,SAAS5N,KACsDtf,GAAKlH,QAAQkle,kBACxFmgB,GAAY,CAAC/qV,GAAW7b,IAC9B4mW,UAAUjme,QAAQ,CAAC3K,GAAM6V,MACrB,IAAIllB,GAAIC,GAAIyvH,GAAIE,GAAIi8Q,GAAIod,GAAIC,GAAI2lC,GAAIyuD,GAAIC,GAAIrjB,GAAIsjB,GAAI0C,GAAI15V,GAAI25V,GAAI7uX,GAChE,GAAI4jC,KAAc7lJ,IAAQ4we,GAAUxnf,SAAWysB,GAAQ,EACnD,OAEJgwI,GAAYpzJ,GAAKozJ,UAAUj3J,MAAM,KAAK,GAEtC,MAAMmif,GAA6B,SAAdlrV,IACjBhlJ,KAAKC,MAA2C,QAApCnQ,GAAK8B,GAAKguW,QAAQ1mW,OAAOi5E,aAA0B,IAAPriF,GAAgBA,GAAK,GAAKkQ,KAAKC,MAAwC,QAAjClQ,GAAK6B,GAAKguW,QAAQ1uV,KAAKghE,YAAyB,IAAPniF,GAAgBA,GAAK,IAC7I,UAAdi1J,IACGhlJ,KAAKC,MAA0C,QAAnCu/G,GAAK5tH,GAAKguW,QAAQ1mW,OAAOg5E,YAAyB,IAAPstC,GAAgBA,GAAK,GAAKx/G,KAAKC,MAAyC,QAAlCy/G,GAAK9tH,GAAKguW,QAAQ1uV,KAAKihE,aAA0B,IAAPutC,GAAgBA,GAAK,IACjJ,QAAdslC,IACGhlJ,KAAKC,MAA4C,QAArC07X,GAAK/pY,GAAKguW,QAAQ1mW,OAAOq5E,cAA2B,IAAPopT,GAAgBA,GAAK,GAAK37X,KAAKC,MAAuC,QAAhC84Y,GAAKnnZ,GAAKguW,QAAQ1uV,KAAKohE,WAAwB,IAAPymU,GAAgBA,GAAK,IACjJ,WAAd/zP,IACGhlJ,KAAKC,MAAyC,QAAlC+4Y,GAAKpnZ,GAAKguW,QAAQ1mW,OAAOo5E,WAAwB,IAAP0mU,GAAgBA,GAAK,GAAKh5Y,KAAKC,MAA0C,QAAnC0+a,GAAK/sb,GAAKguW,QAAQ1uV,KAAKqhE,cAA2B,IAAPosW,GAAgBA,GAAK,GAC9JwxD,GAAgBnwe,KAAKC,MAA0C,QAAnCmte,GAAKx7e,GAAKguW,QAAQ1mW,OAAOg5E,YAAyB,IAAPk7Z,GAAgBA,GAAK,GAAKpte,KAAKC,MAAiC,QAA1Bote,GAAKV,GAAWz6Z,YAAyB,IAAPm7Z,GAAgBA,GAAK,GACpK+C,GAAiBpwe,KAAKC,MAA2C,QAApC+pd,GAAKp4d,GAAKguW,QAAQ1mW,OAAOi5E,aAA0B,IAAP63Y,GAAgBA,GAAK,GAAKhqd,KAAKC,MAAkC,QAA3Bqte,GAAKX,GAAWx6Z,aAA0B,IAAPm7Z,GAAgBA,GAAK,GACvK+C,GAAerwe,KAAKC,MAAyC,QAAlC+ve,GAAKp+e,GAAKguW,QAAQ1mW,OAAOo5E,WAAwB,IAAP09Z,GAAgBA,GAAK,GAAKhwe,KAAKC,MAAgC,QAAzBq2I,GAAKq2V,GAAWr6Z,WAAwB,IAAPgkE,GAAgBA,GAAK,GACjKg6V,GAAkBtwe,KAAKC,MAA4C,QAArCgwe,GAAKr+e,GAAKguW,QAAQ1mW,OAAOq5E,cAA2B,IAAP09Z,GAAgBA,GAAK,GAAKjwe,KAAKC,MAAmC,QAA5BmhH,GAAKurX,GAAWp6Z,cAA2B,IAAP6uC,GAAgBA,GAAK,GAC1KmvX,GAAqC,SAAdvrV,IAAwBmrV,IAClC,UAAdnrV,IAAyBorV,IACX,QAAdprV,IAAuBqrV,IACT,WAAdrrV,IAA0BsrV,GAEzBvB,IAAsD,IAAzC,CAAC,MAAO,UAAU3hf,QAAQ43J,IACvCwrV,GAAqBzB,IAA4B,SAAdhB,IAAwBoC,IAC5DpB,IAA4B,UAAdhB,IAAyBqC,KACtCrB,IAA4B,SAAdhB,IAAwBsC,KACtCtB,IAA4B,UAAdhB,IAAyBuC,IACzCJ,IAAeK,IAAuBC,OAClCN,IAAeK,MACfvrV,GAAY+qV,GAAU/6d,GAAQ,IAE9Bw7d,KACAzC,GA1PhB,YAA8BA,IAC1B,MAAkB,UAAdA,GACO,OAEY,SAAdA,GACE,QAEJA,GAmPiB0C,CAAqB1C,KAErCn8e,GAAKozJ,UAAYA,IAAa+oV,GAAa,IAAGA,KAAc,IAC5Dn8e,GAAKguW,QAAQ1mW,OAASxP,OAAOc,OAAOd,OAAOc,OAAO,GAAIoH,GAAKguW,QAAQ1mW,QAAS22e,GAAiBj+e,GAAKktB,SAAS5lB,OAAQtH,GAAKguW,QAAQ1uV,KAAMtf,GAAKozJ,eAG5IpzJ,GA8CX,YAAyBA,IACrB,IAAI9B,GACJ,IAAK8/e,GAAkBh+e,GAAKlH,QAAS,mBACjC,OAAOkH,GAKX,MAAM8+e,GAAgB,YAChBC,GAAe/+e,GAAKktB,SAAS5lB,OAAO6yE,OAClCuG,OAAKJ,SAAOw+Z,IAAgBzka,GAAc0ka,GAClDA,GAAar+Z,IAAM,GACnBq+Z,GAAaz+Z,KAAO,GACpBy+Z,GAAaD,IAAiB,GAC9B,MAAM/D,GAAaY,GAAc37e,GAAKktB,SAAS5lB,OAAQtH,GAAKktB,SAAS5N,KAAM,GACxB,QAAjDphB,GAAK8B,GAAKlH,QAAQ63O,UAAUm7P,uBAAoC,IAAP5te,QAAgB,EAASA,GAAG48e,oBAAsB,gBAAgB,GAI7HiE,GAAar+Z,IAAMA,GACnBq+Z,GAAaz+Z,KAAOA,GACpBy+Z,GAAaD,IAAiBzka,EAC9B,MACM21F,GAAQ,CACV+oN,QAAQ3lO,IACJ,IAAIl1J,GAAIC,GAAIyvH,GAAIE,GAChB,IAAIr2H,GAAQuI,GAAKguW,QAAQ1mW,OAAO8rJ,IAEhC,OAA+C,QAAzCl1J,GAAK8B,GAAKguW,QAAQ1mW,OAAO8rJ,WAA+B,IAAPl1J,GAAgBA,GAAK,IAAuC,QAAhCC,GAAK48e,GAAW3nV,WAA+B,IAAPj1J,GAAgBA,GAAK,KAC5I1G,GAAQ2W,KAAKskC,IAA8C,QAAzCk7E,GAAK5tH,GAAKguW,QAAQ1mW,OAAO8rJ,WAA+B,IAAPxlC,GAAgBA,GAAK,EAAoC,QAAhCE,GAAKitX,GAAW3nV,WAA+B,IAAPtlC,GAAgBA,GAAK,IAEtJ,EAAGslC,IAAY37J,KAE1B62R,UAAUl7H,IACN,IAAIl1J,GAAIC,GAAIyvH,GAAIE,GAChB,MAAMkxX,GAAsC,UAAd5rV,GACxBqpV,GAAWuC,GAAwB,OAAS,MAElD,IAAIvnf,GAAQuI,GAAKguW,QAAQ1mW,OAAOm1e,IAEhC,OAA+C,QAAzCv+e,GAAK8B,GAAKguW,QAAQ1mW,OAAO8rJ,WAA+B,IAAPl1J,GAAgBA,GAAK,IAAuC,QAAhCC,GAAK48e,GAAW3nV,WAA+B,IAAPj1J,GAAgBA,GAAK,KAC5I1G,GAAQ2W,KAAKqkC,IAA6C,QAAxCm7E,GAAK5tH,GAAKguW,QAAQ1mW,OAAOm1e,WAA8B,IAAP7uX,GAAgBA,GAAK,GAAqC,QAAhCE,GAAKitX,GAAW3nV,WAA+B,IAAPtlC,GAAgBA,GAAK,GAAK9tH,GAAKguW,QAAQ1mW,OAJ3J03e,GAAwB,QAAU,YAM/C,EAAGvC,IAAWhlf,MAG7ByB,MAxBc,CAAC,OAAQ,QAAS,MAAO,UAwBjCgf,QAASk7I,KACX,MAAMqnV,IAAuD,IAAhD,CAAC,OAAQ,MAAO,SAASj/e,QAAQ43J,IAAoB4c,GAAM+oN,QAAa/oN,GAAMs+G,UAC3FtuR,GAAKguW,QAAQ1mW,OAASxP,OAAOc,OAAOd,OAAOc,OAAO,GAAIoH,GAAKguW,QAAQ1mW,QAASmze,GAAKrnV,OAE9EpzJ,GAGX,YAAeA,IACX,IAAI9B,GACJ,MAAMk1J,GAAYpzJ,GAAKozJ,UACjB6rV,GAAgB7rV,GAAUj3J,MAAM,KAAK,GACrC+if,GAAiB9rV,GAAUj3J,MAAM,KAAK,GAC5C,GAAI+if,GAAgB,CAChB,MAAQ5/d,QAAMhY,UAAWtH,GAAKguW,QACxBmvI,IAA0D,IAA7C,CAAC,SAAU,OAAO3hf,QAAQyjf,IACvCxE,GAAO0C,GAAa,OAAS,MAC7BR,GAAcQ,GAAa,QAAU,SACrCgC,GAAe,CACjBt1b,MAAO,EAAG4wb,IAAOn7d,GAAKm7d,KACtBnsb,IAAK,EACAmsb,KAA8B,QAArBv8e,GAAKohB,GAAKm7d,WAA0B,IAAPv8e,GAAgBA,GAAK,GAAKohB,GAAKq9d,IAAer1e,EAAOq1e,MAGpG38e,GAAKguW,QAAQ1mW,OAASxP,OAAOc,OAAOd,OAAOc,OAAO,GAAI0O,GAAS,EAC1Dmze,IAAQA,KAASyE,GAAiBC,GAAat1b,MAAM4wb,IAAQ0E,GAAa7wb,IAAImsb,MAGvF,OAAOz6e,GAoBX,MAAMo/e,GAAkB,IAjBxB,SACI93b,SAAS6gM,GAAazhC,IAClB,OAAOxwN,KAAKyyK,OAAOw/E,GAAazhC,IAEpC/9C,OAAOw/E,GAAazhC,IAChB,OAAO24R,GAAoB34R,GAAeyhC,IAE9Cm3P,iBAAiBn3P,GAAazhC,GAAep/J,GAAUm3Z,GAAc3ld,IACjE,MAAMymf,EAAmB,CAACjpS,GAAM1nD,GAAOk9U,GAAiBiS,IAElD/9e,GAjId,YAAkB0mN,GAAeyhC,GAAa7gM,GAAUxuD,IACpD,IAAK4tN,KAAkByhC,GACnB,OAEJ,MAAMq3P,GAAiBH,GAAoB34R,GAAeyhC,KACrD7gM,GAASvP,MAAM,oDACZuP,GAASvP,MAAM,iFACnBuP,GAAW,QAEf,MAAMm4b,KAAkBn4b,GAASvP,MAAM,SAEvC,IAAIq7G,EAAY9rG,GAASvP,MAAM,2CACzBuP,GAASnrD,MAAM,KAAK,IAAM,OAC1BmrD,GAEN,MAAMpoC,GAAUk0I,EAAUr7G,MAAM,iFAUhC,OATI74B,KACAk0I,EAAYl0I,GAAQ,IAAMA,GAAQ,GAAM,IAAGA,GAAQ,KAAO,MAGsB,IAAhF,CAAC,aAAc,aAAc,aAAc,cAAc1jB,QAAQ43J,KACjEA,EAAY,QAEhBA,EAAY8qV,GAAqB9qV,EAAWosV,GAAgB94R,GAAeyhC,GAAarvP,GAAUA,GAAQkle,sBAAmB7ke,GAEtH,CACHL,QAASA,IAAW,CAAE63O,UAAW,IACjCzjN,SAAU,CACN5lB,OAAQo/M,GACRpnM,KAAM6oO,GACN41P,WAAO,GAEX/vI,QAAS,CACL1mW,OATa22e,GAAiBv3R,GAAe84R,GAAgBpsV,GAU7D9zI,KAAMkge,GACNzB,WAAO,GAEX2B,eAAe,EACftsV,YACAqsV,kBA0FaE,CAASj5R,GAAeyhC,GADnBkwP,EAAmB/wb,IACwBxuD,IAC7D,GAAKkH,GAGL,OAAOu/e,EAAiBnve,OAAO,CAACwve,GAAchvQ,KAAaA,GAASgvQ,IAAe5/e,UAsBrFg4I,SAAN,SACIniJ,YAAY01F,GAAQzU,GAAiBioM,IACjC7oR,KAAK2pf,SAAW,IAAIjmf,IACpB1D,KAAKopf,iBAAmB,IAAI97d,IAC5BttB,KAAKurK,YAAa,GACdo3F,QAAkBkmB,KAClBxzL,GAAO9O,kBAAkB,KACrBvmF,KAAK4pf,eAAgBv2c,QAAMwoG,OAAU9lH,OAAQ,SAAU,CAAEklI,SAAS,KAASpf,OAAU9lH,OAAQ,SAAU,CAAEklI,SAAS,KAAS9vJ,QAAG,EAAG+4N,KAA0BlkO,KAAK2pf,UAChK3pf,KAAK4pf,cAAcjif,UAAU,KACrB3H,KAAKurK,YAGTvrK,KAAKopf,iBAEApne,QAAS6ne,MAhClC,YAA0B53P,GAAazhC,GAAetzD,GAAWqrT,GAAc3ld,GAASi+E,IACpF,MAAM/2E,EAAOo/e,GAAgBE,iBAAiBn3P,GAAazhC,GAAetzD,GAAWqrT,GAAc3ld,IACnG,IAAKkH,EACD,OAEJ,MAAMguW,GAxaV,YAAoBhuW,IAChB,IAAI9B,GAAIC,GAAIyvH,GAAIE,GAChB,MAAO,CACHx0C,MAAOt5E,GAAKguW,QAAQ1mW,OAAOgyE,MAC3BC,OAAQv5E,GAAKguW,QAAQ1mW,OAAOiyE,OAC5B+G,KAAMlyE,KAAKC,MAA0C,QAAnCnQ,GAAK8B,GAAKguW,QAAQ1mW,OAAOg5E,YAAyB,IAAPpiF,GAAgBA,GAAK,GAClFwiF,IAAKtyE,KAAKyC,MAAyC,QAAlC1S,GAAK6B,GAAKguW,QAAQ1mW,OAAOo5E,WAAwB,IAAPviF,GAAgBA,GAAK,GAChFwiF,OAAQvyE,KAAKyC,MAA4C,QAArC+8G,GAAK5tH,GAAKguW,QAAQ1mW,OAAOq5E,cAA2B,IAAPitC,GAAgBA,GAAK,GACtFrtC,MAAOnyE,KAAKC,MAA2C,QAApCy/G,GAAK9tH,GAAKguW,QAAQ1mW,OAAOi5E,aAA0B,IAAPutC,GAAgBA,GAAK,IAgaxEkyX,CAAWhgf,GAC3BuwW,GAAU7pJ,GAAe,CACrB,cAAe,YACfhmI,IAAK,MACLJ,KAAM,MACNjG,UAAY,eAAc2zR,GAAQ1tR,WAAW0tR,GAAQttR,eACtD3J,IACC/2E,EAAKktB,SAAS6wd,OACdxtI,GAAUvwW,EAAKktB,SAAS6wd,MAAO/9e,EAAKguW,QAAQ+vI,MAAOhna,IAxT3D,YAA8B/2E,GAAM+2E,IAChC,MAAMzvE,GAAStH,GAAKktB,SAAS5lB,OAC7B,IAAI2iP,GAAiB3iP,GAAO2pF,UAC5B,MAAMgvZ,IAAgB7I,UAAWF,MAAQC,EAAgBn3e,GAAKozJ,WAAapzJ,GAAKozJ,UAC5EpzJ,GAAKy/e,gBACLx1P,GAAiBA,GAAenvP,QAAQ,mBAAqB,cAAamlf,MAC1Eh2P,GAAiBA,GAAenvP,QAAQ,uBAAwB,IAChEmvP,GAAiBA,GAAenvP,QAAQ,mBAAqB,cAAamlf,MAC1Eh2P,GAAiBA,GAAenvP,QAAQ,UAAY,IAAGmlf,OACb,IAAtCh2P,GAAezuP,QAAQ,aACvByuP,GAAiBA,GAAiB,IAAMqtP,GAAa2I,MAEf,IAAtCh2P,GAAezuP,QAAQ,aAAgE,IAA3CyuP,GAAezuP,QAAQ,kBACnEyuP,IAAkB,kBAEoB,IAAtCA,GAAezuP,QAAQ,aAAgE,IAA3CyuP,GAAezuP,QAAQ,kBACnEyuP,IAAkB,kBAG1BA,GAAiBA,GAAenvP,QAAQ,mCAAqC,GAAEmlf,GAAc9jf,MAAM,KAAK,MACpG46E,GACAA,GAASgB,aAAazwE,GAAQ,QAAS2iP,IAG3C3iP,GAAO2pF,UAAYg5J,GAkSnBi2P,CAAqBlgf,EAAM+2E,IAkBPuoa,CAAiBa,GAAgBJ,GAAgBz4e,QAAS64e,GAAgBJ,GAAgBzja,SAAUyja,GAAgB7iC,WAAY6iC,GAAgBthC,aAAcvod,KAAK4C,QAASg+E,GAAgBE,eAAe,KAAM,aAMrO1vB,SAASxuD,IACL5C,KAAKkqf,mBAAmBtnf,IAExBize,aACA,OAAO71e,KAAK4pf,cAEhB56P,UACIhvP,KAAKurK,YAAa,EAEtBojF,SACI3uP,KAAKurK,YAAa,EAEtB2+U,mBAAmBtnf,IACf5C,KAAKopf,iBAAiB9nf,IAAI2of,GAAgBrnf,GAAQwjF,SAAUxjF,IAEhE4ld,eACIxod,KAAK2pf,SAASzlf,KAAK,MAEvBqjd,sBAAsB4iC,IAClBnqf,KAAKopf,iBAAiBr+d,OAAOk/d,GAAgBE,KAEjDp7D,WAAWnsb,IACP5C,KAAK4C,QAAUA,IAGvBk/I,UAAmB96I,UAAnB,4BAA+G86I,IAAVphJ,MAA8CA,OAA9CA,MAAoEA,OAApEA,MAAoGuiQ,SACzMnhH,GAAmB36I,WADkFzG,MACrG,OAAmHohJ,GAAnHnhJ,QAAmHmhJ,GAAnH,qBAAmJ,SA/C7IA,OAyDN,YAAyB17D,IAErB,MAAuB,iBAAZA,GACAhF,SAASC,cAAc+E,IAE9BA,cAAmBkhK,MACZlhK,GAAQR,cAEA,MAAZQ,GAAyCA,GAAU,+IC77BiC1lF,MA0EmP,4BA1EnPA,MA0EmW,WA1EnWA,MA0E2c,GA1E3cA,oCA0EwW,cA1ExWA,CA0EwW,iBA1ExWA,CA0EwW,YA1ExWA,CA0EwW,oBA1ExWA,CA0EwW,+CA1ExWA,MA0E4hB,WA1E5hBA,MA0E0rB,GA1E1rBA,mDA0EwkB,cA1ExkBA,CA0EwkB,gBA1ExkBA,CA0EwkB,mBA1ExkBA,CA0EwkB,oBA1ExkBA,CA0EwkB,qBA1ExkBA,MA0E0rB,GA1E1rBA,MA0E0rBgF,kCA1E1rBhF,MA0E4hB,8BA1E5hBA,cA0EmjB,0BAxH5oB0pf,QAAN,QACIzqf,YAAYm6F,EAAIjZ,GACZ7gF,KAAK85F,GAAKA,EACV95F,KAAK6gF,SAAWA,EAEhB7gF,KAAKw8C,IAAM,IAEXx8C,KAAKuB,MAAQ,EAEbvB,KAAKqkF,SAAU,EAEfrkF,KAAKqqf,SAAU,EAEfrqf,KAAKmD,KAAO,OACZnD,KAAKohK,QAAU,IAEfkhT,YACA,OAAOA,UAEXjoX,YAAYp9E,GACR,IAAIjV,EAAIC,GACJgV,EAAQ1b,OAAY0b,EAAQu/B,OAC5Bx8C,KAAKohK,QAAiBiuD,QAAoC,QAA3BrnN,EAAKiV,EAAQ1b,aAA6B,IAAPyG,OAAgB,EAASA,EAAG4iK,eAAiB5qK,KAAKuB,OAC9G8tN,QAAmC,QAAzBpnN,EAAKgV,EAAQu/B,WAA2B,IAAPv0C,OAAgB,EAASA,EAAG2iK,eAAiB5qK,KAAKw8C,KAAQ,KAD5F,KAGfv/B,EAAQ9Z,MACRnD,KAAKsqf,mBAGbA,mBACI,GAAItqf,KAAKuqf,UAAW,CAChB,MACMC,EAAW,MAAKxqf,KAAKuqf,YAC3Bvqf,KAAK6gF,SAASwhM,YAAYriR,KAAK85F,GAAGlU,cAFZ,gBAAe5lF,KAAKuqf,aAG1Cvqf,KAAK6gF,SAASwhM,YAAYriR,KAAK85F,GAAGlU,cAAe4ka,GACjDxqf,KAAKuqf,eAAY,EAErB,GAAIvqf,KAAKmD,KAAM,CACX,MACMqnf,EAAW,MAAKxqf,KAAKmD,OAC3BnD,KAAK6gF,SAASM,SAASnhF,KAAK85F,GAAGlU,cAFT,gBAAe5lF,KAAKmD,QAG1CnD,KAAK6gF,SAASM,SAASnhF,KAAK85F,GAAGlU,cAAe4ka,GAC9Cxqf,KAAKuqf,UAAYvqf,KAAKmD,OAIlCinf,SAAapjf,UAAb,0BAAyGojf,GAAV1pf,MAAwCA,OAAxCA,MAAkEA,SACjK0pf,EAAahia,UADkF1nF,MAC/F,MAA6F0pf,EAA7Fttc,sCAAwP,cAAxP,gBAAwR,KAAxRkoH,6CAD+FtkK,MAC/F,wBAD+FA,CAC/F,uDAD+FA,CAC/F,uBAD+FA,MAC/F,mBAD+FA,CAC/F,uBAD+FA,MAC/F,kBAD+FA,CAC/F,4CAD+FA,CAC/F,iCAD+FA,CAC/F,0HAD+FA,OAC/F+kL,iEAD+F/kL,cAC0lB,KAAzrBmlL,oCA/CMukU,MA2EA5qa,QAAN,QACI7/E,cAEIK,KAAKqkF,SAAU,EAEfrkF,KAAKw8C,IAAM,KAGnBgjC,SAAkBx4E,UAAlB,0BAA8Gw4E,IAC9GA,EAAkBr4E,WAtC6EzG,MAsC/F,OAAkH8+E,EAAlH7+E,QAAkH6+E,EAAlH,qBAAiJ,SAT3IA,MAiBAira,QAAN,QACI9qf,YAAY4E,GAERvE,KAAKw8C,IAAM,IAEXx8C,KAAKqkF,SAAU,EAEfrkF,KAAKqqf,SAAU,EACfrqf,KAAK0qf,WAAY,EACjB1qf,KAAKu1F,OAAS,EACd3zF,OAAOc,OAAO1C,KAAMuE,GAKpBhD,UAAMA,GACNvB,KAAK0qf,UAAYllf,MAAM0L,QAAQ3P,GACV,iBAAVA,GACPvB,KAAKu1F,OAASh0F,EACdvB,KAAKgyN,aAAU,IAGfhyN,KAAKu1F,YAAS,EACdv1F,KAAKgyN,QAAUzwN,IAI3Bkpf,SAAqBzjf,UAArB,0BAAiHyjf,GAzElB/pf,MAyEwD8+E,KACvJira,EAAqBria,UA1E0E1nF,MA0E/F,MAAqG+pf,EAArG3tc,wEA1E+Fp8C,MA0E/F,aA1E+FA,MA0E/F,+VA1E+FA,cA0EmP,0BA1EnPA,MA0EsU,6BA1EtUA,aA0EkgB,6BA1ElgBA,QA0E/F,aA1E+FA,MA0E/F,KA1E+FA,MA0E/F,GA1E+FA,MA0EkQ,oBA1ElQA,CA0EkQ,aA1ElQA,CA0EkQ,gBAAjWg8D,YAAu4B0tb,EAA+G/ha,KAAiFA,MAAvkCC,yEA5BMmia,MAmDA9qa,QAAN,QAAwBhpD,iBAEhB,MAAO,CAAEi+G,SAAUj1D,EAAmBgP,UAAW,KAGzDhP,SAAkB34E,UAAlB,0BAA8G24E,IAC9GA,EAAkByC,UAvG6E1hF,MAuG/F,MAA+Gi/E,IAC/GA,EAAkB0C,UAxG6E3hF,MAwG/F,UAA4I,CAAC8vD,SAPvImvB,2ICjIkGj/E,cAiOu8B,YAjOv8BA,MAiOs+B,oBAjOt+BA,MAiOs+BgF,WAjOt+BhF,QAiOs+ByuF,YAjOt+BzuF,QAiOg/B,0BAAyBomO,iBAjOzgCpmO,MAiOqjC,aAjOrjCA,iGAiO8U,UAjO9UA,MAiOyf,gCAjOzfA,IAiOyfgF,gBAAY+pC,EAjOrgB/uC,MAiOqgBiqf,qBAjOrgBjqf,MAiOsiB,SAjOtiBA,MAiOs1B,4BAjOt1BA,IAiOs1BgF,qBAAwB,IAjO92BhF,MAiO63B,YAjO73BA,MAiOs6B,GAjOt6BA,cAiOu8B,kBAjOv8BA,4CAiOub,kBAjOvbA,CAiOub,uBAjOvbA,MAiO6X,UAjO7XA,MAiO6X,yBAjO7XA,MAiO4wB,GAjO5wBA,MAiO4wB,kBAjO5wBA,CAiO4wB,uBAjO5wBA,MAiO8mB,6BAjO9mBA,CAiO8mB,2BAjO9mBA,CAiO8mB,2BAjO9mBA,MAiOm4B,GAjOn4BA,MAiOm4B,6BAjOn4BA,MAiOs6B,GAjOt6BA,MAiOs6BgF,WAjOt6BhF,MAiO88B,GAjO98BA,MAiO88B,uCAhPhjCkqf,QAAN,QACIjrf,YAAY4lQ,GACRvlQ,KAAKulQ,QAAUA,EAEfslP,iBAAa3qU,GACblgL,KAAK8qf,cAAgB5qU,EACjBA,GACAlgL,KAAKulQ,QAAQn9E,mBAAmBlI,GAIpC2qU,mBACA,OAAO7qf,KAAK8qf,eAGpBF,SAAsB5jf,UAAtB,0BAAkH4jf,GAAVlqf,MAAiDA,SACzJkqf,EAAsBnja,UADkF/mF,MACxG,MAAsGkqf,EAAtG9tc,0EAhBM8tc,MA0BAG,QAAN,QACIprf,cAEIK,KAAKmD,KAAO,OAEZnD,KAAKgrf,eAAgB,EAErBhrf,KAAKyjF,UAAY,QAGzBsna,SAAa/jf,UAAb,0BAAyG+jf,IACzGA,EAAa5jf,WAtB2FzG,MAsBxG,OAA6Gqqf,EAA7Gpqf,QAA6Goqf,EAA7G,qBAAuI,SAXjIA,MAqBAE,QAAN,QACItrf,YAAY4E,EAAQs8E,EAAUmU,GAC1Bh1F,KAAK6gF,SAAWA,EAChB7gF,KAAKg1F,WAAaA,EAClBh1F,KAAKkrf,OAAQ,EACblrf,KAAKmsW,KAAO,GACZnsW,KAAKmrf,SAAW,GAEhBnrf,KAAKyjF,UAAY,OACjBzjF,KAAKorf,aAAc,EACnBprf,KAAKojK,WAAY,EACjBpjK,KAAKqrf,YAAa,EAClBrrf,KAAKsrf,MAAQ,OACbtrf,KAAKurf,gBAAiB,EACtB3pf,OAAOc,OAAO1C,KAAMuE,GAGpB66J,eACA,OAAOp/J,KAAKojK,UAEZhE,aAAS79J,GACTvB,KAAKojK,UAAY7hK,EACjBvB,KAAKwrf,cAGLC,gBACA,OAAOzrf,KAAKqrf,WAEZI,cAAUlqf,GACVvB,KAAKqrf,WAAa9pf,EAClBvB,KAAKwrf,cAGLrof,WACA,OAAOnD,KAAKsrf,MAEZnof,SAAK5B,GACLvB,KAAKsrf,MAAQ/pf,EACbvB,KAAKwrf,cAELR,oBACA,OAAOhrf,KAAKurf,eAEZP,kBAAczpf,GACdvB,KAAKurf,eAAiBhqf,EAE1B2K,cACIlM,KAAKorf,aAAc,EAEvBM,OAAO7iJ,GACH7oW,KAAKmsW,KAAKv7V,KAAKi4V,GACfA,EAAI1uN,OAA8B,IAArBn6I,KAAKmsW,KAAK1rW,SAAiBooW,EAAI1uN,OAEhDwxW,UAAU9iJ,EAAKjmW,EAAU,CAAEgpf,UAAU,EAAMj+U,MAAM,IAC7C,MAAMzgJ,EAAQltB,KAAKmsW,KAAK7mW,QAAQujW,GAChC,IAAc,IAAV37U,IAAgBltB,KAAKorf,YAIzB,IAAIxof,EAAQgpf,UAAY/iJ,EAAI1uN,QAAUn6I,KAAK6rf,iBAAiB3+d,GAAQ,CAChE,MAAM4+d,EAAiB9rf,KAAK+rf,mBAAmB7+d,GAC/CltB,KAAKmsW,KAAK2/I,GAAgB3xW,QAAS,EAEnCv3I,EAAQ+qK,MACRk7L,EAAI9+G,QAAQp8E,KAAKk7L,GAErB7oW,KAAKmsW,KAAKz8Q,OAAOxiE,EAAO,GACpB27U,EAAI7zQ,WAAWpP,cAAc+4J,YAC7B3+O,KAAK6gF,SAASyuM,YAAYu5E,EAAI7zQ,WAAWpP,cAAc+4J,WAAYkqH,EAAI7zQ,WAAWpP,gBAG1F+ka,cAAcr1d,EAAOpI,GACjB,IAAKltB,KAAKgrf,cACN,OAEJ,MAAMnnW,EAAOr+I,MAAMotH,KAAK5yH,KAAKg1F,WAAWpP,cAAcy5J,iBAAiB,cAEvE,GAAsB,KAAlB/pN,EAAMg0D,SAAgC,UAAdh0D,EAAMzyB,KAAqC,KAAlByyB,EAAMg0D,SAAgC,UAAdh0D,EAAMzyB,IAI/E,OAHAyyB,EAAMkuB,sBAENwoc,EADyB9+d,EAAS22H,EAAKpjJ,QAC5B25c,QAGf,GAAsB,KAAlB9kb,EAAMg0D,SAAgC,eAAdh0D,EAAMzyB,IAUlC,GAAsB,KAAlByyB,EAAMg0D,SAAgC,cAAdh0D,EAAMzyB,IAkBlC,GAAsB,KAAlByyB,EAAMg0D,SAAgC,SAAdh0D,EAAMzyB,IAWlC,GAAsB,KAAlByyB,EAAMg0D,SAAgC,QAAdh0D,EAAMzyB,KAmBlC,IAAsB,KAAlByyB,EAAMg0D,SAAgC,WAAdh0D,EAAMzyB,MAC1B7C,KAAKmsW,KAAKj/U,GAAO++d,UAAW,CAE5B,GADAjsf,KAAK2rf,UAAU3rf,KAAKmsW,KAAKj/U,IACrB22H,EAAK32H,EAAQ,GAEb,YADA22H,GAAM32H,EAAQ,GAAK22H,EAAKpjJ,QAAQimF,QAGhCm9D,EAAKA,EAAKpjJ,OAAS,IACnBojJ,EAAK,GAAGn9D,aA3BpB,CACIpxD,EAAMkuB,iBACN,IAAI0oc,EACAxzV,EAAQ,EACRprJ,GAAI4f,EACR,GACS5f,GAAIorJ,EAAS,GACdprJ,GAAIu2I,EAAKpjJ,OAAS,EAClByrf,EAAUroW,EAAKv2I,IACforJ,EAAQ,GAGRwzV,EAAUroW,EAAKv2I,GAAIorJ,GAEvBA,UACKwzV,EAAQt1Z,UAAUxP,SAAS,aACpC8ka,EAAQxla,YA3BZ,CACIpxD,EAAMkuB,iBACN,IAAI2oc,EACAzzV,EAAQ,EACZ,GACIyzV,EAAWtoW,EAAK6U,EAAQ7U,EAAKpjJ,QAC7Bi4J,UACKyzV,EAASv1Z,UAAUxP,SAAS,aACrC+ka,EAASzla,YA1Bb,CACI,IAAI0la,EACA1zV,EAAQ,EACRprJ,GAAI4f,EACR,GACS5f,GAAIorJ,EAAS,GACdprJ,GAAIu2I,EAAKpjJ,OAAS,EAClB2rf,EAAcvoW,EAAKv2I,IACnBorJ,EAAQ,GAGR0zV,EAAcvoW,EAAKv2I,GAAIorJ,GAE3BA,UACK0zV,EAAYx1Z,UAAUxP,SAAS,aACxCgla,EAAY1la,YAzBhB,CACI,IAAI2la,EACA3zV,EAAQ,EACZ,GACI2zV,EAAUxoW,GAAM32H,EAAQwrI,GAAS7U,EAAKpjJ,QACtCi4J,UACK2zV,EAAQz1Z,UAAUxP,SAAS,aACpCila,EAAQ3la,SAgEhBqla,mBAAmB7+d,GACf,MAAMo/d,EAAatsf,KAAKmsW,KAAK1rW,OAC7B,IAAK6rf,EACD,OAAO,EAEX,QAASj1e,EAAO,EAAGA,GAAQi1e,EAAYj1e,GAAQ,EAAG,CAC9C,MAAMk1e,EAAYr/d,EAAQ7V,EACpBo5Z,EAAYvjZ,EAAQ7V,EAC1B,GAAIrX,KAAKmsW,KAAKogJ,KAAevsf,KAAKmsW,KAAKogJ,GAAWhgc,SAC9C,OAAOggc,EAEX,GAAIvsf,KAAKmsW,KAAKskE,KAAezwa,KAAKmsW,KAAKskE,GAAWlkX,SAC9C,OAAOkkX,EAGf,OAAO,EAEXo7E,iBAAiB3+d,GACb,MAAMo/d,EAAatsf,KAAKmsW,KAAK1rW,OAC7B,IAAK6rf,EACD,OAAO,EAEX,QAASh/e,EAAI,EAAGA,EAAIg/e,EAAYh/e,GAAK,EACjC,IAAKtN,KAAKmsW,KAAK7+V,GAAGi/C,UAAYj/C,IAAM4f,EAChC,OAAO,EAGf,OAAO,EAEXs+d,cACIxrf,KAAKmrf,SAAW,CACZ,cAAenrf,KAAKo/J,SACpB,cAAep/J,KAAKo/J,SACpB,gBAAiBp/J,KAAKyrf,WACpB,OAAMzrf,KAAKmD,SAAS,IAIlC8nf,SAAgBjkf,UAAhB,0BAA4Gikf,GAhOJvqf,MAgOqCqqf,GAhOrCrqf,MAgO8DA,OAhO9DA,MAgOuFA,SAC/Luqf,EAAgB7ia,UAjOwF1nF,MAiOxG,MAAgGuqf,EAAhGnuc,kEAjOwGp8C,MAiOxG,6dAjOwGA,cAiO6L,UAjO7LA,MAiO2O,2BAAUulO,qBAjOrPvlO,MAiO8U,iBAjO9UA,cAiOgmC,WAjOhmCA,MAiO+nC,GAjO/nCA,SAiOxG,MAjOwGA,MAiO+M,sBAjO/MA,MAiOoR,0BAjOpRA,MAiOoW,GAjOpWA,MAiOoW,oBAA5cg8D,YAA+2Cg0B,KAA2EA,KAA0Gk6Z,EAAuFl6Z,MAA3nDpI,qJAjMM2ia,MAgNAuB,QAAN,QACI7sf,YAAY8sf,EAAQz3Z,EAAYnU,GAC5B7gF,KAAKg1F,WAAaA,EAClBh1F,KAAK6gF,SAAWA,EAEhB7gF,KAAKusD,UAAW,EAEhBvsD,KAAKisf,WAAY,EAEjBjsf,KAAK0sf,UAAY,IAAIvna,MAErBnlF,KAAK0pP,SAAW,IAAIvkK,MAEpBnlF,KAAK+pP,QAAU,IAAI5kK,MACnBnlF,KAAKmhF,UAAW,EAChBnhF,KAAKkJ,KAAO,WACZlJ,KAAK8jO,SAAU,EACf9jO,KAAK2sf,aAAe,GACpB3sf,KAAKysf,OAASA,EACdzsf,KAAKysf,OAAOf,OAAO1rf,MAGnB4sf,kBACA,OAAO5sf,KAAK2sf,aAEZC,gBAAYA,GACR5sf,KAAK4sf,aACL5sf,KAAK4sf,YAAY3mf,MAAM,KAAK+b,QAASy8B,IACjCz+C,KAAK6gF,SAASwhM,YAAYriR,KAAKg1F,WAAWpP,cAAennC,KAGjEz+C,KAAK2sf,aAAeC,EAAcA,EAAY1qb,OAAS,GACnDliE,KAAK4sf,aACL5sf,KAAK4sf,YAAY3mf,MAAM,KAAK+b,QAASy8B,IACjCz+C,KAAK6gF,SAASM,SAASnhF,KAAKg1F,WAAWpP,cAAennC,KAK9D07F,aACA,OAAOn6I,KAAK8jO,QAEZ3pF,WAAOA,GACP,GAAIn6I,KAAK8jO,UAAY3pF,EAGrB,IAAKn6I,KAAKusD,UAAY4tF,IAAYA,EAK9B,YAJIn6I,KAAK8jO,UAAY3pF,IACjBn6I,KAAK0pP,SAAS/7E,KAAK3tK,MACnBA,KAAK8jO,QAAU3pF,IAIvBn6I,KAAK8jO,QAAU3pF,EACfn6I,KAAK0sf,UAAU/+U,KAAK3tK,MACpBA,KAAKysf,OAAOtgJ,KAAKnqV,QAAS6mV,IAClBA,IAAQ7oW,OACR6oW,EAAI1uN,QAAS,MAIrB0yW,qBACA,OAAO7sf,KAAKe,GAAM,GAAEf,KAAKe,UAAY,GAEzC87C,WACI78C,KAAKisf,YAAcjsf,KAAKisf,UAE5B//e,cACIlM,KAAKysf,OAAOd,UAAU3rf,KAAM,CAAE4rf,UAAU,EAAOj+U,MAAM,KAG7D6+U,SAAaxlf,UAAb,0BAAyGwlf,GAvTD9rf,MAuT+Buqf,GAvT/Bvqf,MAuT2DA,OAvT3DA,MAuTqFA,SAC7L8rf,EAAa/ka,UAxT2F/mF,MAwTxG,MAA6F8rf,EAA7F1vc,8EAxTwGp8C,MAwTxG,UAxTwGA,CAwTxG,cAxTwGA,CAwTxG,oCAxTwGA,MAwTxG,kBAxTwGA,CAwTxG,yOAxEM8rf,MA6HA57b,QAAN,QAAiBj6B,iBAET,MAAO,CACHi+G,SAAUhkF,EACV+9B,UAAW,KAIvB/9B,SAAW5pD,UAAX,0BAAuG4pD,IACvGA,EAAWwxB,UAtX6F1hF,MAsXxG,MAAwGkwD,IAOxGA,EAAWyxB,UA7X6F3hF,MA6XxG,UAA8H,CAAC8vD,SAhBzHI,0JC5D6FlwD,MAkb+hC,QAlb/hCA,MAkbyjC,kBAlbzjCA,0DAkb6nC,OAlb7nCA,CAkb6nC,SAlb7nCA,MAkb4vC,mBAlb5vCA,MAkb4vCmpc,aAlb5vCnpc,QAkb4vC,OAAUuqR,kCAlbtwCvqR,MAkb0yC,YAlb1yCA,0CAkbyrC,GAlbzrCA,MAkbyrC,6EAlbzrCA,MAkbq4C,QAlbr4CA,MAkb+5C,UAlb/5CA,0DAkbu9C,OAlbv9CA,CAkbu9C,SAlbv9CA,MAkbslD,mBAlbtlDA,MAkbslDmpc,aAlbtlDnpc,QAkbslD,OAAUuqR,mCAlbhmDvqR,MAkbuoD,YAlbvoDA,0CAkbmhD,GAlbnhDA,MAkbmhD,6EAlbnhDA,MAkbgvD,QAlbhvDA,MAkb2wD,kBAlb3wDA,sCAkb00D,gCAlb10DA,MAkbsnF,QAlbtnFA,MAkbgpF,eAlbhpFA,0DAkb8rF,SAlb9rFA,CAkb8rF,aAlb9rFA,MAkbinG,qBAlbjnGA,MAkbinGmpc,aAlbjnGnpc,QAkb2nG,sBAAgB+9Z,+BAA2BA,iBAAmB,UAlbzrG/9Z,CAkbinG,6BAlbjnGA,MAkbinGmpc,aAlbjnGnpc,QAkbinG,OAAqHuqR,+BAA0B,QAlbhwGvqR,CAkbinG,+BAlbjnGA,MAkbinGmpc,aAlbjnGnpc,QAkbinG,OAA4LuqR,gCAA2B,QAlbx0GvqR,CAkbinG,sBAlbjnGA,aAkbinGmpc,IAAyPp6Z,EAlb12G/uC,MAkb02Gosf,2BAlb12Gpsf,0CAkbkvF,+BAlblvFA,MAkbozF,GAlbpzFA,MAkbozF,gCAlbpzFA,MAkb66F,oCAlb76FA,CAkb66F,4BAlb76FA,CAkb66F,uBAlb76FA,CAkb66F,oBAlb76FA,MAkby4G,uDAlbz4GA,MAkbm9G,QAlbn9GA,MAkb6+G,eAlb7+GA,0DAkb2hH,SAlb3hHA,CAkb2hH,aAlb3hHA,MAkb88H,qBAlb98HA,MAkb88Hmpc,aAlb98Hnpc,QAkbw9H,sBAAgB+9Z,gCAA4BA,iBAAmB,UAlbvhI/9Z,CAkb88H,6BAlb98HA,MAkb88Hmpc,aAlb98Hnpc,QAkb88H,OAAsHuqR,gCAA2B,QAlb/lIvqR,CAkb88H,+BAlb98HA,MAkb88Hmpc,aAlb98Hnpc,QAkb88H,OAA8LuqR,iCAA4B,QAlbxqIvqR,CAkb88H,sBAlb98HA,aAkb88Hmpc,IAA4Pp6Z,EAlb1sI/uC,MAkb0sIqsf,2BAlb1sIrsf,0CAkb+kH,+BAlb/kHA,MAkbipH,GAlbjpHA,MAkbipH,gCAlbjpHA,MAkb0wH,oCAlb1wHA,CAkb0wH,4BAlb1wHA,CAkb0wH,uBAlb1wHA,CAkb0wH,oBAlb1wHA,MAkbyuI,uDAlbzuIA,MAkbyzI,QAlbzzIA,MAkbo1I,kBAlbp1IA,0DAkbw4I,OAlbx4IA,CAkbw4I,cAlbx4IA,MAkb8nJ,mBAlb9nJA,aAkb8nJmpc,IAAUp6Z,EAlbxoJ/uC,MAkbwoJssf,mBAlbxoJtsf,MAkbmqJ,GAlbnqJA,0CAkbwjJ,GAlbxjJA,MAkbwjJ,kDAlbxjJA,MAkbw/I,kDAlbx/IA,MAkbmqJ,GAlbnqJA,MAkbmqJ,6CAlbnqJA,MAkbkjK,QAlbljKA,MAkb4kK,kBAlb5kKA,0DAkb+oK,OAlb/oKA,CAkb+oK,SAlb/oKA,MAkb8wK,mBAlb9wKA,MAkb8wKmpc,aAlb9wKnpc,QAkb8wK,OAAUuqR,mCAlbxxKvqR,MAkb+zK,YAlb/zKA,0CAkb2sK,GAlb3sKA,MAkb2sK,8EAlb3sKA,MAkbo6K,QAlbp6KA,MAkb87K,UAlb97KA,0DAkbq/K,OAlbr/KA,CAkbq/K,SAlbr/KA,MAkbonL,mBAlbpnLA,MAkbonLmpc,aAlbpnLnpc,QAkbonL,OAAUuqR,oCAlb9nLvqR,MAkbsqL,YAlbtqLA,0CAkbijL,GAlbjjLA,MAkbijL,6EAlbjjLA,MAkbixL,QAlbjxLA,MAkb4yL,kBAlb5yLA,uCAkb22L,QA1uB98L,YAAqBa,IAIjB,SAHKA,IAGDA,cAAiBJ,MAAQuzC,MAAMnzC,GAAMq5Q,eAGpB,iBAAVr5Q,IACAg9N,GAAY,IAAIp9N,KAAKI,MAIpC,YAAsBo7C,GAAUy8N,GAI5B,QAHIz8N,GAASJ,KAAO68N,EAAUz8N,GAASJ,KAGnCI,GAASH,KAAO48N,EAAUz8N,GAASH,KAK3C,YAAkBj7C,IACd,YAAqB,IAAVA,GACAirK,IAEU,iBAAVjrK,GACAA,GAEJgf,SAAShf,GAjCR,IAsCZ,YAAoBA,GAAOqzd,GAAO,GAC9B,MAAMzL,GAAOv3Q,GAASrwM,IACtB,OAAImzC,MAAMy0a,KACNA,GAAO,GACPA,IAAQyL,EAxCQ,GADJ,IA0CLpoT,IAEJ28S,GAEX,YAAsB5nd,IAClB,MAAMq0O,EAAShkC,GAASrwM,IACxB,OAAImzC,MAAMkhM,IAAWA,EAAS,GAAKA,EA9ChB,GA+CRppE,IAEJopE,EAEX,YAAsBr0O,IAClB,MAAMi0O,EAAU5jC,GAASrwM,IACzB,OAAImzC,MAAM8gM,IAAYA,EAAU,GAAKA,EApDhB,GAqDVhpE,IAEJgpE,EAEX,YAAmBj0O,IACf,MAAqB,iBAAVA,GACA,IAAIJ,KAAKI,IAEbA,GAEX,YAAoBA,GAAOykI,GACvB,IAAKzkI,GACD,OAAO0rf,GAAW51O,GAAW,IAAIl2Q,KAAQ,EAAG,EAAG,GAAI6kI,GAEvD,IAAKA,EACD,OAAOzkI,GAEX,IAAI4nd,GAAO5nd,GAAMq5Q,WACb7E,GAAUx0Q,GAAMi3Q,aAChBhjC,GAAUj0O,GAAMs5Q,aACpB,OAAI70I,EAAKmjV,OACLA,IAAcv3Q,GAAS5rE,EAAKmjV,OAE5BnjV,EAAK4vG,SACLmgC,IAAoBnkE,GAAS5rE,EAAK4vG,SAElC5vG,EAAKwvG,UACLA,IAAoB5jC,GAAS5rE,EAAKwvG,UAE/B6hC,GAAW91Q,GAAO4nd,GAAMpzM,GAASvgC,IAE5C,YAAiBj0O,GAAO2yR,GACpB,IAAIi1L,GAAO+jC,GAAWh5N,EAAKi1L,MAC3B,MAAMvzO,GAASu3Q,GAAaj5N,EAAKt+C,QAC3BJ,GAAU43Q,GAAal5N,EAAK1+C,UAAY,EAI9C,OAHI0+C,EAAK0gM,MAAiB,KAATzL,KACbA,IA3FgB,IA6FhBh9L,GAMAz3O,MAAMy0a,KAASz0a,MAAMkhM,IACdr0O,GAEJ81Q,GAAW91Q,GAAO4nd,GAAMvzO,GAAQJ,IAR9B9gM,MAAMy0a,KAAUz0a,MAAMkhM,IAGpBr0O,GAFI81Q,GAAW,IAAIl2Q,KAAQgod,GAAMvzO,GAAQJ,IASxD,YAAoBj0O,GAAOu0Q,EAAOC,GAASvgC,IACvC,MAAM9+I,GAAW,IAAIv1F,KAAKI,GAAMiyO,cAAejyO,GAAMm5Q,WAAYn5Q,GAAMo5Q,UAAW7E,EAAOC,GAASvgC,GAASj0O,GAAMi4B,mBAEjHk9D,UAASihL,YAAYp2Q,GAAMiyO,eAC3B98I,GAASo3X,SAASvsd,GAAMm5Q,YACxBhkL,GAASs3X,QAAQzsd,GAAMo5Q,WAChBjkL,GAEX,YAAmBn1F,IACf,MAAMg0F,EAASh0F,GAAMN,WACrB,OAAIs0F,EAAO90F,OAAS,EACT80F,EAEH,IAAGA,IAEf,YAA0BugL,GAAO8+M,GAC7B,OAAQlgb,MAAMw4c,GAAWp3O,GAAO8+M,IAEpC,YAA4B7+M,IACxB,OAAQrhO,MAAMy4c,GAAap3O,KAE/B,YAA4BvgC,IACxB,OAAQ9gM,MAAM04c,GAAa53Q,KAkB/B,YAAsBsgC,GAAOC,EAAU,IAAKvgC,GAAU,IAAKo/O,IACvD,OAAOy4B,GAAiBv3O,GAAO8+M,KACxB04B,GAAmBv3O,IACnBw3O,GAAmB/3Q,IAG9B,YAAwBjiN,GAAO+B,GAI3B,QAHI/B,GAAMi6d,eAAiBj6d,GAAMg5B,UAG7Bj3B,IACqB,UAAjBA,EAAMxb,SAAuByZ,GAAMk6d,YAGlB,QAAjBn4d,EAAMxb,SAAqByZ,GAAMm6d,YA0C7C,YAA0Bn6d,IACtB,MAAQo6d,WAAUC,cAAYC,eAAaL,iBAAejhc,YAAUkhc,cAAYC,aAAWI,gBAAcC,gBAAcrzF,eAAaszF,aAAWzxc,OAAKC,QAAQjpB,GAC5J,MAAO,CACHo6d,WACAC,cACAC,eACAL,iBACAjhc,YACAkhc,cACAC,aACAI,gBACAC,gBACArzF,eACAszF,aACAzxc,OACAC,YA0DFyxc,SAAN,SACItuf,cAEIK,KAAK2tf,SAAW,EAEhB3tf,KAAK4tf,WAAa,EAElB5tf,KAAK6tf,YAAc,GAEnB7tf,KAAK+tf,cAAe,EAEpB/tf,KAAKguf,UAAY,CAAC,KAAM,MAExBhuf,KAAKwtf,eAAgB,EAErBxtf,KAAKusD,UAAW,EAEhBvsD,KAAKkuf,gBAAiB,EAEtBluf,KAAKytf,YAAa,EAElBztf,KAAK0tf,WAAY,EAEjB1tf,KAAK8tf,cAAe,EAEpB9tf,KAAK06Z,aAAc,EAEnB16Z,KAAKmuf,aAAc,EAEnBnuf,KAAKouf,iBAAmB,KAExBpuf,KAAKquf,mBAAqB,KAE1Bruf,KAAKsuf,mBAAqB,KAE1Btuf,KAAKuuf,eAAiB,QAEtBvuf,KAAKwuf,iBAAmB,UAExBxuf,KAAKyuf,iBAAmB,WAGhCR,UAAiBjnf,UAAjB,4BAA6Ginf,KAC7GA,GAAiB9mf,WADkFzG,MACnG,OAAiHutf,GAAjHttf,QAAiHstf,GAAjH,qBAA+I,SA3CzIA,OAmDAlU,SAAN,SACI5uU,WAAW5pK,IACP,MAAO,CACH4B,KAAM42e,GAAkB2U,YACxBhkd,QAASnpC,IAGjBotf,YAAYr5d,IACR,MAAO,CACHnyB,KAAM42e,GAAkB6U,aACxBlkd,QAASpV,IAGjBu5d,cAAcv5d,IACV,MAAO,CACHnyB,KAAM42e,GAAkB+U,eACxBpkd,QAASpV,IAGjBy5d,cAAcz5d,IACV,MAAO,CACHnyB,KAAM42e,GAAkBiV,eACxBtkd,QAASpV,IAGjBi8a,QAAQhwc,IACJ,MAAO,CACH4B,KAAM42e,GAAkBkV,cACxBvkd,QAASnpC,IAGjB2tf,eAAe3tf,IACX,MAAO,CACH4B,KAAM42e,GAAkBoV,gBACxBzkd,QAASnpC,KAIrBw4e,UAAkB2U,YAAc,yCAChC3U,GAAkB6U,aAAe,4BACjC7U,GAAkB+U,eAAiB,8BACnC/U,GAAkBiV,eAAiB,8BACnCjV,GAAkBkV,cAAgB,6BAClClV,GAAkBoV,gBAAkB,+BACpCpV,GAAkB/ye,UAAlB,4BAA8G+ye,KAC9GA,GAAkB5ye,WAtDiFzG,MAsDnG,OAAkHq5e,GAAlHp5e,QAAkHo5e,GAAlH,qBAAiJ,aA7C3IA,OAmDN,MAAMh5Z,GAAe,CACjBx/E,WAAO,EACPgD,OAAQ,IAAI0pf,GACZtxc,SAAU,CACNyyc,mBAAmB,EACnBC,qBAAqB,EACrBC,qBAAqB,EACrBC,mBAAmB,EACnBC,qBAAqB,EACrBC,qBAAqB,EACrBC,mBAAmB,IAG3B,YAA2Bn8d,GAAQwtD,GAAct+D,GAC7C,OAAQA,EAAOtf,WACN42e,GAAkB2U,YACnB,OAAO9sf,OAAOc,OAAO,GAAI6wB,GAAO,CAAEhyB,MAAOkhB,EAAOioB,eAE/Cqvc,GAAkB6U,aAAc,CACjC,IAAKe,GAAep8d,GAAMhvB,OAAQke,EAAOioB,WAtOrD,YAAwBpV,GAAOqnB,GAO3B,SANKrnB,GAAMje,MAGPie,GAAMje,KAAO,IAAMslC,EAASyyc,mBAG5B95d,GAAMje,KAAO,IAAMslC,EAAS4yc,mBAgOnBK,CAAente,EAAOioB,QAASnX,GAAMopB,UACtC,OAAOppB,GAEX,MAAMs8d,GAAW5C,GAAW15d,GAAMhyB,MAAO,CAAE4nd,KAAM1mc,EAAOioB,QAAQrzB,OAChE,OAAKkc,GAAMhvB,OAAOi4C,MAAOjpB,GAAMhvB,OAAOg4C,KAASuzc,GAAav8d,GAAMhvB,OAAQsrf,IAGnEjuf,OAAOc,OAAO,GAAI6wB,GAAO,CAAEhyB,MAAOsuf,KAF9Bt8d,GAE8Bs8d,KAExC9V,GAAkB+U,eAAgB,CACnC,IAAKa,GAAep8d,GAAMhvB,OAAQke,EAAOioB,WArOrD,YAA0BpV,GAAOqnB,GAO7B,SANKrnB,GAAMje,MAGPie,GAAMje,KAAO,IAAMslC,EAAS0yc,qBAG5B/5d,GAAMje,KAAO,IAAMslC,EAAS6yc,qBA+NnBO,CAAiBtte,EAAOioB,QAASnX,GAAMopB,UACxC,OAAOppB,GAEX,MAAMs8d,GAAW5C,GAAW15d,GAAMhyB,MAAO,CAAEq0O,OAAQnzN,EAAOioB,QAAQrzB,OAClE,OAAKkc,GAAMhvB,OAAOi4C,MAAOjpB,GAAMhvB,OAAOg4C,KAASuzc,GAAav8d,GAAMhvB,OAAQsrf,IAGnEjuf,OAAOc,OAAO,GAAI6wB,GAAO,CAAEhyB,MAAOsuf,KAF9Bt8d,GAE8Bs8d,KAExC9V,GAAkBiV,eAAgB,CACnC,IAAKW,GAAep8d,GAAMhvB,OAAQke,EAAOioB,WApOrD,YAA0BpV,GAAOqnB,GAO7B,SANKrnB,GAAMje,MAGPie,GAAMje,KAAO,IAAMslC,EAAS2yc,qBAG5Bh6d,GAAMje,KAAO,IAAMslC,EAAS8yc,qBA8NnBO,CAAiBvte,EAAOioB,QAASnX,GAAMopB,UACxC,OAAOppB,GAEX,MAAMs8d,GAAW5C,GAAW15d,GAAMhyB,MAAO,CACrCi0O,QAAS/yN,EAAOioB,QAAQrzB,OAE5B,OAAKkc,GAAMhvB,OAAOi4C,MAAOjpB,GAAMhvB,OAAOg4C,KAASuzc,GAAav8d,GAAMhvB,OAAQsrf,IAGnEjuf,OAAOc,OAAO,GAAI6wB,GAAO,CAAEhyB,MAAOsuf,KAF9Bt8d,GAE8Bs8d,KAExC9V,GAAkBkV,cAAe,CAClC,IAAKU,GAAep8d,GAAMhvB,QACtB,OAAOgvB,GAEX,MAAMs8d,GAAWt+C,GAAQh+a,GAAMhyB,MAAOkhB,EAAOioB,SAC7C,OAAO9oC,OAAOc,OAAO,GAAI6wB,GAAO,CAAEhyB,MAAOsuf,UAExC9V,GAAkBoV,gBAAiB,CACpC,MAAMc,GA1NlB,YAA4B1uf,GAAOgyB,GAG/B,MAAQgpB,OAAKC,OAAKmxc,YAAUC,cAAYC,eAAanzF,gBAAgBnnY,EAC/Dy3B,GAAM,CACRokc,mBAAmB,EACnBC,qBAAqB,EACrBC,qBAAqB,EACrBC,mBAAmB,EACnBC,qBAAqB,EACrBC,qBAAqB,EACrBC,mBAAmB,GAEvB,IAAKnuf,GACD,OAAOypD,GAGX,GAAIxO,GAAK,CACL,MAAM0zc,GAAWjD,GAAW1rf,GAAO,CAAE4nd,KAAMwkC,KAE3C,GADA3ic,GAAIokc,kBAAoB5yc,GAAM0zc,IAAa3uf,GAAMq5Q,WAAa+yO,GAAYwC,IACrEnlc,GAAIokc,kBAAmB,CACxB,MAAMgB,GAAcnD,GAAW1rf,GAAO,CAAEq0O,OAAQg4Q,KAChD5ic,GAAIqkc,oBAAsB30F,GACpBl+W,GAAM4zc,GACN5zc,IAAO4zc,GAEjB,IAAKplc,GAAIqkc,oBAAqB,CAC1B,MAAMgB,GAAcpD,GAAW1rf,GAAO,CAAEi0O,QAASq4Q,KACjD7ic,GAAIskc,oBAAsB9yc,IAAO6zc,GAEjC9uf,GAAMq5Q,WAAa01O,KACnBtlc,GAAI0kc,kBAAoBzC,GAAW1rf,GAAO,CAAE4nd,KAAMmnC,KAAqB9zc,IAG/E,GAAID,GAAK,CACL,MAAM2zc,GAAWjD,GAAW1rf,GAAO,CAAE4nd,MAAOwkC,KAE5C,GADA3ic,GAAIukc,kBAAoBhzc,GAAM2zc,IACzBllc,GAAIukc,kBAAmB,CACxB,MAAMa,GAAcnD,GAAW1rf,GAAO,CAAEq0O,QAASg4Q,KACjD5ic,GAAIwkc,oBAAsB90F,GACpBn+W,GAAM6zc,GACN7zc,IAAO6zc,GAEjB,IAAKplc,GAAIwkc,oBAAqB,CAC1B,MAAMa,GAAcpD,GAAW1rf,GAAO,CAAEi0O,SAAUq4Q,KAClD7ic,GAAIykc,oBAAsBlzc,IAAO8zc,GAEjC9uf,GAAMq5Q,YAAc01O,KACpBtlc,GAAI0kc,kBAAoBzC,GAAW1rf,GAAO,CAAE4nd,MAAM,KAAsB5sa,IAGhF,OAAOyO,GAuK2Bulc,CAAmBh9d,GAAMhyB,MAAOkhB,EAAOioB,SAC3D8ld,GAAY,CACdjvf,MAAOgyB,GAAMhyB,MACbgD,OAAQke,EAAOioB,QACfiS,SAAUszc,IAEd,OAAI18d,GAAMhvB,OAAOwpf,eAAiByC,GAAUjsf,OAAOwpf,cAC3Cx6d,GAAMhyB,QACNivf,GAAUjvf,MAAQ,IAAIJ,KAAKoyB,GAAMhyB,QAGlCK,OAAOc,OAAO,GAAI6wB,GAAOi9d,YAGhC,OAAOj9d,QAIbk9d,SAAN,iBAA8Bpd,IAC1B1ze,cACI,MAAM2ze,GAAc,IAAI9re,IAAgB,CACpCrE,KAAM,gCAGVowD,MAAM+/a,GAAaod,GADL,IAAIld,IAAUzyZ,GAAcuyZ,GAAaod,MAI/DD,UAAgBzpf,UAAhB,4BAA4Gypf,KAC5GA,GAAgBtpf,WArJmFzG,MAqJnG,OAAgH+vf,GAAhH9vf,QAAgH8vf,GAAhH,qBAA6I,aAVvIA,OAgBN,MAAME,GAAoC,CACtCpua,QAAS8jF,KACTC,aAAaC,SAAW,IAAMqqV,IAC9BzkX,OAAO,OAELykX,SAAN,SACIjxf,YAAYmlF,GAAS02P,GAAKwwJ,GAAQ6kB,IAC9B7wf,KAAKw7U,IAAMA,GACXx7U,KAAKgse,OAASA,GACdhse,KAAK6wf,mBAAqBA,GAE1B7wf,KAAK2tf,SAAW,EAEhB3tf,KAAK4tf,WAAa,EAElB5tf,KAAK6tf,YAAc,GAEnB7tf,KAAKwtf,eAAgB,EAErBxtf,KAAKusD,UAAW,EAEhBvsD,KAAKytf,YAAa,EAElBztf,KAAK0tf,WAAY,EAEjB1tf,KAAK8tf,cAAe,EAEpB9tf,KAAK+tf,cAAe,EAEpB/tf,KAAKmuf,aAAc,EAEnBnuf,KAAK06Z,aAAc,EAEnB16Z,KAAKguf,UAAY,CAAC,KAAM,MAExBhuf,KAAKouf,iBAAmB,KAExBpuf,KAAKquf,mBAAqB,KAE1Bruf,KAAKsuf,mBAAqB,KAE1Btuf,KAAK4rB,QAAU,IAAIu5D,MAEnBnlF,KAAK8wf,eAAiB,IAAI3ra,MAE1BnlF,KAAK81Q,MAAQ,GACb91Q,KAAK+1Q,QAAU,GACf/1Q,KAAKw1O,QAAU,GACfx1O,KAAKy6Z,SAAW,GAEhBz6Z,KAAK+wf,cAAe,EACpB/wf,KAAKgxf,gBAAiB,EACtBhxf,KAAKixf,gBAAiB,EAEtBjxf,KAAKkxf,WAAa,QAClBlxf,KAAKmxf,aAAe,UACpBnxf,KAAKoxf,aAAe,UAEpBpxf,KAAKovf,mBAAoB,EACzBpvf,KAAKqvf,qBAAsB,EAC3Brvf,KAAKsvf,qBAAsB,EAC3Btvf,KAAKuvf,mBAAoB,EACzBvvf,KAAKwvf,qBAAsB,EAC3Bxvf,KAAKyvf,qBAAsB,EAC3Bzvf,KAAK0vf,mBAAoB,EAEzB1vf,KAAKmmD,SAAWyzH,SAAS/3K,UAEzB7B,KAAK6uN,UAAYj1C,SAAS/3K,UAC1B7B,KAAKuE,OAASugF,GACdljF,OAAOc,OAAO1C,KAAMA,KAAKuE,QACzBvE,KAAKqxf,cAAgBrlB,GAAOzwc,OAAOhI,IAASA,GAAMhyB,OAC7CoG,UAAWpG,KAEZvB,KAAKsxf,YAAY/vf,IACjBvB,KAAKmmD,SAAS5kD,IACdvB,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmB3B,eAAeqC,GAAiBvxf,UAEjFgse,GAAOzwc,OAAOhI,IAASA,GAAMopB,UACxBh1C,UAAW6pf,KACZ,MAAMC,GAAyBC,GAAa1xf,KAAK81Q,MAAO91Q,KAAK+1Q,QAAS/1Q,KAAKw1O,QAASx1O,KAAK40d,QACnFhpc,GAAU5rB,KAAKuE,OAAO2pf,gBACxBluf,KAAK2xf,uBAAyBF,GAElCzxf,KAAK4rB,QAAQ+hJ,KAAK/hJ,IAClBhqB,OAAOc,OAAO1C,KAAMwxf,IACpBh2K,GAAIrzP,iBAIRypa,wBACA,OAAO5xf,KAAK8tf,eAAiB9tf,KAAKwtf,cAElCqE,iBACA,QAAS7xf,KAAKwtf,eAAiBxtf,KAAKusD,UAExCulc,kBACI9xf,KAAK+wf,cAAe,EACpB/wf,KAAKgxf,gBAAiB,EACtBhxf,KAAKixf,gBAAiB,EAE1Br8B,OACI,OAAO50d,KAAK+tf,cAAgB/tf,KAAKy6Z,WAAaz6Z,KAAKguf,UAAU,GAEjE+D,QAAQxuc,IACJA,GAAOC,iBAEXwuc,UAAUzuc,IACN,OAAuC,EAAhCrrC,KAAK2D,KAAK0nC,GAAO0uc,QAAU,GAEtC53Z,cACIr6F,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmB3B,eAAeqC,GAAiBvxf,QAEjF2uf,YAAYt3e,GAAMyC,GAAS,IACvB9Z,KAAK8xf,kBACL9xf,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmBlC,YAAY,CAAEt3e,QAAMyC,aAErE+0e,cAAcx3e,GAAMyC,GAAS,IACzB9Z,KAAK8xf,kBACL9xf,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmBhC,cAAc,CAAEx3e,QAAMyC,aAEvEi1e,cAAc13e,GAAMyC,GAAS,IACzB9Z,KAAK8xf,kBACL9xf,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmB9B,cAAc,CAAE13e,QAAMyC,aAEvEo4e,YAAY9gf,IACRpR,KAAK8xf,kBACL9xf,KAAK81Q,MAAQ1kQ,GAAO7P,MACpB,MAAMkwf,GAAyBpE,GAAiBrtf,KAAK81Q,MAAO91Q,KAAK40d,SAAW50d,KAAK8vf,eAIjF,KAHgB9vf,KAAKuE,OAAO2pf,gBACxBluf,KAAK2xf,uBAAyBF,IAM9B,OAHAzxf,KAAK+wf,cAAe,EACpB/wf,KAAK4rB,QAAQ+hJ,MAAK,QAClB3tK,KAAKmmD,SAAS,MAGlBnmD,KAAKmyf,cAETrF,cAAc17e,IACVpR,KAAK8xf,kBACL9xf,KAAK+1Q,QAAU3kQ,GAAO7P,MACtB,MAAMkwf,GAAyBnE,GAAmBttf,KAAK+1Q,UAAY/1Q,KAAK8vf,eAIxE,KAHgB9vf,KAAKuE,OAAO2pf,gBACxBluf,KAAK2xf,uBAAyBF,IAM9B,OAHAzxf,KAAKgxf,gBAAiB,EACtBhxf,KAAK4rB,QAAQ+hJ,MAAK,QAClB3tK,KAAKmmD,SAAS,MAGlBnmD,KAAKmyf,cAETpF,cAAc37e,IACVpR,KAAK8xf,kBACL9xf,KAAKw1O,QAAUpkO,GAAO7P,MACtB,MAAMkwf,GAAyBlE,GAAmBvtf,KAAKw1O,UAAYx1O,KAAK8vf,eAIxE,KAHgB9vf,KAAKuE,OAAO2pf,gBACxBluf,KAAK2xf,uBAAyBF,IAM9B,OAHAzxf,KAAKixf,gBAAiB,EACtBjxf,KAAK4rB,QAAQ+hJ,MAAK,QAClB3tK,KAAKmmD,SAAS,MAGlBnmD,KAAKmyf,cAETrC,eACI,OAjgBR,YAA2B9pX,GAAMxpF,EAAKD,IAClC,MAAM68N,GAAUm4L,GAAQ,IAAIpwc,KAAQ6kI,IAOpC,SANKozI,IAGD58N,GAAO48N,GAAU58N,GAGjBD,IAAO68N,GAAU78N,IAyfV61c,CAAkB,CACrBjpC,KAAMnpd,KAAK81Q,MACXlgC,OAAQ51O,KAAK+1Q,QACbvgC,QAASx1O,KAAKw1O,QACdo/O,KAAM50d,KAAK40d,QACZ50d,KAAKw8C,IAAKx8C,KAAKu8C,KAEtBo1c,sBACI,OA5fR,YAA2B77O,GAAOC,EAASvgC,IACvC,OAAwB,IAAjBsgC,GAAMr1Q,QAAmC,IAAnBs1Q,EAAQt1Q,QAAmC,IAAnB+0O,GAAQ/0O,OA2flD4xf,CAAkBryf,KAAK81Q,MAAO91Q,KAAK+1Q,QAAS/1Q,KAAKw1O,SAE5D28Q,cACI,MAEMV,GAAyBC,GAAa1xf,KAAK81Q,MADhC91Q,KAAKmuf,YAAcnuf,KAAK+1Q,aAAU,EADlC/1Q,KAAK06Z,YAAc16Z,KAAKw1O,aAAU,EAEyBx1O,KAAK40d,QAIjF,KAHgB50d,KAAKuE,OAAO2pf,gBACxBluf,KAAK2xf,uBAAyBF,IAK9B,OAFAzxf,KAAK4rB,QAAQ+hJ,MAAK,QAClB3tK,KAAKmmD,SAAS,MAGlBnmD,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmBt/C,QAAQ,CACjD4X,KAAMnpd,KAAK81Q,MACXlgC,OAAQ51O,KAAK+1Q,QACbvgC,QAASx1O,KAAKw1O,QACdo/O,KAAM50d,KAAK40d,UAGnBo4B,iBACShtf,KAAK+tf,cAAiB/tf,KAAK6xf,YAIhC7xf,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmBlC,YAAY,CACrDt3e,KAFqB,GAGrByC,OAAQ,MAMhBqxJ,WAAWp9I,IACHwwM,GAAYxwM,KACZ/tB,KAAK8xf,kBACL9xf,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmB1lV,WAAWmnV,GAAUvke,OAEtD,MAAPA,IACL/tB,KAAKgse,OAAO7rc,SAASngC,KAAK6wf,mBAAmB1lV,cAOrDC,iBAAiBt/I,IACb9rB,KAAKmmD,SAAWr6B,GAKpBu/I,kBAAkBv/I,IACd9rB,KAAK6uN,UAAY/iM,GAQrBw/I,iBAAiBC,IACbvrK,KAAKusD,SAAWg/G,GAChBvrK,KAAKw7U,IAAIrzP,eAEbj8E,cACI,IAAIlE,GAC0B,QAA7BA,GAAKhI,KAAKqxf,qBAAkC,IAAPrpf,IAAyBA,GAAGoE,cAEtEklf,YAAY/vf,IACR,IAAKA,KAAUg9N,GAAYh9N,IAMvB,OALAvB,KAAK81Q,MAAQ,GACb91Q,KAAK+1Q,QAAU,GACf/1Q,KAAKw1O,QAAU,GACfx1O,KAAKy6Z,SAAWz6Z,KAAKguf,UAAU,QAC/Bhuf,KAAK8wf,eAAenjV,KAAK3tK,KAAKy6Z,UAGlC,MAAMllU,GAAS+8Z,GAAU/wf,IACzB,IAAKg0F,GACD,OAGJ,IAAIg9Z,GAASh9Z,GAAOqlL,WAChB56Q,KAAK+tf,eACL/tf,KAAKy6Z,SAAWz6Z,KAAKguf,UAAUuE,IAHV,GAGuC,EAAI,GAChEvyf,KAAK8wf,eAAenjV,KAAK3tK,KAAKy6Z,UAC9B83F,IALqB,GAON,IAAXA,KACAA,GARiB,KAWzBvyf,KAAK81Q,MAAQuF,GAAUk3O,IACvBvyf,KAAK+1Q,QAAUsF,GAAU9lL,GAAOijL,cAChCx4Q,KAAKw1O,QAAU6lC,GAAU9lL,GAAO60X,kBAGxCwmC,UAAoB5pf,UAApB,4BAAgH4pf,IAjbblwf,MAibkDutf,IAjblDvtf,MAib+EA,OAjb/EA,MAibgH+vf,IAjbhH/vf,MAib4Iq5e,MAC/O6W,GAAoBxoa,UAlb+E1nF,MAkbnG,MAAoGkwf,GAApG9zc,0hBAlbmGp8C,MAkb0lB,CAACiwf,GAAmCF,KAlb9nB/vf,OAkbnGi9C,qhBAlbmGj9C,MAkb8rB,UAlb9rBA,CAkb8rB,UAlb9rBA,CAkb8rB,SAlb9rBA,CAkb8rB,OAlb9rBA,CAkb8rB,SAlb9rBA,MAkb05B,0BAAU8xf,8BAlbp6B9xf,MAkbo8B,YAlbp8BA,gBAkb+hC,gBAlb/hCA,MAkb6nC,gBAlb7nCA,MAkbq4C,gBAlbr4CA,MAkbu9C,gBAlbv9CA,MAkbgvD,iBAlbhvDA,MAkb00D,iBAlb10DA,cAkbu3D,QAlbv3DA,CAkbu3D,UAlbv3DA,CAkbu3D,cAlbv3DA,MAkb0yE,qBAAU,sBAAgB8xf,2BAAuBA,iBAAmB,UAlb92E9xf,CAkb0yE,oCAAiH8xf,2BAAsB,QAlbj7E9xf,CAkb0yE,sCAAoL8xf,4BAAuB,QAlbr/E9xf,CAkb0yE,6BAA6O8xf,4BAlbvhF9xf,gBAkbsnF,iBAlbtnFA,MAkb8rF,iBAlb9rFA,MAkbm9G,iBAlbn9GA,MAkb2hH,iBAlb3hHA,MAkbyzI,iBAlbzzIA,MAkbw4I,iBAlbx4IA,cAkb0tJ,UAlb1tJA,CAkb0tJ,QAlb1tJA,CAkb0tJ,UAlb1tJA,MAkbg6J,0BAAU8xf,+BAlb16J9xf,MAkb68J,aAlb78JA,gBAkbkjK,iBAlbljKA,MAkb+oK,iBAlb/oKA,MAkbo6K,kBAlbp6KA,MAkbq/K,iBAlbr/KA,MAkbixL,iBAlbjxLA,MAkb22L,kBAlb32LA,aAkbnG,OAlbmGA,MAkb8uB,GAlb9uBA,MAkb8uB,2BAlb9uBA,MAkby1B,GAlbz1BA,MAkby1B,kDAlbz1BA,MAkboiC,GAlbpiCA,MAkboiC,uBAlbpiCA,MAkbkoC,GAlbloCA,MAkbkoC,uBAlbloCA,MAkb04C,GAlb14CA,MAkb04C,uBAlb14CA,MAkb49C,GAlb59CA,MAkb49C,uBAlb59CA,MAkbqvD,GAlbrvDA,MAkbqvD,wBAlbrvDA,MAkb+0D,GAlb/0DA,MAkb+0D,wBAlb/0DA,MAkbm7D,GAlbn7DA,MAkbm7D,6BAlbn7DA,MAkbm/D,GAlbn/DA,MAkbm/D,8BAlbn/DA,MAkb0mE,kCAlb1mEA,CAkb0mE,4BAlb1mEA,CAkb0mE,uBAlb1mEA,CAkb0mE,kBAlb1mEA,MAkbojF,4BAlbpjFA,MAkb2nF,GAlb3nFA,MAkb2nF,uBAlb3nFA,MAkb6tF,GAlb7tFA,MAkb6tF,uBAlb7tFA,MAkbw9G,GAlbx9GA,MAkbw9G,uBAlbx9GA,MAkb0jH,GAlb1jHA,MAkb0jH,uBAlb1jHA,MAkb8zI,GAlb9zIA,MAkb8zI,wBAlb9zIA,MAkb64I,GAlb74IA,MAkb64I,wBAlb74IA,MAkbovJ,GAlbpvJA,MAkbovJ,2BAlbpvJA,MAkb+1J,GAlb/1JA,MAkb+1J,kDAlb/1JA,MAkbujK,GAlbvjKA,MAkbujK,uBAlbvjKA,MAkbopK,GAlbppKA,MAkbopK,uBAlbppKA,MAkby6K,GAlbz6KA,MAkby6K,uBAlbz6KA,MAkb0/K,GAlb1/KA,MAkb0/K,uBAlb1/KA,MAkbsxL,GAlbtxLA,MAkbsxL,wBAlbtxLA,MAkbg3L,GAlbh3LA,MAkbg3L,0BAAn9Lg8D,YAAg0M4tS,MAAh0MhiR,2TAlRMsoa,OAwVAhyF,SAAN,SAAuBjoY,iBAEf,MAAO,CACHi+G,SAAUgqR,GACVjwU,UAAW,CAACorZ,GAAmB0W,MAI3C7xF,UAAiB53Z,UAAjB,4BAA6G43Z,KAC7GA,GAAiBx8U,UAjgBkF1hF,MAigBnG,MAA8Gk+Z,KAC9GA,GAAiBv8U,UAlgBkF3hF,MAkgBnG,WAA2I,CAAC+vf,IAA5Ihxa,SAAwK,CAACjvB,SAVnKouW,4JCjzBA6zF,QAAN,QACI9yf,cAEIK,KAAKqhJ,kBAAmB,EAExBrhJ,KAAKk9J,UAAY,MAEjBl9J,KAAK4nd,SAAW,cAEhB5nd,KAAK81C,MAAQ,GAGrB28c,SAAczrf,UAAd,0BAA0Gyrf,IAC1GA,EAActrf,WADkFzG,MAChG,OAA8G+xf,EAA9G9xf,QAA8G8xf,EAA9G,qBAAyI,SAbnIA,MAmBAC,QAAN,QACI/yf,YAAY4E,GACR3C,OAAOc,OAAO1C,KAAMuE,GAEpBw8e,kBACA,OAAOG,UAEXp3U,kBACI9pK,KAAKmrf,SAAW,CAAEwH,IAAI,EAAOn0c,MAAM,GAC/Bx+C,KAAKk9J,YACDl9J,KAAK+gf,YAAYC,QACjBhhf,KAAKk9J,UAAY+jV,KAAgBjhf,KAAKk9J,YAE1Cl9J,KAAKmrf,SAASnrf,KAAKk9J,YAAa,GAEpCl9J,KAAKmrf,SAAU,WAAUnrf,KAAKk9J,cAAe,EAC7Cl9J,KAAKmrf,SAASwH,IAAQ,EAClB3yf,KAAKw2O,YACLx2O,KAAKmrf,SAAS3sc,MAAU,GAExBx+C,KAAK+zP,iBACL/zP,KAAKmrf,SAASnrf,KAAK+zP,iBAAkB,IAIjD2+P,SAA0B1rf,UAA1B,0BAAsH0rf,GAhCtBhyf,MAgCiE+xf,KACjKC,EAA0Btqa,UAjCsE1nF,MAiChG,MAA0Ggyf,EAA1G51c,uDAAqM,WAArMkoH,4CAjCgGtkK,MAiChG,WAjCgGA,MAiChG,mGAjCgGA,MAiChG,4BAjCgGA,CAiChG,uJAjCgGA,cAkC5F,WAlC4FA,MAmC5F,WAnC4FA,MAmCjE,GAnCiEA,UAiChG4nF,kcA1BMoqa,MAsEF3xf,EAAK,EACH6xf,QAAN,QACIjzf,YAAY8lQ,EAAmBkxO,EAAKpye,EAAQmgF,EAAas8L,GAAWy0N,GAChEz1e,KAAK0kF,YAAcA,EACnB1kF,KAAKghR,UAAYA,GACjBhhR,KAAKy1e,iBAAmBA,EACxBz1e,KAAK6yf,UAAY9xf,IAEjBf,KAAKqhJ,kBAAmB,EAExBrhJ,KAAK8yf,cAAgB,IAAI3ta,MAIzBnlF,KAAKk9J,UAAY,MAKjBl9J,KAAK4nd,SAAW,cAIhB5nd,KAAK+zP,eAAiB,GAItB/zP,KAAKurK,YAAa,EAIlBvrK,KAAK81C,MAAQ,EAEb91C,KAAK+yf,kBAAmB,EAExB/yf,KAAKgzf,oBAAsB,IAE3Bhzf,KAAKizf,oBAAsB,IAAI9ta,MAC/BnlF,KAAKkzf,SAAWvc,EACX/tB,aAAa5od,KAAK0kF,YAAa+gL,EAAmBzlQ,KAAKghR,WACvDz+L,QAAQ,CAAEA,QAASkwa,EAAejwa,SAAUj+E,IACjD3C,OAAOc,OAAO1C,KAAMuE,GACpBvE,KAAK6jD,QAAU7jD,KAAKkzf,SAASrvc,QAC7B7jD,KAAK4jD,SAAW5jD,KAAKkzf,SAAStvc,SAK9Bs8F,aACA,OAAOlgJ,KAAKkzf,SAAStsC,QAErB1mU,WAAO3+I,GACHA,EACAvB,KAAK0jD,OAGL1jD,KAAKkwD,OAITijc,gBAAY5xf,IACZ6xf,QAAS,4DACTpzf,KAAK48J,QAAUr7J,EAIfg6e,eAAWh6e,IACX6xf,QAAS,mEACTpzf,KAAKk9J,UAAY37J,EAIjB8gd,YAAQ9gd,IACR6xf,QAAS,6DACTpzf,KAAKkgJ,OAAS3+I,EAEd8gd,cACA+wC,eAAS,6DACFpzf,KAAKkgJ,OAIZ28V,YAAQt7e,IACR6xf,QAAS,iEACTpzf,KAAKurK,YAAchqK,EAEnBs7e,cACAuW,eAAS,iEACFpzf,KAAKurK,WAIZ8nV,kBAAc9xf,IACd6xf,QAAS,6EACTpzf,KAAKotC,UAAY7rC,EAAQ,OAASvB,KAAKotC,UAEvCimd,oBACAD,eAAS,6EACiB,SAAnBpzf,KAAKotC,UAIZkmd,gBAAY/xf,IACZ6xf,QAAS,2BAITG,oBAAgBhyf,IAChB6xf,QAAS,6BAITI,uBAAmBjyf,IACnB6xf,QAAS,wDACTpzf,KAAK81C,MAAQv0C,EAGbkyf,sBACAL,eAAS,gEACFpzf,KAAK4nd,SAEZ6rC,oBAAgBlyf,IAChB6xf,QAAS,gEACTpzf,KAAK4nd,UAAYrmd,GAAS,IAAIN,WAElC47C,WACI78C,KAAKkzf,SAASrwV,OAAO,CACjB+kT,SAAU5nd,KAAK4nd,SACflka,KAAM,IAAM1jD,KAAK0jD,SAErB1jD,KAAK8yf,cAAcnrf,UAAWpG,IACrBA,GACDvB,KAAKkzf,SAAShjc,SAGtBlwD,KAAK6jD,QAAQl8C,UAAU,KACnB3H,KAAKwhf,uBAETxhf,KAAK4jD,SAASj8C,UAAU,KACpB3H,KAAKwhf,uBAGbA,qBACIxhf,KAAKyhf,iBAAmBzhf,KAAKkgJ,OAAU,WAAUlgJ,KAAK6yf,iBAAc,EACpE7yf,KAASyhf,iBACLzhf,KAAKghR,UAAUn/L,aAAa7hF,KAAK0kF,YAAYkB,cAAe,mBAAoB5lF,KAAKyhf,kBAGrFzhf,KAAKghR,UAAUv6L,gBAAgBzmF,KAAK0kF,YAAYkB,cAAe,oBAOvEu/J,SACI,GAAInlP,KAAKkgJ,OACL,OAAOlgJ,KAAKkwD,OAEhBlwD,KAAK0jD,OAMTA,OAYI,GAXA1jD,KAAKy1e,iBAAiB1mD,WAAW,CAC7Bt0M,UAAW,CACPr6B,KAAM,CACFx2I,QAAS5pE,KAAKqhJ,kBAElBu0V,gBAAiB,CACbhsa,QAAS5pE,KAAKqhJ,iBACdujW,kBAAmB5kf,KAAK4kf,mBAAqB,mBAIrD5kf,KAAKkgJ,QACLlgJ,KAAKurK,YACLvrK,KAAK2hf,kBACJ3hf,KAAK48J,QACN,OAEJ,MAAM82V,EAAc,KACZ1zf,KAAK2hf,kBACL3hf,KAAK2hf,qBAAkB1+e,GAE3BjD,KAAKkzf,SACAlka,OAAO0ja,GACP9/U,GAAG5yK,KAAKotC,WACRgkB,SAAS,CAAE41Z,WAAYhnd,KAAKk9J,YAC5Bx5G,KAAK,CACN49B,QAASthF,KAAK48J,QACdM,UAAWl9J,KAAKk9J,UAChB62F,eAAgB/zP,KAAK+zP,eACrBhzP,GAAK,WAAUf,KAAK6yf,eAGtB9Q,EAA8B,KAC5B/hf,KAAK2zf,sBACL3zf,KAAK2zf,wBAGT3zf,KAAK81C,OACD91C,KAAK4zf,oBACL5zf,KAAK4zf,mBAAmBxnf,cAE5BpM,KAAK4zf,oBAAqB79c,OAAM/1C,KAAK81C,OAAOnuC,UAAU,KAClD+rf,IACA3R,MAEA/hf,KAAK4nd,WACLs6B,QAAclif,KAAK4nd,UACd5lc,QAASgiE,KACLA,EAAQ2F,QAGb3pF,KAAK2zf,qBAAuB3zf,KAAKghR,UAAUn+G,OAAO7iK,KAAK0kF,YAAYkB,cAAe5B,EAAQ2F,MAAO,KAC7F,IAAI3hF,EAC+B,QAAlCA,EAAKhI,KAAK4zf,0BAAuC,IAAP5rf,GAAyBA,EAAGoE,cACvE21e,UAMZ2R,IAORxjc,OACI,IAAIloD,EACAhI,KAAK2hf,kBACL74Z,aAAa9oF,KAAK2hf,iBAClB3hf,KAAK2hf,qBAAkB1+e,GAEtBjD,KAAKkzf,SAAStsC,WAGmB,QAAjC5+c,EAAKhI,KAAKkzf,SAASl8d,gBAA6B,IAAPhvB,OAAgB,EAASA,EAAGmjf,YACtEnrf,KAAKkzf,SAASl8d,SAASm0d,SAASwH,IAAQ,GAE5Ch7d,WAAW,KACP33B,KAAKkzf,SAAShjc,QACflwD,KAAKgzf,sBAEZ9mf,cACIlM,KAAKkzf,SAAS9pa,UACdppF,KAAK8yf,cAAc1mf,cACfpM,KAAK4zf,oBACL5zf,KAAK4zf,mBAAmBxnf,cAE5BpM,KAAK6jD,QAAQz3C,cACbpM,KAAK4jD,SAASx3C,eAGtBwmf,SAAiB5rf,UAAjB,0BAA6G4rf,GAhVblyf,MAgV+CA,OAhV/CA,MAgV+E4mF,MAhV/E5mF,MAgVqH+xf,GAhVrH/xf,MAgV+IA,OAhV/IA,MAgVyKA,OAhVzKA,MAgVkM2nF,QAClSuqa,EAAiBnra,UAjV+E/mF,MAiVhG,MAAiGkyf,EAAjG91c,w7BACAmiG,QAAW,EACP4jU,WACAC,QAAW,cAAelhd,SAC3Bgxf,EAAiB/wf,UAAW,eAAW,GAvQpC+wf,MA2UAz3Z,QAAN,QAAoBxkE,iBAEZ,MAAO,CACHi+G,SAAUz5C,EACVxM,UAAW,CAACkzD,KAAwBC,QAIhD3mD,SAAcn0F,UAAd,0BAA0Gm0F,IAC1GA,EAAc/Y,UAlakF1hF,MAkahG,MAA2Gy6F,IAC3GA,EAAc9Y,UAnakF3hF,MAmahG,UAAoI,CAAC8vD,SAV/H2qC,0JC3aN,QACIx7F,YAAY+gD,GAAMipC,IACd3pF,KAAK0gD,KAAOA,GACZ1gD,KAAK2pF,MAAQA,IAASjpC,GAE1Bmzc,WACI,MAAqB,WAAd7zf,KAAK0gD,MAAoC,WAAf1gD,KAAK2pF,OAI9C,MAAMmqa,EAAkB,CACpBC,MAAO,CAAC,YAAa,YACrBrta,MAAO,CAAC,UAAW,aAGvB,WAAuBkhY,GAAUqB,GAAU6qC,GACvC,MAAME,IAAmBpsC,IAAY,IAAI1lZ,OACzC,GAA+B,IAA3B8xb,GAAgBvzf,OAChB,MAAO,GAEX,MAAMwzf,GAAiBD,GAClB/tf,MAAM,OACNR,IAAKu+E,IAAYA,GAAQ/9E,MAAM,MAC/BR,IAAKyuf,KACN,MAAMp2b,GAAQmrZ,GAAQirC,GAAY,KAAOA,GACzC,OAAO,IAAIC,EAAQr2b,GAAM,GAAIA,GAAM,MAEjCs2b,GAAiBH,GAAe7/e,OAAQ8/e,IAAgBA,GAAYL,YAC1E,GAAIO,GAAe3zf,OAAS,EACxB,MAAM,IAAIoE,MAAM,4DAEpB,GAA8B,IAA1Buvf,GAAe3zf,QAAgBwzf,GAAexzf,OAAS,EACvD,MAAM,IAAIoE,MAAM,2EAEpB,OAAOovf,GAwBX,WAA4Bpza,GAAUj+E,IAClC,MAAMqxf,GAAiB/R,EAAct/e,GAAQgld,UACvCx2c,GAASxO,GAAQwO,OAEvB,GAA8B,IAA1B6if,GAAexzf,QAAgBwzf,GAAe,GAAGJ,WACjD,OAAOj6U,SAAS/3K,UAGpB,MAAM4uU,GAAY,GAEZ4jL,GAAgB,GAChBvsC,GAAe,KAEjBusC,GAAcrye,QAAS8J,IAAO2kT,GAAU7/T,KAAKkb,OAE7Cuoe,GAAc5zf,OAAS,GAG3Bwzf,UAAejye,QAASgiE,KACpB,MAAMswa,GAAYtwa,GAAQtjC,OAASsjC,GAAQ2F,MACrC4qa,GAASD,GAAY1xf,GAAQuiP,OAASviP,GAAQ8gD,KACpD,IAAK4wc,IAAatwa,GAAQ2F,OAAS/mF,GAAQstD,KAAM,CAC7C,MAAMqub,GAAQ19Z,GAASgiF,OAAOzxJ,GAAQ4yE,GAAQ2F,MAAO/mF,GAAQstD,MAC7Dmkc,GAAczjf,KAAK,IAAM2te,IAEzBgW,IACA9jL,GAAU7/T,KAAKiwE,GAASgiF,OAAOzxJ,GAAQ4yE,GAAQtjC,KAAM,IAAM6zc,GAAOzsC,QAGnE,KACHr3I,GAAUzuT,QAASwye,IAAkBA,OAG7C,WAA8B3za,GAAUj+E,IACpC,OAAKA,GAAQ8ja,aAIN7lV,GAASgiF,OAAO,WAAY,QAAUvtI,KACrC1yB,GAAQwO,QAAUxO,GAAQwO,OAAOg2E,SAAS9xD,GAAMlkB,SAGhDxO,GAAQ8hD,SACR9hD,GAAQ8hD,QAAQz7C,KAAKmI,IAAUA,GAAOg2E,SAAS9xD,GAAMlkB,UAGrDxO,GAAQstD,MACRttD,GAAQstD,SAZL0pH,SAAS/3K,UAgBxB,WAA0Bg/E,GAAUj+E,IAChC,OAAKA,GAAQild,WAGNhnY,GAASgiF,OAAO,WAAY,YAAcvtI,KACzC1yB,GAAQwO,QAAUxO,GAAQwO,OAAOg2E,SAAS9xD,GAAMlkB,SAGhDxO,GAAQ8hD,SACR9hD,GAAQ8hD,QAAQz7C,KAAKmI,IAAUA,GAAOg2E,SAAS9xD,GAAMlkB,UAGrDxO,GAAQstD,MACRttD,GAAQstD,SAXL0pH,SAAS/3K,UA2BxB,MAAM4yf,EAAyB,oBAAX1+d,QAA0BA,QAAW,GAczD,IAAI2+d,EAAS,MACZ,OAAUA,GAIRA,IAAcA,EAAY,KAHfpyC,MAAW,MACrBoyC,GAAUxZ,MAAW,MACrBwZ,GAAU1T,MAAW,MAJrB0T,EACH,IAAUA,IADE,GAMb,IAAIC,EACJ,cACI,QAA4B,IAAjBF,EAAIrza,SACX,MAAO,MAEX,MAAMwza,GAASH,EAAIrza,SAASM,cAAc,QAC1Ckza,GAAO95Z,UAAY,qBACnB85Z,GAAOh+Z,UAAUziE,IAAI,UACrByge,GAAOh+Z,UAAUziE,IAAI,QACrBsge,EAAIrza,SAAS2U,KAAKgC,YAAY68Z,IAC9B,MAAMvqO,GAAOuqO,GAAOrwV,wBACdswV,GAAeJ,EAAIp4Q,iBAAiBu4Q,IAAQE,YAClD,OAAKzqO,IAASA,IAAqB,IAAbA,GAAK7/L,KACvBiqa,EAAIrza,SAAS2U,KAAKu5L,YAAYslO,IACvB,OAEPC,IAAgBz8e,WAAWy8e,KAC3BJ,EAAIrza,SAAS2U,KAAKu5L,YAAYslO,IACvB,QAEXH,EAAIrza,SAAS2U,KAAKu5L,YAAYslO,IACvB,OAMX,aACI,YAAmB,IAARH,SAGgB,IAAhBA,EAAIM,SACPJ,IAGJA,EAAiBK,MACS,QAAnBL,GAEY,QAAhBF,EAAIM,SAEf,cACI,OAAIzyC,MAEAqyC,IAEJA,EAAiBK,MACS,QAAnBL,GAUX,aACI,MAAO,CACHryC,MAAOA,IACP44B,MAAOA,KACP8F,OAXA1+B,MAAW44B,OAEXyZ,IAEJA,EAAiBK,MACS,QAAnBL,IAeX,SACIh1f,cACIK,KAAKS,OAAS,EACdT,KAAKi1f,QAAU,GAGnB7zf,IAAIgwD,IACA,GAAoB,IAAhBpxD,KAAKS,QAAgB2wD,GAAW,GAAKA,IAAYpxD,KAAKS,OACtD,OAEJ,IAAI8/K,GAAUvgL,KAAK+1F,KACnB,QAAS7oE,GAAQ,EAAGA,GAAQkkC,GAAUlkC,KAClCqzJ,GAAsB,MAAZA,QAAyC,EAASA,GAAQr8K,KAExE,OAAmB,MAAZq8K,QAAyC,EAASA,GAAQh/K,MAErE4yB,IAAI5yB,GAAO6vD,GAAWpxD,KAAKS,QACvB,GAAI2wD,GAAW,GAAKA,GAAWpxD,KAAKS,OAChC,MAAM,IAAIoE,MAAM,+BAEpB,MAAM6uD,GAAO,CACTnyD,SACA2C,UAAMjB,EACNggL,cAAUhgL,GAEd,GAAoB,IAAhBjD,KAAKS,OACLT,KAAK+1F,KAAOriC,GACZ1zD,KAAKmiN,KAAOzuJ,GACZ1zD,KAAKugL,QAAU7sH,WAGE,IAAbtC,IAAkBpxD,KAAK+1F,KAEvBriC,GAAKxvD,KAAOlE,KAAK+1F,KACjB/1F,KAAK+1F,KAAKktF,SAAWvvH,GACrB1zD,KAAK+1F,KAAOriC,WAEPtC,KAAapxD,KAAKS,QAAUT,KAAKmiN,KAEtCniN,KAAKmiN,KAAKj+M,KAAOwvD,GACjBA,GAAKuvH,SAAWjjL,KAAKmiN,KACrBniN,KAAKmiN,KAAOzuJ,OAEX,CAED,MAAMwhc,GAAsBl1f,KAAKy7K,QAAQrqH,GAAW,GAC9C+jc,GAA0C,MAAxBD,QAAiE,EAASA,GAAoBhxf,KAClHgxf,IAAuBC,KACvBD,GAAoBhxf,KAAOwvD,GAC3Byhc,GAAgBlyU,SAAWvvH,GAC3BA,GAAKuvH,SAAWiyU,GAChBxhc,GAAKxvD,KAAOixf,IAIxBn1f,KAAKS,SACLT,KAAKo1f,oCAETnid,OAAOme,GAAW,GACd,IAAIppD,GACJ,GAAoB,IAAhBhI,KAAKS,QAAgB2wD,GAAW,GAAKA,IAAYpxD,KAAKS,OACtD,MAAM,IAAIoE,MAAM,+BAEpB,GAAiB,IAAbusD,IAAkBpxD,KAAK+1F,KAEvB/1F,KAAK+1F,KAAO/1F,KAAK+1F,KAAK7xF,KACtBlE,KAAS+1F,KAEL/1F,KAAK+1F,KAAKktF,cAAWhgL,EAIrBjD,KAAKmiN,UAAOl/M,UAGXmuD,KAAapxD,KAAKS,OAAS,IAA2B,QAApBuH,GAAKhI,KAAKmiN,YAAyB,IAAPn6M,QAAgB,EAASA,GAAGi7K,UAE/FjjL,KAAKmiN,KAAOniN,KAAKmiN,KAAKl/B,SACtBjjL,KAAKmiN,KAAKj+M,UAAOjB,MAEhB,CAED,MAAMoyf,GAAcr1f,KAAKy7K,QAAQrqH,KACZ,MAAhBikc,QAAiD,EAASA,GAAYnxf,OAASmxf,GAAYpyU,WAC5FoyU,GAAYnxf,KAAK++K,SAAWoyU,GAAYpyU,SACxCoyU,GAAYpyU,SAAS/+K,KAAOmxf,GAAYnxf,MAGhDlE,KAAKS,SACLT,KAAKo1f,oCAET9zf,IAAI8vD,GAAU7vD,IACV,GAAoB,IAAhBvB,KAAKS,QAAgB2wD,GAAW,GAAKA,IAAYpxD,KAAKS,OACtD,MAAM,IAAIoE,MAAM,+BAEpB,MAAM6uD,GAAO1zD,KAAKy7K,QAAQrqH,IACtBsC,KACAA,GAAKnyD,MAAQA,GACbvB,KAAKo1f,qCAGbx5U,UACI,OAAO57K,KAAKi1f,QAEhBK,QAAQxpe,IACJ,IAAIy0J,GAAUvgL,KAAK+1F,KACnB,MAAM9kF,GAAS,GACf,IAAKsvK,GACD,OAAOtvK,GAEX,QAASic,GAAQ,EAAGA,GAAQltB,KAAKS,OAAQysB,KAAS,CAC9C,IAAKqzJ,GACD,OAAOtvK,GAEP6a,GAAGy0J,GAAQh/K,MAAO2rB,KAClBjc,GAAOL,KAAK,CAAEsc,SAAO3rB,MAAOg/K,GAAQh/K,QAExCg/K,GAAUA,GAAQr8K,KAEtB,OAAO+M,GAGXL,QAAQwiD,IACJA,UAAKpxC,QAASwhD,KACVxjE,KAAKm0B,IAAIqvC,MAENxjE,KAAKS,OAEhB8vB,MACI,GAAoB,IAAhBvwB,KAAKS,OACL,OAEJ,MAAM28C,GAAOp9C,KAAKmiN,KAClB,YAAKlvK,OAAOjzC,KAAKS,OAAS,GACV,MAAT28C,QAAmC,EAASA,GAAK77C,MAE5DqmO,WAAWx0K,IACPA,UAAK88G,UACL98G,GAAKpxC,QAASwhD,KACVxjE,KAAKm0B,IAAIqvC,GAAK,KAEXxjE,KAAKS,OAEhBi4J,QACI,IAAI1wJ,GACJ,GAAoB,IAAhBhI,KAAKS,OACL,OAEJ,MAAM80f,GAAgC,QAApBvtf,GAAKhI,KAAK+1F,YAAyB,IAAP/tF,QAAgB,EAASA,GAAGzG,MAC1E,YAAK0xC,SACEsid,GAEXvze,QAAQ8J,IACJ,IAAIy0J,GAAUvgL,KAAK+1F,KACnB,QAAS7oE,GAAQ,EAAGA,GAAQltB,KAAKS,OAAQysB,KAAS,CAC9C,IAAKqzJ,GACD,OAEJz0J,GAAGy0J,GAAQh/K,MAAO2rB,IAClBqzJ,GAAUA,GAAQr8K,MAG1BoB,QAAQ/D,IACJ,IAAIg/K,GAAUvgL,KAAK+1F,KACf3kC,IAAW,EACf,QAASlkC,GAAQ,EAAGA,GAAQltB,KAAKS,OAAQysB,KAAS,CAC9C,IAAKqzJ,GACD,OAAOnvH,GAEX,GAAImvH,GAAQh/K,QAAUA,GAAO,CACzB6vD,GAAWlkC,GACX,MAEJqzJ,GAAUA,GAAQr8K,KAEtB,OAAOktD,GAEXnoD,KAAK6iB,IACD,IAAIy0J,GAAUvgL,KAAK+1F,KACf9kF,IAAS,EACb,KAAOsvK,KAAYtvK,IAAQ,CACvB,GAAI6a,GAAGy0J,GAAQh/K,OAAQ,CACnB0P,IAAS,EACT,MAEJsvK,GAAUA,GAAQr8K,KAEtB,OAAO+M,GAEXsxH,MAAMz2G,IACF,IAAIy0J,GAAUvgL,KAAK+1F,KACf9kF,IAAS,EACb,KAAOsvK,IAAWtvK,IACT6a,GAAGy0J,GAAQh/K,SACZ0P,IAAS,GAEbsvK,GAAUA,GAAQr8K,KAEtB,OAAO+M,GAEXhQ,WACI,MAAO,gBAEX4X,KAAKiT,IACD,IAAIy0J,GAAUvgL,KAAK+1F,KACnB,QAAS7oE,GAAQ,EAAGA,GAAQltB,KAAKS,OAAQysB,KAAS,CAC9C,IAAKqzJ,GACD,OAEJ,GAAIz0J,GAAGy0J,GAAQh/K,MAAO2rB,IAClB,OAAOqzJ,GAAQh/K,MAEnBg/K,GAAUA,GAAQr8K,MAG1BorC,UAAUxjB,IACN,IAAIy0J,GAAUvgL,KAAK+1F,KACnB,QAAS7oE,GAAQ,EAAGA,GAAQltB,KAAKS,OAAQysB,KAAS,CAC9C,IAAKqzJ,GACD,OAAO,EAEX,GAAIz0J,GAAGy0J,GAAQh/K,MAAO2rB,IAClB,OAAOA,GAEXqzJ,GAAUA,GAAQr8K,KAEtB,OAAO,EAEXu3K,QAAQrqH,IACJ,GAAoB,IAAhBpxD,KAAKS,QAAgB2wD,GAAW,GAAKA,IAAYpxD,KAAKS,OACtD,MAAM,IAAIoE,MAAM,+BAEpB,IAAI07K,GAAUvgL,KAAK+1F,KACnB,QAAS7oE,GAAQ,EAAGA,GAAQkkC,GAAUlkC,KAClCqzJ,GAAsB,MAAZA,QAAyC,EAASA,GAAQr8K,KAExE,OAAOq8K,GAEX60U,oCACI,MAAMI,GAAW,GACjB,IAAIj1U,GAAUvgL,KAAK+1F,KACnB,KAAOwqF,IACHi1U,GAAS5kf,KAAK2vK,GAAQh/K,OACtBg/K,GAAUA,GAAQr8K,KAEtBlE,KAAKi1f,QAAUO,IAKvB,cAGI,OAAO,SAAyBpkf,GAAQilN,IACpC,MAAMhnE,GAAQ,MAAKgnE,UACnBz0N,OAAOyY,eAAejJ,GAAQilN,GAAa,CAEvCj1N,MACI,OAAOpB,KAAKqvJ,KAGhB/tJ,IAAIC,IACA,MAAM0se,GAAYjue,KAAKqvJ,IACvBrvJ,KAAKqvJ,IAAQ9tJ,GACT0se,KAAc1se,IAASvB,KAAKq2N,GAb9B,WAcEr2N,KAAKq2N,GAdP,UAc4B1oD,KAAKpsK,QAOnD,SAAYo1B,cAEMyvD,KAEWu6D,iBAIR8rL,IAIb,IAAIniH,GAAOmiH,GAAKhwF,cAAcC,YAC9B,QAAKpyB,KAASA,GAAKmrS,UACfnrS,GAAOmqS,GAEJnqS,GAAK+xB,iBAAiBowF,iCAG7B,MAAMipL,GAzSd,cACI,MAAMA,GAAQxU,IACRyU,GAAa/zf,OAAOgqC,KAAK8pd,IAAO78e,KAAKhW,IAAO6yf,GAAM7yf,KACxD,OAAO6xf,EAAUiB,IAsSCC,GACd,MAAO,CACHC,YAAuB,QAAVH,GAAkB,iBAAczyf,EAC7C6yf,UAAqB,QAAVJ,GAAkB,0EAAsF,QAAVA,GAAkB,+EAA4Ezyf,EACvM8yf,QAAmB,QAAVL,GAAkB,0EAAsF,QAAVA,GAAkB,0EAA4E,0EAKjN,MAAMM,GAAgB,GAChBC,GAA8B,oBAAZ1sf,WAA6B,SAAUA,SAC/D,YAAkBwqR,MACTx8I,YAAe0+W,IAAYliO,MAAOiiO,KAGvCA,GAAcjiO,KAAO,EACrBxqR,QAAQlJ,KAAK0zR,+JCrgBgFrzR,MAob4wD,wDApb5wDA,MAoby1D,GApbz1DA,MAob+3D,GApb/3DA,qCAob+3D,GApb/3DA,MAob+3D+5C,mCApb/3D/5C,MAobq9D,wDApbr9DA,MAobgiE,GApbhiEA,MAobskE,GApbtkEA,uDAobskE,GApbtkEA,YAobskE,sCApbtkEA,MAobqrE,wDApbrrEA,MAobiwE,GApbjwEA,MAobuyE,GApbvyEA,qCAobuyE,GApbvyEA,MAobuyE+5C,kCApbvyE/5C,MAobm+E,wDApbn+EA,MAobojF,GApbpjFA,MAob0lF,GApb1lFA,qCAob0lF,GApb1lFA,MAob0lF+5C,+LAtc3rF,WAAel5C,EAAOg7C,GAAKC,IACvB,OAAOtkC,KAAKskC,IAAID,GAAKrkC,KAAKqkC,IAAIC,GAAKj7C,IAKvC,WAA8BA,EAAO4lP,GAAgB,GACjD,OAAOzyM,MAAMt8B,WAAW7W,KAAWmzC,MAAM26K,OAAO9tN,IAAU4lP,GAAgB93B,OAAO9tN,GAErF,WAAiBA,GACb,MAAQ,GAAEA,MAEd,YAAkBA,GACd,OAAgB0B,MAAT1B,IAAuBmzC,MAAMt8B,WAAW7W,MAAYmzC,MAAM26K,OAAO9tN,QAGtE20f,QAAN,SAEAA,SAAelvf,UAAf,4BAA2Gkvf,IAC3GA,EAAezua,UADkF/mF,MACjG,MAA+Fw1f,EAA/Fp5c,+DAHMo5c,MAWAC,QAAN,SAEAA,SAAgBnvf,UAAhB,4BAA4Gmvf,IAC5GA,EAAgB1ua,UAZiF/mF,MAYjG,MAAgGy1f,EAAhGr5c,iEAHMq5c,MAWAC,SAAN,SAEAA,SAAcpvf,UAAd,4BAA0Govf,IAC1GA,EAAc3ua,UAvBmF/mF,MAuBjG,MAA8F01f,EAA9Ft5c,6DAHMs5c,MAWAC,SAAN,SAEAA,SAAcrvf,UAAd,4BAA0Gqvf,IAC1GA,EAAc5ua,UAlCmF/mF,MAkCjG,MAA8F21f,EAA9Fv5c,6DAHMu5c,UAsBAC,SAAN,QACI32f,YAAY+kF,GAAas8L,IACrBhhR,KAAK0kF,YAAcA,GACnB1kF,KAAKghR,UAAYA,GACjBhhR,KAAKu2f,MANH,IAOFv2f,KAAKw2f,KAdJ,EAeDx2f,KAAKy2f,KAdJ,IAeDz2f,KAAK02f,UAAW,EAChB12f,KAAK22f,QAAU,EACf32f,KAAKuyX,cAAe,EACpBvyX,KAAK42f,oBAAsB,EAC3B52f,KAAKyjF,UAAY,GACjBzjF,KAAK6sf,eAAiB,KACtB7sf,KAAKmD,KApBH,OAqBFnD,KAAK62f,IAjBJ,OAkBD72f,KAAK82f,MArBF,EAsBH92f,KAAK+2f,gBArBS,uBAsBd/2f,KAAKqxK,gBArBS,qBAuBdrxK,KAAKq7d,WAAaz5d,OAAO2Y,OAAO,MAEhCva,KAAKo/O,QAAUx9O,OAAO2Y,OAAO,MAC7Bva,KAAKu1F,OAAS,EACdv1F,KAAK+tI,SAAW,KAEhB36H,WAAS,OAAOpT,KAAKu2f,MACrBnjf,SAAK7R,IACLvB,KAAKu2f,MAAQjga,EAAqB/0F,IAElC02P,aAAW,OAAOj4P,KAAK22f,QACvB1+P,WAAO12P,IACPvB,KAAK22f,QAAUrga,EAAqB/0F,IAEpCg7C,UAAQ,OAAOv8C,KAAKw2f,KACpBj6c,QAAIh7C,IACJvB,KAAKw2f,KAAOlga,EAAqB/0F,GA5ChC,GA8CD8iF,cAAY,OAAOrkF,KAAK02f,SACxBrya,YAAQ9iF,IACRvB,KAAK02f,SA3Gb,WAA+Bn1f,GAC3B,OAAgB,MAATA,GAAgC,SAAd,GAAEA,IA0GP6sP,CAAsB7sP,IAEtCi7C,UAAQ,OAAOx8C,KAAKy2f,KACpBj6c,QAAIj7C,IACJvB,KAAKy2f,KAAOnga,EAAqB/0F,GAnDhC,KAqDDA,YAAU,OAAOvB,KAAKu1F,OACtBh0F,UAAMk6B,IACNz7B,KAAKu1F,OAASe,EAAqB76D,IAEvCohB,WAEQ78C,KAAKo/O,SAAWx9O,OAAOgqC,KAAK5rC,KAAKo/O,SAAS3+O,OAAS,IAAMT,KAAK22f,UAC9D32f,KAAK22f,QAAU,IAEvBt8Z,YAAYp9E,IACR,MAAM+5e,GAA0B/5e,GAAQ65e,OAAY75e,GAAQ9Z,MAAW8Z,GAAQ45e,KAAU55e,GAAQ7J,KAEjG,GAAIpT,KAAKuyX,aAAc,CACnB,GAFkBt1W,GAAQ1b,OAAY0b,GAAQs/B,KAAUt/B,GAAQu/B,IAE7C,CACf,IAAIy6c,GAAIC,GACJj6e,GAAQ1b,QACR01f,GAAKh6e,GAAQ1b,MAASqpK,aACtBssV,GAAKj6e,GAAQ1b,MAASouF,eAE1B3vF,KAAKm3f,QAAQF,GAAIC,IAEjBF,KACAh3f,KAAKo3f,WACLp3f,KAAKqoQ,UAIjBgvP,cACIr3f,KAAKghR,UAAU8E,SAAS9lR,KAAK0kF,YAAYkB,cAAe,QAAS0xa,EAAQt3f,KAAKu3f,cAC9Ev3f,KAAKghR,UAAU8E,SAAS9lR,KAAK0kF,YAAYkB,cAAe,SAAU0xa,EAAQt3f,KAAKw3f,qBAC/Ex3f,KAAKy3f,QAAQ7xa,cAAcxC,MAAQpjF,KAAKu3f,YACxCv3f,KAAKy3f,QAAQ7xa,cAAcvC,OAASrjF,KAAKw3f,mBACzCx3f,KAAKghR,UAAU8E,SAAS9lR,KAAK03f,OAAO9xa,cAAe,YAAa,eAAiB5lF,KAAKoT,KAAO,EAAI,EAAIpT,KAAKoT,KAAO,GAAK,GAAK,OAC3HpT,KAAKghR,UAAU8E,SAAS9lR,KAAK23f,SAAS/xa,cAAe,YAAa,eAAiB5lF,KAAKoT,KAAO,EAAgB,IAAZpT,KAAKoT,KAAc,GAAK,OAE/H02J,kBACQ9pK,KAAKy3f,SACLz3f,KAAKqoQ,QAGbn8P,cACIlM,KAAKo3f,WAETQ,WAAWz0f,IACP,IAAI4yF,GAAMosH,GAAMxuJ,GAAOyE,GACvB,MAAY,QAARj1D,IACA4yF,GAAO79E,KAAK++E,GACZkrH,GAAO,EAAIjqM,KAAK++E,GAChBtjC,GAAQ,IACRyE,GAAM,KAEO,QAAZ3d,IACDs7C,GAAO,IAAM79E,KAAK++E,GAClBkrH,GAAO,IAAMjqM,KAAK++E,GAClBtjC,GAAQ,IACRyE,GAAMzE,GAAQ,KAEA,SAATxwD,KACL4yF,GAAO,GAAM79E,KAAK++E,GAClBkrH,GAAO,IAAMjqM,KAAK++E,GAClBtjC,GAAQ,IACRyE,GAAM,KAEH,CAAE29B,QAAMosH,QAAMxuJ,SAAOyE,QAEhCy/b,WAAWlkc,GAAOkzO,GAAQ1kF,GAAMpvC,IAC5B,IAAIlC,GAAS7wK,KAAK83f,aAAc/lK,GAAS/xV,KAAK+3f,aAC9C,GAAI/3f,KAAKuyX,aAAc,CACnBvyX,KAAKg4f,SACLh4f,KAAKi4f,uBACL,IAAInqB,GAAS9te,KAAKk4f,4BAElB,GADAl4f,KAAKy2J,SAAS0hW,UAAYn4f,KAAK82f,MAC3BhpB,IAAUA,GAAOrte,OAAS,EAAG,CAG7BT,KAAKy2J,SAAS2hW,QAAU,OACxB,QAAS9qf,GAAI,EAAGA,GAAIwge,GAAOrte,SAAU6M,GAAG,CACpC,IAAIy5N,GAAI+mQ,GAAOxge,IACftN,KAAKy2J,SAAS4hW,YACdr4f,KAAKy2J,SAAS6hW,YAAcvxR,GAAE11D,gBAAkB01D,GAAE11D,gBAAmB01D,GAAEwxR,UAAaxxR,GAAEh0D,MAAQ/yK,KAAKqxK,gBAC/F01D,SAAEwxR,YACFv4f,KAAKy2J,SAAS+hW,YAAczxR,GAAEwxR,WAElCv4f,KAAKy2J,SAASgiW,IAAI5nV,GAAOjpK,EAAGipK,GAAOpW,EAAGs3L,GAAQ/xV,KAAK04f,iBAAiB3xR,GAAEpzK,OAAQ3zD,KAAK04f,iBAAiB3xR,GAAE3uK,MAAM,GAC5Gp4D,KAAKy2J,SAASkiW,SACd34f,KAAKy2J,SAAS+hW,YAAc,QAIhCx4f,KAAKy2J,SAAS2hW,QAAUp4f,KAAK62f,IAC7B72f,KAAKy2J,SAAS4hW,YACdr4f,KAAKy2J,SAAS6hW,YAAct4f,KAAKqxK,gBACjCrxK,KAAKy2J,SAASgiW,IAAI5nV,GAAOjpK,EAAGipK,GAAOpW,EAAGs3L,GAAQp+R,GAAOwuJ,IAAM,GAC3DniN,KAAKy2J,SAASkiW,SAElB34f,KAAK44f,UAAUjlc,GAAOkzO,GAAQ1kF,GAAMpvC,KAG5C6lV,UAAUjlc,GAAOkzO,GAAQ1kF,GAAMpvC,IAC3B,IAAIlC,GAAS7wK,KAAK83f,aAAc/lK,GAAS/xV,KAAK+3f,aAC9C/3f,KAAKy2J,SAAS2hW,QAAUp4f,KAAK62f,IAC7B72f,KAAKy2J,SAAS0hW,UAAYn4f,KAAK82f,MAC/BjwN,GAAS3uR,KAAKskC,IAAIqqP,GAAQlzO,IAC1BkzO,GAAS3uR,KAAKqkC,IAAIsqP,GAAQ1kF,IAC1BniN,KAAKy2J,SAAS2hW,QAAUp4f,KAAK62f,IAC7B72f,KAAKy2J,SAAS0hW,UAAYn4f,KAAK82f,MAC/B92f,KAAKy2J,SAAS4hW,YACdr4f,KAAKy2J,SAAS6hW,YAAcvlV,GAC5B/yK,KAAKy2J,SAASgiW,IAAI5nV,GAAOjpK,EAAGipK,GAAOpW,EAAGs3L,GAAQp+R,GAAOkzO,IAAQ,GAC7D7mS,KAAKy2J,SAASkiW,SAElBE,WAAWC,GAAO/lV,GAAOjwK,GAAOK,GAAMgyJ,GAAK4jW,IACvC,IAAIC,GAAMF,GAAQ5gf,KAAK++E,GAAK,IAEvBk+D,KACDA,GAAM,GACLhyJ,KACDA,GAAO,QACX,IAAI0tK,GAAS7wK,KAAK83f,aAAc/lK,GAAS/xV,KAAK+3f,aAC1Cnwf,IAAKmqV,GAAS/xV,KAAK82f,MAAQ,EANlB,GAMgC5+e,KAAK8jF,IAAIg9Z,IAAOnoV,GAAOjpK,EAChE6yJ,IAAKs3L,GAAS/xV,KAAK82f,MAAQ,EAPlB,GAOgC5+e,KAAK+gf,IAAID,IAAOnoV,GAAOpW,EAChEy+V,IAAMnnK,GAAS/xV,KAAK82f,MAAQ,EARnB,EAQgC3hW,IAAOj9I,KAAK8jF,IAAIg9Z,IAAOnoV,GAAOjpK,EACvEuxf,IAAMpnK,GAAS/xV,KAAK82f,MAAQ,EATnB,EASgC3hW,IAAOj9I,KAAK+gf,IAAID,IAAOnoV,GAAOpW,EAC3E,GAAY,YAARt3J,GAAoB,CAEpBnD,KAAKy2J,SAAS4hW,YACdr4f,KAAKy2J,SAAS6hW,YAAcvlV,GAC5B/yK,KAAKy2J,SAAS2iW,OAAOxxf,GAAG6yJ,IACxBz6J,KAAKy2J,SAAS0hW,UAAY,EAC1B,IAAIl7V,GAAK67V,GAAQ,GACbv5U,GAAKu5U,GAAQ,GACb77V,GAAK,IACLA,IAAM,KACNA,GAAK,MACLA,IAAM,KACNsiB,GAAK,IACLA,IAAM,KACNA,GAAK,MACLA,IAAM,KACV,IAAI85U,GAAOp8V,GAAK/kJ,KAAK++E,GAAK,IACtBqia,GAAKnkW,GAAMj9I,KAAK8jF,IAAIq9Z,IAAQzxf,GAC5B2xf,GAAKpkW,GAAMj9I,KAAK+gf,IAAII,IAAQ5+V,GAChCz6J,KAAKy2J,SAAS+iW,OAAOF,GAAIC,IACzB,IAAIE,GAAOl6U,GAAKrnK,KAAK++E,GAAK,IACtByia,GAAKvkW,GAAMj9I,KAAK8jF,IAAIy9Z,IAAQ7xf,GAC5B+xf,GAAKxkW,GAAMj9I,KAAK+gf,IAAIQ,IAAQh/V,GAChCz6J,KAAKy2J,SAAS+iW,OAAOE,GAAIC,IACzB35f,KAAKy2J,SAAS+iW,OAAO5xf,GAAG6yJ,IACxBz6J,KAAKy2J,SAASmjW,YACd55f,KAAKy2J,SAASkiW,SACd34f,KAAKy2J,SAASojW,UAAY9mV,GAC1B/yK,KAAKy2J,SAASnmI,YAGdtwB,KAAKy2J,SAAS4hW,YACdr4f,KAAKy2J,SAAS0hW,UAAY,GAC1Bn4f,KAAKy2J,SAAS6hW,YAAcvlV,GAC5B/yK,KAAKy2J,SAAS2iW,OAAOxxf,GAAG6yJ,IACxBz6J,KAAKy2J,SAAS+iW,OAAON,GAAIC,IACzBn5f,KAAKy2J,SAASmjW,YACd55f,KAAKy2J,SAASkiW,SAEd71f,KACA9C,KAAKy2J,SAASqjW,OACd95f,KAAKy2J,SAASjqG,UAAU0sc,GAAIC,IAC5Bn5f,KAAKy2J,SAASgJ,QAAQq5V,GAAQ,KAAO5gf,KAAK++E,GAAK,MAC/Cj3F,KAAKy2J,SAASsjW,UAAY,SAC1B/5f,KAAKy2J,SAASsiW,KAAQA,IAAe,aACrC/4f,KAAKy2J,SAASujW,SAASl3f,GAAO,GAAG,GACjC9C,KAAKy2J,SAAS5wB,WAGtBmyX,SACIh4f,KAAKy2J,SAASwjW,UAAU,EAAG,EAAGj6f,KAAKu3f,YAAav3f,KAAKk6f,cAEzD3C,YACI,OAAOv3f,KAAKoT,KAEhB8mf,aACI,OAAOl6f,KAAKoT,KAGhBokf,mBACI,MAAqB,QAAbx3f,KAAKmD,MAA+B,QAAbnD,KAAKmD,KAC9B,IAAOnD,KAAKk6f,aACZl6f,KAAKk6f,aAEfnC,aAEI,IAAIiB,GAAMnoV,KADUinV,aACHlwf,EAAI5H,KAAK82f,MAC1B,OAAI92f,KAAK22f,QAAU,IACfqC,IAAOh5f,KAAK22f,SACTqC,GAEXlB,aAEI,MAAO,CAAElwf,EADD5H,KAAKu3f,YAAc,EACf98V,EADsBz6J,KAAKk6f,aAAe,GAG1D7xP,QACIroQ,KAAKy2J,SAAWz2J,KAAKy3f,QAAQ7xa,cAAc2hD,WAAW,MACtDvnI,KAAKuyX,cAAe,EACpBvyX,KAAKq3f,cACLr3f,KAAKm6f,UAET/C,WACQp3f,KAAK42f,sBACL7ge,OAAOkuM,qBAAqBjkO,KAAK42f,qBACjC52f,KAAK42f,oBAAsB,GAE/B52f,KAAKg4f,SACLh4f,KAAKy2J,SAAW,KAChBz2J,KAAKuyX,cAAe,EAExB6nI,2BAA2B74f,IACvB,MAAM84f,GAASr6f,KAAKs6f,2BAA2B/4f,IAC/C,OAAO84f,IAAUA,GAAOtnV,MAAQsnV,GAAOtnV,MAAQ/yK,KAAK+2f,gBAExDuD,2BAA2B/4f,IACvB,MAAMsgD,GAAQjgD,OAAOgqC,KAAK5rC,KAAKq7d,YAC1Bjnd,OAAO,SAAU2F,IAAQ,OAAOirM,GAASjrM,KAASs1M,OAAOt1M,KAASxY,KAClEgrB,KAAK,CAACC,GAAGnD,KAAMgmM,OAAO7iM,IAAK6iM,OAAOhmM,KAClC6mJ,UAAU,GACf,QAAcjtK,IAAV4+C,GAAqB,CACrB,MAAMw4c,GAASr6f,KAAKq7d,WAAWx5a,IAQ/B,MAPU,CACNkxH,MAAOsnV,GAAOtnV,MACd1B,gBAAiBgpV,GAAOhpV,gBACxBknV,UAAW8B,GAAO9B,UAClB5kc,MAAO07J,OAAOxtK,IACduW,IAAKp4D,KAAKu6f,kBAAkBlrS,OAAOxtK,OAK/C04c,kBAAkBh5f,IACd,MAAMsgD,GAAQjgD,OAAOgqC,KAAK5rC,KAAKq7d,YAC1Bjnd,OAAO,SAAU2F,IAAQ,OAAOirM,GAASjrM,KAASs1M,OAAOt1M,IAAQxY,KACjEgrB,KAAK,CAACC,GAAGnD,KAAMgmM,OAAO7iM,IAAK6iM,OAAOhmM,KACvC,OAAIw4B,SAAsB5+C,IAAb4+C,GAAM,GACRwtK,OAAOxtK,GAAM,IAGb7hD,KAAKw8C,IAGpB07c,4BACI,IAAI5qf,GAAI,EAAGwge,GAAS,GACpB,OAAG,CACC,IAAIusB,GAASr6f,KAAKs6f,2BAA2Bhtf,IAC7C,IAAI+sf,GAaA,MAJA,GARAvsB,GAAOl9d,KAAK,CACR+iD,MAAO0mc,GAAO1mc,MACdyE,IAAKiic,GAAOjic,IACZ26G,MAAOsnV,GAAOtnV,MACd1B,gBAAiBgpV,GAAOhpV,gBACxBknV,UAAW8B,GAAO9B,YAEtBjrf,GAAI+sf,GAAOjic,IACP9qD,IAAKtN,KAAKw8C,IACV,MAKZ,OAAOsxb,GAEX4qB,iBAAiBhjf,IACb,IAAsB8kf,GAASx6f,KAAK43f,WAAzB53f,KAAKmD,MAAsCo5C,GAAMv8C,KAAKu8C,IAAKC,GAAMx8C,KAAKw8C,IAAKmX,GAAQ6mc,GAAOzka,KAAMx0F,GAAQkiN,EAAM/tM,GAAG1V,KAAKu8C,IAAKv8C,KAAKw8C,KAC3I,OAAOmX,IADkJ6mc,GAAOr4S,KAAOq4S,GAAOzka,OAASv5C,GAAMD,KAA6Bh7C,GAAQg7C,IAGtO49c,QAAQlD,GAAIC,IACR,IAA4Vxtb,GAAxVz+D,GAAOjL,KAAwBw6f,GAASx6f,KAAK43f,WAAzB53f,KAAKmD,MAAsC4qI,GAAW/tI,KAAK+tI,SAAUxxF,GAAMv8C,KAAKu8C,IAAKC,GAAMx8C,KAAKw8C,IAAKj7C,GAAQkiN,EAAMzjN,KAAKuB,MAAOvB,KAAKu8C,IAAKv8C,KAAKw8C,KAAMmX,GAAQ6mc,GAAOzka,KAAM8vL,IAAQ20O,GAAOr4S,KAAOq4S,GAAOzka,OAASv5C,GAAMD,IAAMk+c,GAAe50O,IAAQtkR,GAAQg7C,IAAM4lK,GAAOq4S,GAAOr4S,KAAMpvC,GAAQ/yK,KAAKo6f,2BAA2B74f,IAIpV,YAAiByuB,IAEb,IAAI0qe,IADJ1qe,GAAYA,KAAa,IAAI7uB,MAAOgB,WACVunE,GACtBtnD,GAAWlK,KAAKqkC,IAAIm+c,GAAU3sX,GAAU,GAG5C9iI,GAAK4sf,WAAWlkc,GADHA,IADUujc,IAAMA,GAAK36c,IAAOspO,GAAO,GACR40O,GAAer4e,GACxB+/L,GAAMpvC,IACrC8iE,GAAS+gR,qBAAwB8D,GAAU3sX,GACvC9iI,GAAK2rf,oBAAsB7ge,OAAO8lE,sBAAuB7rE,IAAcq0D,GAAQr0D,KAG/E+F,OAAOkuM,qBAAqBh5N,GAAK2rf,qBAdrC3rf,GAAK2rf,qBACL7ge,OAAOkuM,qBAAqBh5N,GAAK2rf,qBAgBjC52f,KAAK02f,UACKzzf,MAANg0f,IAAyBh0f,MAANi0f,KACnBuD,GAAe50O,GAAOoxO,GAAKpxO,GAAOqxO,IAEtCjsf,GAAK2rf,oBAAsB7ge,OAAO8lE,sBAAuB7rE,KACrD05C,GAAY15C,KAAa,IAAI7uB,MAAOgB,UACpCkiF,GAAQ3a,OAIZz+D,GAAK4sf,WAAWlkc,GAAOA,GAAQ8mc,GAAct4S,GAAMpvC,IAG3DklV,uBAmBI,GAAIj4f,KAAKo/O,QACL,QAASu7Q,MAAM36f,KAAKo/O,QAAS,CACzB,IAAIjvN,GAAIk/L,OAAOsrS,IACXH,GAASx6f,KAAK43f,WAAW53f,KAAKmD,MAI9B8+I,GAAIjiJ,KAAKo/O,QAAQu7Q,IACrB36f,KAAK64f,WAFO2B,GAAO7mc,MAASxjC,KAFbqqe,GAAOpic,IAAMoic,GAAO7mc,OACd3zD,KAAKw8C,KAGHylG,GAAE8wB,MAAO9wB,GAAEn/I,MAAOm/I,GAAE9+I,KAAM8+I,GAAE7uI,KAAM6uI,GAAE82W,OAGvE5B,QAAQF,GAAIC,IACRl3f,KAAKg4f,SACLh4f,KAAKm6f,QAAQlD,GAAIC,KAGzBZ,SAAStvf,UAAT,4BAAqGsvf,GAnbJ51f,MAmb8BA,OAnb9BA,MAmbwDA,SACzJ41f,EAASlua,UApbwF1nF,MAobjG,MAAyF41f,EAAzFx5c,sEApbiGp8C,MAobjGm1O,GAAu4BwgR,GAAv4B,GApbiG31f,MAobjGm1O,GAAo+BsgR,EAAp+B,GApbiGz1f,MAobjGm1O,GAAkkCqgR,EAAlkC,GApbiGx1f,MAobjGm1O,GAAqqCugR,GAArqC,iBApbiG11f,MAobjG81C,GApbiG91C,WAobjG6jB,yBApbiG7jB,MAobjG81C,GApbiG91C,WAobjG6jB,2BApbiG7jB,MAobjG81C,GApbiG91C,WAobjG6jB,0BApbiG7jB,MAobjG81C,GApbiG91C,WAobjG6jB,sEApbiG7jB,KAobjGuG,KApbiGvG,KAobjGgV,KApbiGhV,KAobjGmtJ,mBApbiGntJ,MAobjGm1O,GApbiGn1O,WAobjG6jB,qBApbiG7jB,MAobjGm1O,GApbiGn1O,WAobjG6jB,oBApbiG7jB,MAobjGm1O,GApbiGn1O,WAobjG6jB,0CAA2kB,SAA3kB,gBAAsmB,QAAtmBygJ,+CApbiGtkK,MAobjG,uBApbiGA,CAobjG,uBApbiGA,CAobjG,yBApbiGA,CAobjG,0BApbiGA,CAobjG,qCApbiGA,MAobjG,0aApbiGA,OAobjG+kL,kPApbiG/kL,MAobjGqH,GApbiGrH,MAob68C,YApb78CA,CAob68C,SApb78CA,MAob4wD,wBApb5wDA,MAoby1D,0BApbz1DA,cAob65D,KApb75DA,MAobq9D,wBApbr9DA,MAobgiE,0BApbhiEA,cAobsnE,SApbtnEA,MAobqrE,wBApbrrEA,MAobiwE,2BApbjwEA,gBAobk1E,cApbl1EA,MAobm+E,yBApbn+EA,MA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","names":["APP_CONFIG","app","appName","user","email","twitter","avatar","version","bs4v","logo","logoM","copyright","companyWebsite","companyPhone","companyTwitter","companyFacebook","companyLinkedIn","companyYouTube","companySupport","environment","Environment","inactivityInterval","signoutTimeout","datacenter","N3TLogger","constructor","logger","trace","message","additional","this","_log","debug","info","log","warn","error","fatal","loglevel","length","i0","factory","correlationId","userId","statNamespace","id","Guid","toString","datapointTimestamp","Date","get","datapoint","set","value","isTimeDuration","isDate","toLocaleDateString","toLocaleTimeString","Object","prototype","call","setTimeDuration","startTimeDuration","endTimeDuration","String","getTime","DatacenterLocations","DatacenterLocationsString","App","CloudRole","ProductId","init","assign","AlertType","options","key","label","required","order","undefined","controlType","type","QuestionBase","NotificationType","isLoaded","hasError","callState","AlertService","Subject","onAlert","defaultId","subject","asObservable","success","alert","Alert","next","clear","JWT_OPTIONS","InjectionToken","JwtHelperService","config","tokenGetter","urlBase64Decode","str","output","replace","Error","b64DecodeUnicode","b64decode","bs","buffer","bc","idx","charAt","fromCharCode","indexOf","decodeURIComponent","Array","map","c","charCodeAt","slice","join","decodeToken","token","parts","split","decoded","JSON","parse","getTokenExpirationDate","hasOwnProperty","date","setUTCSeconds","exp","isTokenExpired","offsetSeconds","valueOf","getAuthScheme","authScheme","request","ɵfac","t","ɵngcc0","ɵprov","AuthenticationService","router","n3tStore","tasksService","BehaviorSubject","AuthUser","selectUser","subscribe","x","userSubject","isAuthenticated","p","_a","_b","bearerToken","isValidToken","userValue","login","keycloakUser","dispatchAuthUserByUserId","roles","includes","navigate","logout","dispatchLogoutMetric","dispatchSessionLength","dispatchAppReset","isAuthorized","allowedRoles","some","role","hasRole","usrRole","toLowerCase","jwtHelper","console","ChannelService","gqlService","authService","selectChannelCompanyAdmin","Login","channelCompanyAdmin$","data","_isChannelMode$","_adminUser$","_adminUser","dispatchAppChannelReset","dispatchGetChannelCompanyData","companyId","getIsChannelMode","getAdminUser","getChannelCompanies","companyChannels","GetChannelCompanies","statusList","gql","company","getCompanyChannel","pipe","companies","apply","self","catchError","of","response","Companies","setChannelCompanies","companyChannel","getChannelCompanyAdmin","dispatchGetCompanyChannelAdminUser","CloudmanageService","sanitizer","alertService","SubSink","getProviderLinksValue","compute","getComputeValue","getComputeFlatValue","ngOnDestroy","sub","unsubscribe","getVMTicket","vmFlat","ticketInput","GetVMScreenTicketInput","vmId","datacenterLocation","getVMScreenTicket","getCompanyData","portal","getDataForCompany","dispatchGetCompanyData","getCompute","vdcs","selectVDCs","flattenCompute","computeData","computeDataFlat","i","j","vAppsCount","k","vApps","vMsCount","tmpVMObj","VMFlat","vdcid","allocationModel","orgName","region","vappName","name","vappid","cpu","vms","cpuHotAddEnabled","cpuHotAddEnabledSpecified","diskCount","diskSize","disks","guestOs","se","hardwareVersion","hardwareVersionSpecified","hasDR","isBusy","isBusySpecified","isDRActive","isDeleted","isDeletedSpecified","isDeployed","isDeployedSpecified","isInMaintenanceMode","isInMaintenanceModeSpecified","isPublished","isPublishedSpecified","isVAppTemplate","isVAppTemplateSpecified","memory","memoryHotAddEnabled","memoryHotAddEnabledSpecified","memoryMB","memoryMBSpecified","networkInfoRaw","nics","numberOfCpus","numberOfCpusSpecified","status","vmHostType","vmInstanceType","vmToolsVersion","vmToolsVersionSpecified","push","computeFlatSubject","computeFlat","flattenArray","arr","result","isArray","getDatacenterTarget","target","getLocationColor","cssOut","getHealthStatus","healthClass","powerStatusIsOn","isOn","toUpperCase","togglePowerStatus","input","dispatchTogglePowerStatus","isOff","isWarning","isUnknown","getSnapProtectStatus","getSnapProtectStatusInput","dispatchGetSnapProtectStatus","retrieveSnapProtect","checkHasSnapshot","vm","snap","TypeVMSnapshot","exists","TypeSnapshotSection","snapshot","TypeSnapshotSectionSnapshot","GetSnapProtectStatusInput","vmName","vmOrVappId","foo","Snapshot","ie","size","getNetworks","dispatchGetNetworkData","getProviderTokens","dispatchGetProviderTokens","getVMScreenTicketInput","getVMWareProviderTokens","getVMWareProviderTokensInput","getProviderLink","vdcId","gah","tokens$","selectProviderTokens","myVDC","_","tokens","filter","resolveProviderLink","location","org","sendToAzure","sendToAWS","sendToGCP","sendToVCloud","resolveProviderLinks","linksList","orgList","memberships","selectOrgs","orgs","selectMembeships","u","tmpLink","applicationName","selectVMsFlat","datacenterCode","tok","theVMs","v","err","linkObj","ProviderLink","link","trustLink","P","changingThisBreaksApplicationSecurity","providerLinks","sessionId","RegExp","encodeURI","mapVMFlatToUpdatePowerStatusInput","UpdatePowerStatusInput","powerOn","proj","zone","vmNameOrId","parseProjectZoneMachineGCP","containerName","mapPowerStatusFromTask","operationName","newStatus","urlIn","whatOut","project","machineType","step","firstSplit","getFriendlyClusterName","clusterId","clust","backupClusters$","selectBackupClusters","clusters","clusterid","formatBytesString","bytes","decimals","dm","Math","floor","parseFloat","pow","toFixed","linkIn","linkScrub","replaceAll","getSafeUrl","bypassSecurityTrustResourceUrl","escapeRegExp","find","getDatacenterLocationFromUrl","href","substr","isPvDC","CommonService","toDate","truncateOnWord","limit","reg","words","count","word","concat","convertDiskSizeBytesToGB","bytesInGB","formatBytes","source","item","deepCopy","getOwnPropertyNames","reduce","o","prop","defineProperty","getOwnPropertyDescriptor","create","getPrototypeOf","roundNearQtr","number","round","mapDatacenterToCloudLocation","cloudOut","CompanyService","Company","selectCompany","companySubject","channelCompanies","selectChannelCompanies","channelCompaniesSubject","getCompany","ComputeService","neededRam","usage","ramAvailable","ramLimit","ramUsed","ramAlloc","sign","sink","user$","memberships$","orgs$","createVMSnapshot","vmid","vmname","CreateVMSnapInput","orgname","getOrgForLocation","createVMSnap","deleteVMSnapshot","RemoveVMSnapInput","removeVMSnap","revertVMSnapshot","RevertVMSnapInput","revertVMSnap","theOrg","updateVMFlat","changes","parseDRSessionId","sessions","mySession","parseOrgByLocation","companyIdentifiers","loc","ci","startsWith","getIfRemoteDPSByLocation","remote","isRemote","parseVDCIfFromFriendlyPath","path","idsBig","getVDCUsageStats","UsageVDC","vdc","VDC","cpuAlloc","cpuAllocationMhz","cpuLimit","cpuLimitMhz","cpuUsed","cpuUsedMhz","diskAlloc","storageAllocationMB","diskLimit","storageLimitMB","diskUsed","storageUsedMB","networkQuota","usedNetworkQuota","memoryAllocationMB","memoryLimitMB","memoryUsedMB","vmCount","checkAvailableDisk","neededDisk","storageAvailable","checkAvailableCPU","neededCpu","cpuAvailable","checkVMQuota","neededVM","getVDCIdFromVMId","selectVMFlat","getAllocationModel","brandedName","vMStatus","currentStatusSimple","parseDate","dateIn","parsedDate","parseInt","toDateString","toTimeString","shortenOS","origOS","getDatacenterIcon","iconPath","getVMPowerStatus","returnVal","getGuestOSImage","osName","nameTmp","Ce","DPSService","commonService","computeService","jobsTimer","doDRSAction","backup","hostid","jobid","backupJobs$","selectBackupJobs","proceed","jobs","forEach","job","sourceid","backupname","progress","stopJobsTimer","jobname","deleteBackups","backupAction","action","cleanupTestFailover","showBackupsProgress","datacenterRemote","vdcHostStats","targetsystem","origAppId","targethost","isTest","origappid","targetcluster","vmidhost","thisisme","targetuds","imageSize","parseSize","virtualsize","imageCpu","systemstateCPU","imageRam","systemstateMemory","vdcStats","backuphost","friendlypath","image","session","selectBackupAuth","newName","newname","sourceuds","Re","selectCompanyIdentifiers","allowWork","errorMsg","inputTFO","RemoveTestFailoverInput","tmpid","upsertBackup","tmpJob","TypeJob","setBackupJob","recovery","removeTestFailover","resp","code","inputFB","FailbackInput","appId","appid","failback","performFailback","GetDPSJobStatusInput","dps","getDPSJobStatus","inputSB","SyncbackInput","originalappid","syncback","Result","inputTestFO","PerformFailoverInput","hostId","performFailover","tmp","createNewTimer","onJobsTimer","doDPSRestoreInput","DoDPSRestoreInput","doDPSRestore","backupResponse","checkAvailableRAM","cloneInput","DoCloneProcessInput","sessionid","clonename","customerId","doCloneProcess","cloneProcess","process_Id","ProcessJobStatusInput","processid","getProcessJobStatus","mountInput","DoMountProcessInput","mountname","doMountProcess","mountProcess","Process_Id","pollingInterval","retrieveBackupJob","getDPSJobStatusInput","dispatchGetBackupJobStatus","upsertBackupJob","removeBackupJob","ids","deleteBackupJobs","timerName","delTimer","onProcessJobsTimer","checkDPSExistsForHost","hostName","selectDPS","hostApps","matches","appname","hosts","hostTmp","host","b","hostBackups","bu","tmpBackups","TypeBackups","upsertDPSSingle","sizeIn","getFriendlyDate","GqlService","graphql","AccountService","http","localStorage","getItem","UserName","Password","removeItem","register","post","getAll","getById","update","params","put","setItem","stringify","delete","PasswordService","getPolicy","minLength","validationErrors","validatorCallbacks","regex","validatorfn","password","test","whitespace","score","zxcvbn","isValid","context","fn","isValidFn","passed","RunMode","QuestionService","getQuestions","questions","DropdownQuestion","TextboxQuestion","sort","a","getTemplatequestions","getQuestionsFromTemplate","templates","templateCount","template","vAppTemplateName","getNetworksForTemplateLocation","HRQuestion","disk","index","CheckboxQuestion","boot","networkMap","Map","selectNetworkData","networks","nw","network","arrayOut","setTemplatesFromAnswers","answers","objStr","obj","vAppCounter","hasVApp","TypeComputeTemplate","newvAppName","Ie","runMode","hasVM","vmCounter","TypeVM","hasDisk","diskCounter","TypeDisk","mode","QuestionControlService","toFormGroup","group","question","FormControl","Validators","FormGroup","MessageService","n3tstore","ReplaySubject","messages","fakeMessages","acknowledgeMessage","messageMe","notification","msgs","random","title","acknowledged","timestamp","sendNotifierMessage","notifier","n","defaultValue","items","fill","pop","getItems","MetricsService","sessionStartTime","now","stats","metricsStats","errors","List","errorsSubject$","persistCorrelation","getAuthLogout","getDataPoint","authLogout","getAuthSessionTimeout","authSessionTimeout","getAuthSessionLength","dp","authSessionLength","getDataLoadTimeCompany","dataLoadCompany","getDataLoadTimeCompute","dataLoadCompute","getDataLoadTimeProviderTokens","dataLoadProviderTokens","getDataLoadTimeTemplates","dataLoadTemplates","getPageLoadTimeVm","pageLoadVmSeconds","getPageLoadTimeMonitorAudit","pageLoadMonitorAudiSeconds","getDataLoadTimeDps","pageLoadDpsSeconds","getDataLoadTimeBrsAtl","pageLoadBrsAtlSeconds","getDataLoadTimeBrsDev","pageLoadBrsDevSeconds","getDataLoadTimeBrsLas","pageLoadBrsLasSeconds","getDataLoadTimeBrsSpa","pageLoadBrsSpaSeconds","getDataLoadTimeBrsUat","pageLoadBrsUatSeconds","getBrowser","browser","getIpAddress","ipAddress","getState","state","getLatitude","latitude","getLongitude","longitude","getCountry","country","getCity","city","getIsp","isp","getDatacenter","add","datapointModel","mapDatapoint","metrics","addDatapointAndTimestamp","processResponse","gqlResp","getErrorResult","errorMessage","model","addCorrelationById","getCorrelationByIdInput","correlation","errorResult","n3TAsyncResult","isPersistedToDb","N3TKeycloakService","keycloak","keycloakEvents$","event","dispatchHandler","url","realm","clientId","initOptions","flow","onLoad","silentCheckSsoRedirectUri","window","origin","checkLoginIframe","bearerExcludedUrls","getUserInfo","then","userInfo","catch","keycloakEvent","onAuthSuccess","onAuthRefreshSuccess","onTokenExpired","static","Promise","resolve","reject","__awaiter","instance","getKeycloakInstance","KeycloakUser","loadUserInfo","companyid","email_verified","family_name","given_name","groups","preferred_username","userid","setTimeout","getKeycloakSession","GetKeycloakSessionInput","keycloakSession","createKeycloakUserObject","companyNameShort","portalRoles","computeLocations","userInput","AddUserInput","SessionId","FirstName","firstName","LastName","lastName","Email","Username","UserId","CompanyId","RequiredActions","Enabled","Groups","createGroupsString","cloudRole","substring","getSSOUser","userEmail","GetUserByEmailInput","Checker","getMilliseconds","getUserByEmail","tap","getUser","sendSSOUserEmail","permissions","UserActionsInput","Client_Id","Redirect_Uri","determinePortalRedirect","userActions","isDev","isUAT","vcdPerms","permUAT","permProd","getUserGroups","GetUserGroupsInput","addUserToGroups","groupIds","groupId","AddUserGroupInput","GroupId","addUserToGroup","send2FAReset","removeKeycloakUser","DeleteUserInput","deleteKeycloakUser","N3TStore","store","selectBrsLinks","select","BRSLinkSelectors","val","selectAuthUsers","AuthUserSelectors","selectMetrics","MetricsSelectors","selectMetric","ChannelCompanySelectors","AdminUserSelectors","CompanySelectors","CompanyIdentifierSelectors","MembershipSelectors","NetworkSelectors","OrgSelectors","ProviderTokenSelectors","selectRoles","RoleSelectors","selectTasks","TaskSelectors","selectAdminUser","selectUserLogins","UserLoginSelectors","VDCSelectors","selectVDCById","VMFlatSelectors","selectTemplates","TemplatesSelectors","selectSelectedTemplates","SelectedTemplatesSelectors","selectJobById","ProcessJobSelectors","selectSelectedTemplate","templateId","selectProducts","ProductSelectors","selectProductById","BackupAuthSelectors","BackupClusterSelectors","DPSSelectors","selectBackups","BackupSelectors","selectBackup","selectBackupByJobId","BackupJobSelectors","selectBackupJob","selectCompanyUser","CompanyUserSelectors","selectCompanyUsers","selectTenantOfferingItems","TenantOfferingItemsSelectors","selectTenantUsages","TenantUsagesSelectors","selectAuthUserResult","GQLSelectors","selectAdminUserResult","selectBRSLinksResult","selectCompanyDataResult","selectNetworkDataResult","selectProviderTokensResult","selectPVDCsResult","selectTasksResult","selectVMsFlatResult","selectTemplatesResult","selectSelectedTemplatesResult","selectProductsResult","selectBackupAuthResult","selectDPSResult","selectBackupClusterInfoResult","selectBackupResult","selectBackupJobResult","selectCompanyUserResult","selectTenantOfferingItemsResult","selectTenantUsagesResult","setBRSLinks","brsLinks","dispatch","BRSLinkActions","ChannelCompanyActions","channelCompanys","setChannelCompanyAdmin","channelAdmin","AdminUserActions","adminUsers","setNetworksState","NetworkActions","setProviderTokens","providerTokens","ProviderTokenActions","setRoles","RoleActions","setTasks","tasks","TaskActions","setTask","task","setProducts","products","ProductActions","setBackupAuth","backupAuth","BackupAuthActions","backupAuthResults","setBackupClusters","backupClusters","BackupClusterActions","backupClusterInfoResults","setDPS","dpsResults","DPSActions","setBackups","backups","BackupActions","backupResults","setBackup","backupResult","setBackupJobs","backupJobs","BackupJobActions","backupJobResults","backupJob","backupJobResult","setCompanyUser","CompanyUserActions","companyUser","setCompanyUsers","users","companyUsers","setTenantOfferingItems","TenantOfferingItemsActions","getTenantOfferingItemsByEditionInput","setTenantUsage","TenantUsagesActions","getTenantUsagesInput","setTenantUsages","upsertTask","upsertVMFlat","VMFlatActions","upsertSelectedTemplate","SelectedTemplatesActions","upsertSelectedTemplates","upsertProducts","upsertBackupAuth","upsertBackupCluster","backupCluster","backupClusterInfoResult","upsertBackupClusters","upsertDPS","dpsResult","upsertBackups","upsertBackupJobs","upsertCompanyUser","rolesPortal","cloudPermissions","upsertCompanyUsers","upsertCompanyUserRoles","upsertTenantOfferingItems","upsertTenantUsages","deleteSelectedTemplate","deleteSelectedTemplates","templateIds","deleteProducts","productIds","deleteBackupAuth","authIds","deleteBackupCluster","backupClusterIds","deleteDPS","dpsIds","backupIds","backupJobIds","deleteCompanyUser","userIds","deleteCompanyUserAndMemberships","deleteBRSLinks","deleteTenantOfferingItems","deleteTenantUsages","AppActions","dispatchAdminUser","adminUser","GQLActions","dispatchAuthUser","CompanyActions","dispatchGetBRSLinks","orgInfo","dispatchUpdateAuthUserRoles","AuthUserActions","dispatchUpdateCompanyUserRoles","dispatchSetCompany","powerStatus","dispatchGetTasks","getTasksInput","dispatchGetAllTasks","getAllTasksInput","SnapshotActions","dispatchGetTemplatesByLocations","getTemplatesInput","TemplatesActions","dispatchGetProductData","getProductsInput","getProducts","dispatchGetProductSelfServiceData","getProductsSelfServiceInput","getProductsSelfService","dispatchGetBackupAuthData","dispatchGetDPSResults","getBackupsAllInput","getBackupsAll","dispatchGetBackupClusterResults","getBackupClustersInfoData","getBackupClustersInfoInput","dispatchGetJobStatus","processJobStatusInput","ProcessJobActions","getProcessJobStatusInput","dispatchGetCompanyUsers","getCompanyUsersInput","getCompanyUsers","dispatchGetTenantOfferingItems","tenantOfferingItemsByEditionInput","dispatchGetTenantUsages","tenantUsagesInput","dispatchCreateSSOUser","MetricsActions","dispatchSessionTimeoutMetric","dispatchSetMetric","metric","persistToDb","dispatchUpdateMetric","dispatchPersistToDb","OrderService","metricsSvc","channelService","provStatusSvc","companyService","SelfServiceOrder","_companyId","submitSelfServiceOrder","selfServiceProducts","companyName","ProvisionSelfServiceOrderInput","selfServiceModel","TypeSelfServiceModel","payload","UUID","jobId","createPayloadSelfService","_sub","provisionSelfServiceOrder","bar","worked","orders","ProvisionSelfServiceOrderResponse","ge","getProvisioningProgress","Z","orderResult$","jobStatuses$","payloadsOut","tmpProdsByDatacenter","datacenters","keys","prodsByLoc","vdcTracker","ssPayload","SelfServicePayload","prod","tmpProd","SelfServiceProduct","selfServiceId","quantity","parentId","ProductsService","_products$","getCostEstimate","costs","getProductPricing","convertTemplateToProducts","ProductPricing","ProductResponse","GetProductPricingInput","orderPriceReq","TypeCostOrderReq","Containers","_i","container","TypeCostContainerReq","Id","Products","prodCPU","TypeCostProductReq","prodMem","prodDisks","prodOS","DatacenterCode","IsSLA","Quantity","ServiceId","calculateDiskSpace","checkOsWindows","checkOsRHL","totalSize","guestOS","isWindows","isRHL","getProductId","resource","resourceToString","resourceClassImage","classOut","getResourceUnits","unitsOut","ProvisionJobService","gqlSvc","removeJobStatusReq","filtered","jobsStatusReqs","jobStatusReqs","cartProduct","findIndex","getJobStatusRequests","processJobStatusReqs","e","logError","statusReq","statusRequests","ProvisionJobStatusReq","getJobStatusFn","curStatus","prevStatus","emitInterval","intVal$","interval","_jobTimeoutMs","getJobStatusInput","takeWhile","messageQueue","getJobStatus","take","statusChanged","emitJobStatus","jobFinished","_takeCount","statusUpdatesComplete","percentComplete","jobStatus","statuses","takeCount","T","isFinished","createJobStatus","statusResponse","body","messageid","QueryRefService","stopComputePolling","_computeQueryRef","stopPolling","ShoppingCartService","orderSvc","_stateTree$","switchMap","combineLatest","cart$","_clearcart$","_aggregateTotal","debounceTime","cart","checkout","total","getTotal","shareReplay","addProduct","product","prevQuantity","_cartAdd$","removeProduct","_cartRemove$","remove","recalculateTotal","_selfServiceProducts","clearCart","merge","startWith","scan","acc","productsReducer","productsTotal","getProductsTotal","getGrandTotal","calculatedCost","itemCount","subTotal","cartTotal","productFilter","tmpProds","aggregateProduct","calcCost","prods","productToFilter","serviceName","existingCost","newCost","isNaN","price","discount","serviceLevelPercent","TasksService","getTasks","tasks$","addTask","retrieveTasks","isPolling","updateTask","cleanupTasksPolling","tasksQueryRef","SimpleTimer","timers","subscription","getTimer","getSubscription","newTimer","sec","delay","timer","second","newTimerCD","newTimerHR","msec","callback","ɵɵdefineInjectable","providedIn","TimerService","st","UserService","page","pageSize","searchTerm","roleId","_roles$","_search$","_loading$","_search","_users$","_total$","roles$","users$","total$","loading$","_state","_set","patch","updateUser","updateAuthUserRoles","updateRolesByUserInput","updateCompanyUserRoles","GetCompanyUsersInput","companyUsers$","doesUserExist","createOrUpdateUser","isActive","deleteUser","composeVCDGroupForUser","groupName","cns","rolesToString","roleString","locationsToGroups","locs","groupsOut","getAvailableComputeLocations","locationsOut","parseLocationFromDatacenter","datacenterLoc","locOut","createMembership","membership","Membership","applicationId","locationId","username","isApproved","isLockedOut","isDefault","isEncrypted","createDefaultPortalMembership","CreatePortalMembershipInput","ApplicationId","ApplicationLocationId","IsApproved","IsLockedOut","IsDefault","IsEncrypted","createProviderMembershipInput","cloudPermission","CreateProviderMembershipInput","orgNeeded","orgId","ce","buildTypeLoginInput","membershipNeeded","loginInput","TypeLoginInput","generateRandomPassword","DatacenterURL","DatacenterLocation","ApplicationName","createUserMembershipInput","permission","pwd","CreateUserMembershipInput","TypeMembershipInput","memb","Comment","CreateDate","getCurrentLocationsForUser","isProtectedUser","isProtected","passwordLength","getRandomInt","upperLowerArray","upperCaseArray","lowerCaseArray","numbersSymbolsArray","numbersArray","symbolsArray","upperLowerSymbolsNumbersArray","temp","min","max","DynamicFormQuestionComponent","form","controls","valid","ngOnInit","selectors","DynamicFormComponent","questionService","qcs","productsService","first","last","temps","qs$","calcCosts","payLoad","getRawValue","costs$","decls","ctx","ctx_r2","oxw","AlertComponent","alertSubscription","alerts","keepAfterRouteChange","autoClose","removeAlert","routeSubscription","events","NavigationStart","fade","cssClass","classes","VdcstatsComponent","roundStat","statIn","WorkloadComponent","cloudmanageService","authenticationService","checkSnapshot","getFriendlyOSName","nameIn","getProvider","vmDetails","queryParams","hasSnap","ctx_r6","ctx_r8","ctx_r9","ctx_r10","ctx_r11","ctx_r12","ctx_r15","ctx_r17","ctx_r20","ctx_r22","ctx_r25","ctx_r27","VmactionsComponent","launchWebConsole","screenTicketSubscription","ticket","ScreenTicket","screenTicket","open","env","consoleUrl","vmx","port","openDetails","getUrl","loading","snapExists$","hasVMSnapshot","ValidationService","validatorName","validatorValue","invalidCreditCard","invalidEmailAddress","invalidPassword","minlength","requiredLength","control","match","ControlMessagesComponent","propertyName","touched","ctx_r4","ctx_r7","ChangechannelComponent","sms","modalService","queryRefService","shoppingCartSvc","channel","openSettings$","showModal","company$","authUser$","originalCompanyId","originalCompanyName","channelCompanyId","companies$","localeCompare","companyList","loaded$","isError$","errorMsg$","openModal","$event","preventDefault","modalRef","show","class","onHidden","onShown","isOpenChange","f","submit","changeChannel","proceedCompany","nukeStore","WorkloadsgridComponent","vms$","renderTable","dtOptions","columns","columnDefs","targets","render","row","ordering","pagingType","pageLength","lengthMenu","responsive","destroy","scrollX","$","DataTable","dtTrigger","ctx_r19","ctx_r24","ctx_r28","ctx_r30","DpsbackupsComponent","fb","newHostName","backupFailover","DpsAction","jobclass","backupdate","backupList","onChange","backupTmp","showAction","selectedBackup","selectedAction","showAdd","showDoBackup","showHostRename","showFailoverSelect","selectedFailoverHost","backupActions","noactions","It","testfailedoveractions","failedoveractionfail","showFailbackMessage","backupactionsOrig","backuptype","failover","failedoveractionsync","failoveractions","setTheAction","setRecoveryOptions","setFailoverHostTargets","checkHostName","feedback","hostname","hostsFiltered","sourcecluster","isvm","failoverHosts","setTheFailoverHost","failoverHost","apphostid","D","hostApp","protectable","addBackupAction","resetBackup","backupFailoverSelected","removeBackupAction","idArray","DpsgridComponent","backupHosts$","checkBackup","DpsBadgeComponent","dpsService","checkDPSProtectStatus","theVM","hasDPS","dpsExists","getDPSStatus","SnapshotBadgeComponent","checkSnapProtectStatus","Mi","snapExists","getSnapStatus","_r4","MAs","ctx_r14","ctx_r26","ctx_r29","ResourceComponent","prodServ","commonSvc","currentVal","maxAmt","floorVal","ceil","ceilVal","stepAmt","sliderControl","state$","resetForm","sliderForm","reset","setValues","res","setUpProduct","cartState$","isNetwork","productTmp","service","productId","productPrice","productName","vdcName","maxAllocation","productServiceLevelPercent","productDiscount","orderStep","setValuesPaygo","setValuesAllocation","setValuesGCP","setValuesAWS","setValuesAZU","isPaygo","display","val$","maxValue","disabled","translate","initialUsage","initialAllocation","NumberSymbol","units","storageRounded","showSelectionBarFromValue","minLimit","networkLimit","addThisItem","itemAdded","removeThisItem","qtyChanged","amountChangedPaygo","amountAdded","amountChangedAllocation","updateAmount","srcElement","selectedValue","goToCart","N3TEnvironment","ctx_r13","ctx_r16","ctx_r18","ctx_r23","ResourceDPSComponent","TenantResources","GetOfferingItem","GetTenantOfferingItemsByEditionInput","inputUsage","GetTenantUsagesInput","edition","uuid","TenantUuid","currentSettings","usage_name","tenantUsage","setValuesDPS","quota","overage","totalStorage","amountChanged","JobmonitorComponent","provJobSvc","results","tmpJobs","jobCount","JobProgressBarComponent","povJobStatSvc","setJobStatusReq","jobStatusReq","_r0","MessagesComponent","messageSvc","setTempMessages","messages$","ctx_r1","MessageComponent","hide","theMessage","BooldisplayComponent","Boolean","valueIn","TaskgridModule","CommonModule","AlertModule","PanelsModule","UtilsModule","TabsModule","BsDropdownModule","DataTablesModule","ctx_r5","WorkloadoverviewComponent","cancel","condition","LineRegExp","position","lastLineStart","line","matchAll","invariant","column","sourceLocation","firstLineColumnOffset","locationOffset","padStart","lineIndex","lineNum","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","prefix","rawArgs","_this$nodes","_nodeLocations$","_ref","nodes","positions","originalError","extensions","args","firstArg","toNormalizedOptions","super","undefinedIfEmpty","nodeLocations","node","start","locations","pos","getLocation","originalExtensions","isObjectLike","defineProperties","writable","enumerable","Ur","stack","configurable","captureStackTrace","GraphQLError","toStringTag","Symbol","printSourceLocation","toJSON","formattedError","array","description","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","COMMENT","startOfFileToken","Token","lastToken","lineStart","advance","lookahead","kind","nextToken","readNextToken","end","prev","isLeadingSurrogate","isTrailingSurrogate","lexer","codePointAt","char","fromCodePoint","bodyLength","readComment","createToken","readBlockString","readString","isDigit","readNumber","isNameStart","readName","syntaxError","isUnicodeScalarValue","isSupplementaryCodePoint","printCodePointAt","firstCode","isFloat","readDigits","chunkStart","escape","readEscapedUnicodeVariableWidth","readEscapedUnicodeFixedWidth","readEscapedCharacter","point","readHexDigit","read16BitHexCode","trailingCode","currentLine","blockLines","dedentBlockStringLines","ra","isNameContinue","sourceObj","isSource","Source","_lexer","Lexer","_options","parseName","expectToken","Kind","parseDocument","definitions","many","parseDefinition","peek","parseOperationDefinition","hasDescription","peekDescription","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseFragmentDefinition","parseTypeSystemExtension","unexpected","operation","OperationTypeNode","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseConstValueLiteral","parseConstDirectives","selections","parseSelection","parseFragment","parseField","nameOrAlias","alias","arguments","parseArguments","isConst","parseConstArgument","parseArgument","parseValueLiteral","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","allowLegacyFragmentVariables","parseList","parseObject","parseStringLiteral","block","values","any","fields","parseObjectField","parseDirective","innerType","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","delimitedMany","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","types","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseEnumValueName","getTokenDesc","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","startToken","_this$_options2","noLocation","Location","getTokenKindDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","string","trim","cacheKey","normalize","has","parsed","parser","Parser","doc","workSet","Set","endToken","stripLoc","ast","seenKeys","fragmentDefinition","fragmentName","sourceKey","cacheKeyFromLoc","sourceKeySet","__assign","processFragments","literals","arg","extras","gql_1","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","default","CostApollo","apollo","getBillingInvoice","watchQuery","query","variables","subscriptionId","valueChanges","getCostFromBilling","GetCostFromBillingInput","CostProxy","costApollo","BrsApollo","getBRSLinks","mutate","mutation","fetchPolicy","BrsProxy","brsApollo","brsLinksSubject","getBrsLinksValue","links","BRSLinks","DpsApollo","sessionIds","getHostBackup","getHostBackupInput","getHostBackups","getHostBackupsInput","pollInterval","getActiveMountStatus","getActiveMountStatusInput","getBackupPolicyTemplates","getBackupPolicyTemplatesInput","getBackupPolicies","getBackupPoliciesInput","sltid","getBackupProfiles","getBackupProfilesInput","doCloneProcessInput","doMountProcessInput","resumeProtection","resumeProtectionInput","removeProtection","removeProtectionInput","RemoveProtectionInput","slaid","toggleProtection","toggleProtectionInput","scheduleoff","expirationoff","doMountBackProcess","doMountBackProcessInput","doUnMountProcess","doUnMountProcessInput","doImageExpire","doImageExpireInput","doBackupOnDemand","doBackupOnDemandInput","policyid","applyBackupPolicy","applyBackupPolicyInput","slpid","discoverVMByName","discoverVMByNameInput","syncbackInput","DpsProxy","dpsApollo","RdsApollo","getRecoveryUsages","getUsages","initialDatasetSize","projectedDatasetSize","changeRate","changeRateYOY","schedule","retention","bandwidthUsages","RdsProxy","rdsApollo","CloudvaletApollo","getSchedules","getSchedulesInput","checkScheduleForHosts","checkScheduleForHostsInput","scheduleId","processScheduledHostEdit","processScheduledHostEditInput","utcOffset","runDays","startTime","stopTime","enabled","snoozed","runFor","runUntil","resume","snoozeMode","removeSchedule","removeScheduleInput","CloudvaletProxy","cloudvaletApollo","JwtHelper","atob","upn","LoginApollo","getAuthentication","getAuth","getAuthUser","getAuthenticationByUserId","getAuthByUserId","getLogin","getLoginInput","getLogins","getLoginsInput","authUser","checkUserPasscode","checkUserPasscodeInput","membershipId","passcode","getMemberships","getMembershipsInput","getOrgsSimple","getOrgsSimpleInput","getFull","changePassword","changePasswordInput","newPassword","changePasswordWithToken","changePasswordWithTokenInput","authToken","forgotPassword","forgotPasswordInput","changePwdUrl","createUserPSK","createUserPSKInput","Passcode","updateUserPSK","updateUserPSKInput","MembershipId","updateUserMembership","updateMembershipInput","deleteUserMembership","deleteUserMembershipInput","deleteUserAndMemberships","deleteUserAndMembershipsInput","LoginProxy","loginApollo","setTokenFields","mapKeycloakUser","DeleteUserAndMembershipsInput","userName","displayName","UserID","CompanyID","BackupApollo","getUserBackupAuth","getUserBackupAuthInput","getBackupClusterInfo","getBackupClusterInfoInput","getTenantOfferingItemsByEdition","getTenantUsages","BackupProxy","backupApollo","AuditApollo","getAuditLogsByCompany","createdDate","lessThan","LessThan","AuditProxy","auditApollo","auditLogSubject","auditLogs","ProductsApollo","serviceId","getProductsByService","getProductSelfServicePricing","provisionSelfServiceOrderInput","ProductsProxy","productsApollo","RecoveryApollo","failbackInput","performFailoverInput","removeTestFailoverInput","RecoveryProxy","recoveryApollo","PortalApollo","getCompanyIdentifiers","getRolesInput","PortalProxy","portalApollo","logins","orgsSubject","loginsSubject","membershipsSubject","companyIdentifiersSubject","rolesSubject","getOrgsValue","getLoginsValue","getCompanyValue","getMembershipsValue","getCompanyIdentifiersValue","getRolesValue","GetLoginsInput","GetOrgsSimpleInput","GetCompanyIdentifiers","GetMembershipsInput","GetUserBackupAuthInput","GetRolesInput","cmpData","companyData","UserLogins","loginsResponse","Memberships","getMembershipsResponse","CompanyIdentifiers","Orgs","orgsResponse","Roles","loginAPIResponse","BackupAuth","NetworkApollo","getNetworksByLocation","getNetworksByLocationInput","getVpnsByLocation","getVpnsByLocationInput","NetworkProxy","networkApollo","ComputeApollo","datapointId","CorrelationId","headers","HttpHeaders","getComputeRef","updatePowerStatus","updatePowerStatusInput","updateCpuCount","updateCpuCountInput","numCpus","updateMemory","updateMemoryInput","memCount","createVMSnapInput","removeVMSnapInput","revertVMSnapInput","getAppBackupTemplate","getAppBackupTemplateInput","templateid","getAppBackup","getAppBackupInput","getComputeStats","getComputeStatsInput","getComputeTemplates","getComputeTemplatesInput","getFilteredNetworks","getFilteredNetworksInput","getMeteringVmProperties","getMeteringVmPropertiesInput","getTask","getTaskInput","taskId","getAllTasks","taskLocations","ComputeProxy","computeApollo","providerLinksSubject","computeSubject","Compute","SchedulerApollo","getVMSchedule","getScheduleList","custId","addVMToSchedule","schedId","removeVMFromSchedule","SchedulerProxy","schedulerApollo","TemplatesApollo","getTemplates","tmpLocs","datacenterLocations","postTemplate","postTemplateInput","TemplatesProxy","templatesApollo","PermissionsApollo","getRoles","getRolesByUser","getRolesByUserInput","updateRolesByUser","createCompanyUser","createCompanyUserInput","FullName","IsActive","CompanyName","CreatedOn","CreatedBy","ModifiedOn","ModifiedBy","UseTwoFactorAuth","createProviderMembership","LocationType","createPortalMembership","createPortalMembershipInput","createUserMembership","deleteProviderUserAndMemberships","deleteProviderUserAndMembershipsInput","updateProviderUserMemberships","updateProviderUserMembershipsInput","PermissionsProxy","permissionsApollo","AuthenticateApollo","AuthenticateProxy","authenticateApollo","MonitorApollo","getBRSEventLogsByCompany","getBRSAlertLogsByCompany","startDate","endDate","MonitorProxy","monitorApollo","CompanyApollo","getcompany","getCompanyChannelAdmin","getChannelAdmin","CompanyProxy","companyApollo","KeycloakApollo","getClients","getClientsInput","addUser","addUserInput","getKeycloakSessionInput","userActionsInput","getUserByEmailInput","deleteUserInput","getUserGroupsInput","updateUserInput","getGroupByName","getGroupByNameInput","addUserGroupInput","KeycloakProxy","keycloakApollo","MetricsApollo","addCorrelation","addCorrelationInput","addCorrelationByIdInput","addDatapoint","addDatapointInput","addDatapointAndTimestampInput","addDatapointByLocation","addDatapointByLocationInput","addDatapointByLocationAndTimestamp","addDatapointByLocationAndTimestampInput","getDatapointsByUser","getDatapointsByUserInput","fromDate","MetricsProxy","metricsApollo","N3TAPIApollo","getCrossSiteResource","getCrossSiteResourceInput","N3TAPIProxy","MessageQueueApollo","postJob","postJobInput","MessageQueueProxy","messageQueueApollo","NotifierApollo","sendNotifierMessageInput","messageType","messageTo","messageFrom","messageSubject","messageBody","NotifierProxy","notifierApollo","sendMessage","costProxy","brsProxy","dpsProxy","rdsProxy","cloudvaletProxy","loginProxy","backupProxy","auditProxy","productsProxy","recoveryProxy","portalProxy","networkProxy","computeProxy","schedulerProxy","templatesProxy","permissionsProxy","authenticateProxy","monitorProxy","companyProxy","keycloakProxy","metricsProxy","n3tapiProxy","messageQueueProxy","notifierProxy","cost","cloudvalet","brs","rds","audit","monitor","scheduler","authenticate","n3tapi","LoginChannelComponent","n3tKeycloakService","proceedChannelCompany","we","LayoutComponent","LoginComponent","route","formBuilder","returnUrl","onSubmit","submitted","RegisterComponent","accountService","invalid","relativeTo","routes","component","children","runGuardsAndResolvers","n3tKeycloak","Observable","LogoutComponent","AccountRoutingModule","RouterModule","AccountModule","ReactiveFormsModule","Select2Module","DialogsModule","DialogsService","ProgressbarConfig","imports","ModalModule","ProgressbarModule","ctx_r3","ConfirmDialogComponent","bsModalRef","confirm","onClose","complete","ConfirmTimerDialogComponent","logoutCountdownTimer","n3tKeycloakSvc","timerId","onTimer","confirmHandler","updateProgressBar","confirmCountdown","timeout","buttons","rendererFactory","renderer","createRenderer","initialState","playSound","backdrop","keyboard","addClass","document","querySelector","content","confirmTimer","sound","audioElement","createElement","navigator","userAgent","setAttribute","addEventListener","play","pause","SettingsModalService","MAT_CHIPS_DEFAULT_OPTIONS","MatChipsModule","ɵmod","ɵinj","ErrorStateMatcher","provide","useValue","separatorKeyCodes","ENTER","MatCommonModule","TextFieldModule","MatInputModule","MatFormFieldModule","MatSliderModule","panelClass","hasBackdrop","backdropClass","disableClose","width","height","maxWidth","ariaDescribedBy","ariaLabelledBy","ariaLabel","autoFocus","restoreFocus","delayFocusTrap","closeOnNavigation","matDialogAnimations","dialogContainer","trigger","style","opacity","transform","transition","animate","animateChild","optional","_MatDialogContainerBase","BasePortalOutlet","_elementRef","_focusTrapFactory","_changeDetectorRef","_document","_config","_interactivityChecker","_ngZone","_focusMonitor","_animationStateChanged","EventEmitter","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","attachDomPortal","_portalOutlet","hasAttached","_ariaLabelledBy","_initializeWithAttachedContent","_focusTrap","nativeElement","_getFocusedElementPierceShadowDom","attachComponentPortal","attachTemplatePortal","_recaptureFocus","_containsFocus","_trapFocus","_forceFocus","element","isFocusable","tabIndex","runOutsideAngular","removeEventListener","removeAttribute","focus","_focusByCssSelector","selector","elementToFocus","focusInitialElementWhenReady","focusedSuccessfully","_focusDialogContainer","_restoreFocus","previousElement","activeElement","contains","focusVia","i1","DOCUMENT","MatDialogConfig","ɵdir","viewQuery","CdkPortalOutlet","ae","MatDialogContainer","_onAnimationDone","toState","totalTime","_onAnimationStart","_startExitAnimation","markForCheck","ɵcmp","i3","styles","uniqueId","_overlayRef","_containerInstance","_afterOpened","_afterClosed","_beforeClosed","_id","clearTimeout","_closeFallbackTimeout","_finishDialogClose","detachments","_result","componentInstance","dispose","keydownEvents","keyCode","ESCAPE","hasModifierKey","_closeDialogVia","backdropClick","close","dialogResult","detachBackdrop","afterOpened","afterClosed","beforeClosed","updatePosition","strategy","_getPositionStrategy","left","right","centerHorizontally","L","top","bottom","centerVertically","updateSize","addPanelClass","removePanelClass","getConfig","positionStrategy","ref","interactionType","MAT_DIALOG_DATA","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","deps","Overlay","useFactory","overlay","scrollStrategies","_MatDialogBase","_overlay","_injector","_defaultOptions","_parentDialog","_overlayContainer","scrollStrategy","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_animationMode","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","afterAllClosed","defer","openDialogs","_getAfterAllClosed","_scrollStrategy","parent","componentOrTemplateRef","defaultOptions","_applyConfigDefaults","getDialogById","overlayRef","_createOverlay","_attachDialogContainer","dialogRef","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","closeAll","_closeDialogs","dialog","overlayConfig","_getOverlayConfig","dialogConfig","OverlayConfig","global","direction","minWidth","minHeight","maxHeight","disposeOnNavigation","injector","Injector","viewContainerRef","providers","containerPortal","ComponentPortal","componentFactoryResolver","containerRef","attach","TemplateRef","TemplatePortal","$implicit","_createInjector","contentRef","userInjector","Directionality","InjectFlags","change","splice","previousValue","overlayContainer","getContainerElement","parentElement","siblings","sibling","nodeName","hasAttribute","getAttribute","dialogs","MatDialog","parentDialog","animationMode","MatDialogRef","i1$1","i2","ANIMATION_MODULE_TYPE","MatDialogModule","OverlayModule","PortalModule","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","reposition","MatAutocompleteModule","MatOptionModule","CdkScrollableModule","MatBadgeModule","A11yModule","MatBottomSheetModule","MatButtonToggleModule","MatRippleModule","_MatCheckboxRequiredValidatorModule","MatCheckboxModule","ObserversModule","CdkStepperModule","BidiModule","MatStepperIntl","optionalLabel","completedLabel","editableLabel","MAT_STEPPER_INTL_PROVIDER","Optional","SkipSelf","parentIntl","MatStepperModule","MatButtonModule","MatIconModule","MatDatepickerIntl","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","formatYearRange","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","MatDatepickerModule","CdkAccordionModule","MatExpansionModule","MatGridListModule","MatLineModule","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","MatMenuModule","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","scrollThrottle","MatTooltipModule","MatPaginatorIntl","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","startIndex","MAT_PAGINATOR_INTL_PROVIDER","MatPaginatorModule","MatSelectModule","_MatProgressSpinnerBase","mixinColor","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","elementRef","_platform","defaults","changeDetectorRef","viewportRuler","ngZone","_diameter","_value","_resizeSubscription","Subscription","trackedDiameters","MatProgressSpinner","_diameters","_spinnerAnimationLabel","_getSpinnerAnimationLabel","head","_noopAnimations","_forceAnimations","strokeWidth","isBrowser","SAFARI","run","coerceNumberProperty","_styleRoot","_attachStyleNode","_strokeWidth","newValue","_getShadowRoot","classList","_getCircleRadius","_getViewBox","viewBox","_getStrokeCircumference","PI","_getStrokeDashOffset","_getCircleStrokeWidth","_getCircleTransformOrigin","svg","scale","currentScale","styleRoot","currentDiameter","diameters","diametersForElement","styleTag","textContent","_getAnimationText","appendChild","strokeCircumference","WeakMap","MatProgressSpinnerModule","MatRadioModule","MatSidenavModule","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MatSortModule","CdkTableModule","ScrollingModule","MatTableModule","MatToolbarModule","CdkTreeModule","MatTreeModule","MATERIAL_MODULES","MatCardModule","MatDividerModule","MatListModule","MatNativeDateModule","MatProgressBarModule","MatSlideToggleModule","MatSnackBarModule","MatTabsModule","MaterialModule","MonitoringModule","ButtonsModule","FormsModule","AngularResizeEventModule","PanelComponent","headerClass","el","collapsed","collapsible","fullscreenIn","fullscreenable","closed","clossable","ngOnChanges","pannelClasses","pannelContainerClasses","pannelContentClasses","toggleCollapse","toggleFullscreen","handleClassCondition","closePanel","titleEl","innerText","className","toPromise","setHeaderClass","makeSlideInOut","TooltipModule","UiModule","StubClickDirective","onMouseDown","scrollDuration","cosParameter","scrollY","scrollCount","oldTimestamp","performance","requestAnimationFrame","newTimestamp","scrollTo","cos","getElementById","scrollTop","fullscreenElement","msFullscreenElement","mozFullScreenElement","webkitFullscreenElement","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","documentElement","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","setAdminUsers","createAction","props","addAdminUser","upsertAdminUser","addAdminUsers","upsertAdminUsers","updateAdminUser","updateAdminUsers","deleteAdminUser","deleteAdminUsers","clearAdminUsers","setAdminUserLoaded","getAdminUserError","setCompanyChannelAdminUser","setCompanyChannelAdminUserLoaded","adminUsersFeatureKey","adapter","createEntityAdapter","selectId","getInitialState","adminUserResult","N3TResult","adminUserReducer","createReducer","on","addOne","upsertOne","addMany","upsertMany","updateOne","updateMany","removeOne","removeMany","setAll","removeAll","selectAll","getSelectors","selectAdminUserState","createFeatureSelector","selectAllAdminUsers","createSelector","fromAdminUser","authUsers","adminUserState","appReset","appResetError","appResetChannel","appResetChannelError","setAuthUsers","addAuthUser","upsertAuthUser","addAuthUsers","upsertAuthUsers","updateAuthUser","updateAuthUserRolesError","updateAuthUsers","deleteAuthUser","deleteAuthUsers","clearAuthUsers","getAuthUsers","setAuthUsersLoaded","getAuthUsersError","resetAuthUsersResult","authUsersFeatureKey","authUserResult","authUserReducer","selectAuthUserState","selectAllAuthUsers","fromAuthUser","selectAuthUser","setBackupAuthResults","addBackupAuthResult","upsertBackupAuthResult","addBackupAuthResults","upsertBackupAuthResults","updateBackupAuthResult","updateBackupAuthResults","deleteBackupAuthResult","deleteBackupAuthResults","clearBackupAuth","getBackupAuthData","setBackupAuthDataLoaded","setBackupAuthDataError","backupAuthFeatureKey","backupAuthResult","backupAuthReducer","selectBackupAuthState","selectAllBackupAuth","fromBackupAuth","backupAuthState","setBackupClusterInfoResults","addBackupClusterInfoResult","upsertBackupClusterInfoResult","addBackupClusterInfoResults","upsertBackupClusterInfoResults","updateBackupClusterInfoResult","updateBackupClusterInfoResults","deleteBackupClusterInfoResult","deleteBackupClusterInfoResults","clearBackupClusterInfo","getBackupClusterInfoData","setBackupClusterInfoDataLoaded","setBackupClustersInfoDataLoaded","setBackupClusterInfoDataError","backupClusterInfoFeatureKey","backupClusterInfo","backupClusterInfoReducer","BackupClusterInfoActions","backupClustersInfoResult","selectBackupClusterInfoState","selectAllBackupClusterInfo","fromBackupClusterInfo","backupClusterInfoState","setBackupJobResults","addBackupJobResult","upsertBackupJobResult","addBackupJobResults","upsertBackupJobResults","updateBackupJobResult","updateBackupJobResults","deleteBackupJobResult","deleteBackupJobResults","clearBackupJob","getBackupJob","getBackupJobData","setBackupJobDataLoaded","setBackupJobDataError","backupJobFeatureKey","initialJobState","backupJobReducer","selectBackupJobState","selectBackupJobById","backupJobState","entities","selectAllBackupJobs","fromBackupJob","setBackupResults","addBackupResult","upsertBackupResult","addBackupResults","upsertBackupResults","updateBackupResult","updateBackupResults","deleteBackupResult","deleteBackupResults","clearBackup","getBackupData","setBackupDataLoaded","setBackupDataError","backupFeatureKey","backupReducer","selectBackupState","selectBackupById","backupState","selectAllBackup","fromBackup","setBrsLinks","addBrsLink","upsertBrsLink","addBrsLinks","upsertBrsLinks","updateBrsLink","updateBrsLinks","deleteBrsLink","deleteBrsLinks","clearBrsLinks","getBrsLinks","setBrsLinksLoaded","getBrsLinksError","brsLinksFeatureKey","brsLink","brsLinksResult","brsLinkReducer","BrsLinkActions","selectBrsLinkState","selectAllBrsLinks","fromBrsLink","setChannelCompanys","addChannelCompany","upsertChannelCompany","addChannelCompanys","upsertChannelCompanys","updateChannelCompany","updateChannelCompanys","deleteChannelCompany","deleteChannelCompanys","clearChannelCompanys","getChannelCompanys","setChannelCompanysLoaded","getChannelCompanysError","channelCompaniesFeatureKey","channelCompaniesResult","channelCompanyReducer","channelCompany","selectChannelCompanyState","selectAllChannelCompanies","fromChannelCompany","setCompanyIdentifiers","addCompanyIdentifier","upsertCompanyIdentifier","addCompanyIdentifiers","upsertCompanyIdentifiers","updateCompanyIdentifier","updateCompanyIdentifiers","deleteCompanyIdentifier","deleteCompanyIdentifiers","clearCompanyIdentifiers","setCompanyIdentifiersLoaded","getCompanyIdentifiersError","setCompanyIdentifiersReset","companyIdentifiersFeatureKey","companyIdentifier","companyIdentifierId","companyIdentifierResult","companyIdentifierReducer","CompanyIdentifierActions","selectCompanyIdentifierState","selectAllCompanyIdentifiers","fromCompanyIdentifier","addCompanyUser","addCompanyUserToSSO","addCompanyUsers","updateCompanyUser","updateCompanyUsers","deleteCompanyUsers","clearCompanyUsers","setCompanyUsersLoaded","getCompanyUsersError","updateCompanyUserError","deleteCompanyUserError","setCompanyUsersReset","companyUsersFeatureKey","companyUserResult","companyUserReducer","selectCompanyUserState","selectCompanyUserById","companyUserId","companyUserState","selectAllCompanyUsers","fromCompanyUser","companyUsersJobResult","setCompanys","addCompany","upsertCompany","addCompanys","upsertCompanys","updateCompany","updateCompanys","deleteCompany","deleteCompanys","clearCompanys","getCompanyChannelAdminUser","setCompanyChannelAdminUserError","getCompanys","setCompanysLoaded","getCompanysError","companiesFeatureKey","companysResult","companyReducer","companys","selectCompanyState","selectAllCompanies","fromCompany","allCompanies","setDPSResults","addDPSResult","upsertDPSResult","addDPSResults","upsertDPSResults","updateDPSResult","updateDPSResults","deleteDPSResult","deleteDPSResults","clearDPS","getBackupsAllData","setBackupsAllDataLoaded","setBackupsAllDataError","dpsFeatureKey","dpsReducer","selectdpsState","selectAllDPS","fromDPS","dpsState","getGqlAdminUser","setGqlAdminUserLoaded","setGqlAdminUserError","getGqlAuthUser","getGqlAuthUserByUserId","setGqlAuthUserLoaded","setGqlAuthUserError","getGqlBRSLinks","setGqlBRSLinksLoaded","setGqlBRSLinksError","getGqlCompanyData","setGqlCompanyDataLoaded","setGqlCompanyDataError","getGqlChannelCompanyData","getGqlNetworkData","setGqlNetworkDataLoaded","setGqlNetworkDataError","setVdcNetworkData","getGqlProviderTokens","setGqlProviderTokensLoaded","setGqlProviderTokensError","getGqlVdcs","setGqlVdcsLoaded","setGqlVdcsError","selectGqlState","gqlState","companyDataResult","networkDataResult","providerTokensResult","vdcsResult","setMemberships","addMembership","upsertMembership","addMemberships","upsertMemberships","updateMembership","updateMemberships","deleteMembership","deleteMemberships","clearMemberships","getMembership","setMembershipLoaded","getMembershipError","membershipsFeatureKey","membershipResult","membershipReducer","MembershipActions","selectMembershipState","selectAllMemberships","fromMembership","sessionLength","sessionTimeout","dataLoadVmTimeDuration","addMetric","upsertMetric","addMetrics","upsertMetrics","updateMetric","updateMetrics","deleteMetric","deleteMetrics","setMetric","clearMetrics","metricsFeatureKey","metricsReducer","selectMetricsState","selectAllMetrics","fromMetrics","selectMetricById","selectedMetricState","generateNetworkTokenError","generateNetworkTokensError","setNetworks","addNetwork","upsertNetwork","addNetworks","upsertNetworks","updateNetwork","updateNetworks","deleteNetwork","deleteNetworks","clearNetworks","networksFeatureKey","networkResult","networkReducer","selectNetworkState","selectAllNetworks","fromNetwork","setOrgs","addOrg","upsertOrg","addOrgs","upsertOrgs","updateOrg","updateOrgs","deleteOrg","deleteOrgs","clearOrgs","getOrgs","setOrgsLoaded","getOrgsError","orgsFeatureKey","orgsResult","orgReducer","OrgActions","selectOrgState","selectAllOrgs","fromOrg","setProcessJobResults","addProcessJobResult","upsertProcessJobResult","addProcessJobResults","upsertProcessJobResults","updateProcessJobResult","updateProcessJobResults","deleteProcessJobResult","deleteProcessJobResults","clearProcessJob","getProcessJob","getProcessJobData","setProcessJobDataLoaded","setProcessJobDataError","backupProcessJobFeatureKey","backupProcessJob","processJobResult","processJobReducer","BackupProcessJobActions","processJobResults","selectBackupProcessJobState","selectBackupProcessJobById","backupProcessJobState","fromBackupProcessJob","generateProductError","generateProductsError","upsertProduct","addProducts","updateProduct","updateProducts","deleteProduct","clearProducts","getProductData","getProductSelfServiceData","setProductDataLoaded","setProductSelfServiceDataLoaded","setProductDataError","setProductSelfServiceDataError","productFeatureKey","productResult","productReducer","selectproductState","selectproductById","productState","selectAllProducts","fromProduct","generateProviderTokenError","generateProviderTokensError","addProviderToken","upsertProviderToken","addProviderTokens","upsertProviderTokens","updateProviderToken","updateProviderTokens","deleteProviderToken","deleteProviderTokens","clearProviderTokens","providerTokensFeatureKey","providerTokenResult","providerTokenReducer","providerToken","selectproviderTokenState","selectAllProviderTokens","fromProviderToken","addRole","upsertRole","addRoles","upsertRoles","updateRole","updateRoles","deleteRole","deleteRoles","clearRoles","getRole","setRoleLoaded","getRoleError","rolesFeatureKey","roleResult","roleReducer","selectRoleState","selectAllRoles","fromRole","setSelectedTemplates","setSelectedTemplate","addSelectedTemplate","addSelectedTemplates","setSelectedTemplatesLoaded","updateSelectedTemplate","updateSelectedTemplates","clearSelectedTemplates","getSelectedTemplatesError","selectedTemplatesFeatureKey","selectedTemplatesResult","selectedTemplatesReducer","setOne","templatesResult","selectSelectedTemplatesState","selectSelectedTemplateById","selectedTemplatesState","selectAllSelectedTemplates","fromSelectedTemplates","toggleFixedHeader","toggleFixedNavigation","toggleMinifyNavigation","toggleHideNavigation","toggleTopNavigation","toggleBoxedLayout","togglePushContent","toggleNoOverlay","toggleOffCanvas","toggleBiggerContentFont","toggleHighContrastText","toggleDaltonism","toggleRtl","togglePreloaderInsise","toggleCleanPageBackground","toggleHideNavigationIcons","toggleDisableCSSAnimation","toggleHideInfoCard","toggleLeanSubheader","toggleHierarchicalNavigation","setGlobalFontSize","factoryReset","SettingsActionTypes","html","reducer","INIT","actions","fixedHeader","fixedNavigation","minifyNavigation","hideNavigation","topNavigation","boxedLayout","pushContent","noOverlay","offCanvas","biggerContentFont","highContrastText","daltonism","preloaderInside","cleanPageBackground","hideNavigationIcons","disableCSSAnimation","hideInfoCard","leanSubheader","hierarchicalNavigation","globalFontSize","handleCssClasses","settings","rtl","settingsReducer","SettingsActions","selectSettingsState","addTypeVMSnapshot","upsertTypeVMSnapshot","addTypeVMSnapshots","upsertTypeVMSnapshots","updateTypeVMSnapshot","updateTypeVMSnapshots","deleteTypeVMSnapshot","deleteTypeVMSnapshots","clearTypeVMSnapshots","getTypeVMSnapshotStatus","setTypeVMSnapshotStatusLoaded","getTypeVMSnapshotStatusError","addTasks","setTasksLoaded","upsertTasks","updateTasks","deleteTask","deleteTasks","clearTasks","getTasksLoaded","getTasksError","tasksFeatureKey","tasksResult","taskReducer","selectTaskState","selectAllTasks","fromTask","tasksState","setTemplates","setTemplate","addTemplate","upsertTemplate","addTemplates","setTemplatesLoaded","upsertTemplates","updateTemplate","updateTemplates","deleteTemplate","deleteTemplates","clearTemplates","getTemplatesLoaded","getTemplatesError","templatesFeatureKey","templatesReducer","selectTemplatesState","selectAllTemplates","fromTemplates","templatesState","setTenantOfferingItemsByEditionResults","setTenantOfferingItemsByEditionResult","addTenantOfferingItemsByEditionResult","upsertTenantOfferingItemsByEditionResult","addTenantOfferingItemsByEditionResults","upsertTenantOfferingItemsByEditionResults","updateTenantOfferingItemsByEditionResult","updateTenantOfferingItemsByEditionResults","deleteTenantOfferingItemsByEditionResult","deleteTenantOfferingItemsByEditionResults","clearTenantOfferingItemsByEdition","setTenantOfferingItemsByEditionDataLoaded","setTenantOfferingItemsByEditionDataError","offeringItemsReducerFeatureKey","offeringItemsResult","offeringItemsReducer","selectOfferingItemsState","selectAllOfferingItems","fromOfferingItems","offeringItemsState","setTenantUsagesResults","setTenantUsagesResult","addTenantUsagesResult","upsertTenantUsagesResult","addTenantUsagesResults","upsertTenantUsagesResults","updateTenantUsagesResult","updateTenantUsagesResults","deleteTenantUsagesResult","deleteTenantUsagesResults","clearTenantUsages","setTenantUsagesDataLoaded","setTenantUsagesDataError","tenantUsagesReducerFeatureKey","tenantUsagesResult","tenantUsagesReducer","selectUsagesState","selectAllUsages","fromUsages","usagesState","setUserLogins","addUserLogin","upsertUserLogin","addUserLogins","upsertUserLogins","updateUserLogin","updateUserLogins","deleteUserLogin","deleteUserLogins","clearUserLogins","getUserLogin","setUserLoginLoaded","getUserLoginError","userLoginsFeatureKey","userLoginResult","userLoginReducer","UserLoginActions","userLogin","userLogins","selectUserLoginState","selectAllUserLogins","fromUserLogin","flattenVdcs","setFlattenVdcsLoaded","setFlattenVdcsError","setVdcs","addVdc","upsertVdc","addVdcs","upsertVdcs","updateVdc","updateVdcs","deleteVdc","deleteVdcs","clearVdcs","getVdcs","setVdcsLoaded","setVdcsError","vdcsFeatureKey","flattenVdcsResult","vdcReducer","VdcActions","selectVdcState","selectVdcById","vdcState","selectAllVdcs","fromVdc","setVmFlats","addVmFlat","addVmFlats","upsertVmFlat","upsertVmFlats","updateVmFlat","updateVmFlats","deleteVmFlat","deleteVmFlats","clearVmFlats","togglePowerStatusError","getVmFlats","setVmFlatsLoaded","setVmFlatsReloading","getVmFlatsError","vmFlatsFeatureKey","vmFlatResult","vmFlatReducer","VmFlatActions","vmFlats","selectVmFlatState","selectVmFlatById","vmFlatState","selectAllVmFlats","fromVmFlat","vmsFlatResult","vmsFlatState","production","apiUrl","keycloackUrl","classicPortal","loggerConfig","serverLoggingUrl","api","level","NgxLoggerLevel","serverLogLevel","disableConsoleLogging","enableSourceMaps","myUrl","externalDPS","SessionService","getSessionData","setDatacenterMetric","setBrowserMetric","getIPAddress","setIpAddressMetric","getGeoLocationData","setGeoLocationMetrics","tem","matchTest","exec","appVersion","ip","queryStr","locationMap","getLocationData","setGeoLocationMembers","rows","DOMParser","parseFromString","getElementsByTagName","th","td","setIspMetric","setCityMetric","setCountryMetric","setLatitudeMetric","setLongitudeMetric","setStateMetric","dispatchMetric","AppComponent","sessionSvc","which","stopImmediatePropagation","disableF5","errorHandler","ApolloLink","forward","observer","retriedSub","retriedResult","graphQLErrors","bind","networkError","_super","_this","onError","__extends","ErrorLink","ApolloCache","getFragmentDoc","wrap","getFragmentQueryDocument","batch","updateResult","performTransaction","optimistic","recordOptimisticTransaction","transaction","optimisticId","transformDocument","identify","object","gc","modify","transformForLink","readQuery","read","rootId","readFragment","fragment","writeQuery","__rest","write","dataId","writeFragment","updateQuery","cache","updateFragment","MissingFieldError","__DEV__","isNonNullObject","isFrozen","freeze","TypeError","shallowFreeze","deepFreeze","EntityStore","Root","DELETE","delModifier","INVALIDATE","policies","rootIds","refs","getFieldValue","objectOrReference","storeFieldName","maybeDeepFreeze","isReference","__ref","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","makeReference","toObject","lookup","fieldName","depend","hasOwn","storeObject","rootTypenamesById","Layer","dependOnExistence","older","newer","existing","incoming","merged","DeepMerger","storeObjectReconciler","caching","fieldsToDirty_1","__exists","fieldNameFromStoreName","hasKeyArgs","__typename","dirty","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","readField","fieldNameOrOptions","from","fieldValue","storage","getStorage","typename","getStoreFieldName","evict","evicted","extract","extraRootIds","getRootIdSet","__META","newData","rest_1","retain","release","findChildRefIds","idsToRemove","root_1","found_1","root","workSet_1","child","makeCacheKey","keyMaker","lookupArray","CacheGroup","d","resetCaching","dep","Trie","canUseWeakMap","makeDepKey","entityId","supportsResultCaching","resultCaching","seed","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","rt","equal","fromParent","existingObject","incomingObject","property","existingValue","incomingValue","canonizeResults","StoreReader","knownResults","compact","addTypename","shouldCanonizeResults","canon","ObjectCanon","executeSelectionSet","peekArgs","execSelectionSetKeyArgs","other","admit","maybeDependOnExistenceOfEntity","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","keyArgs","varString","executeSubSelectedArray","execSubSelectedArrayImpl","field","resetCanon","diffQueryAgainstStore","_c","returnPartialData","_d","getDefaultValues","getQueryDefinition","missing","rootRef","execResult","getMainDefinition","canonicalStringify","fragmentMap","createFragmentMap","getFragmentDefinitions","firstMissing","isFresh","latest","isKnown","empty","objectsToMerge","missingMerger","resultName","rootIdsByTypename","selection","shouldInclude","isField","resultKeyNameFromField","addTypenameToDocument","handleMissing","_r","pass","getFragmentFromSelection","fragmentMatches","finalResult","mergeDeepArray","frozen","childResult","getTypenameFromStoreObject","assertSelectionSetForIdValue","tree","specifierInfoCache","spec","specifier","lookupSpecifierInfo","keyFieldsFn","keyObject","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","keyArgsFn","collected","keyPath","firstKey","firstChar","variableName","varKeyPath","isNonEmptyArray","directiveName_1","directiveArgs","argumentsObjectFromField","suffix","extractor","merger","getSpecifierPaths","toMerge","paths","paths_1","currentPath_1","s","getStoreKeyName","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","dataIdFromObject","defaultDataIdFromObject","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","keyFieldsFnFromSpecifier","queryType","mutationType","subscriptionType","Wt","updateTypePolicy","keyFields","setMerge","getFieldPolicy","keyArgsFnFromSpecifier","old","supertype","getSupertypeSet","subtype","TypeOrFieldNameRegExp","policy_1","supertypes","rest","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","selectionSetMatchesResult","regExp","fuzzyString","fieldSpec","argsFromFieldSpecifier","specifierOrString","storeKeyNameFromField","readOptions","makeFieldFunctionOptions","cacheSlot","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","undefId","makeUniqueId","stringifyForDisplay","InvariantError","eType","iType","storeValueIsStoreObject","clientOnly","deferred","flavored","flavors","StoreWriter","reader","writeToStore","operationDefinition","getOperationDefinition","makeProcessedFieldsMerger","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","existingRef","incomingObj","getChild","every","parentType","typeDotName","warnings","childTypenames","warnAboutDataLoss","getTypenameFromResult","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","getContextFlavor","maybeRecycleChildMergeTree","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","cloneDeep","fieldMap","limitingTrie","inheritedContext","visitedNode","visited","dir","if","flatten","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","typenameDocumentCache","makeVar","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","broadcastWatch","restore","broadcast","broadcastWatches","diff","watch","recallCache","immediate","forgetCache","forget","C","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","layer","alreadyDirty","jt","lastDiff","fromOptimisticTransaction","httpClient","print","operationPrinter","requester","Observable$1","getContext","pick","picked","prioritize","method","includeQuery","includeExtensions","withCredentials","useMultipart","useGETForQueries","isQuery","def","req","clientAwareness","createHeadersWithClientAwereness","destination","mergeHeaders","extractFiles","shouldUseBody","isBatching","multipartInfo","shouldUseMultipart","files","bodyOrParams","clone","param","shouldStringify","FormData","append","file","observe","responseType","reportProgress","fetch","setContext","op","HttpLink","HttpLinkHandler","httpLink","uri","authMiddleware","errorLink","httpLinkWithErrorHandling","GraphQLModule","APOLLO_OPTIONS","createApollo","ApolloModule","AuthGuard","KeycloakAuthGuard","keycloakService","isAccessAllowed","authenticated","JwtInterceptor","setExcludedUrls","intercept","getAuthToken","excludedUrl","excludedUrls","authHdr","handle","MetricsInterceptor","datapointid","metricSubject","updateNextPollingTime","updateDatapoint","nextPollingTime","HttpErrorInterceptor","throwError","statusText","AppResolve","CoreModule","parentModule","moduleName","throwIfAlreadyLoaded","HTTP_INTERCEPTORS","useClass","multi","BrowserAnimationsModule","HttpClientModule","AccordionModule","CollapseModule","PopoverModule","NgMultiSelectDropDownModule","NgxGaugeModule","ArchwizardModule","toggleNavSection","activeUrl","toggleFilter","navigationFilter","mobileNavigation","hasValue","observeNotification","do","nextHandler","completeHandler","accept","nextOrObserver","isFunction","toObservable","EMPTY","Notification","completeNotification","keySelector","elementOrOptions","duration","connector","operate","subscriber","notify","cb","handleError","consumer","activeGroups","teardownAttempted","groupBySourceSubscriber","OperatorSubscriber","grouped","groupSubject","groupSubscriber","innerSub","createGroupedObservable","durationSubscriber","createOperatorSubscriber","innerFrom","resultSelector","exhaustMap","ii","isComplete","outerValue","DEFAULT_EFFECT_CONFIG","useEffectsErrorHandler","CREATE_EFFECT_METADATA_KEY","effect","propertyNames","METADATA_KEY","sourceProto","metadata","hasMetadataEntries","addEffectMetadataEntry","compose","getEffectMetadataEntries","getSourceForInstance","sourceInstance","globalErrorHandler","effectsErrorHandler","sourceName","observables$","effects","getEffectDecoratorMetadata","getCreateEffectMetadata","sources","getSourceMetadata","observable$","effectAction$","ignoreElements","materialized$","materialize","retryAttemptLeft","defaultEffectsErrorHandler","Actions","lift","operator","observable","ScannedActionsSubject","allowedTypes","typeOrActionCreator","functionName","_ROOT_EFFECTS_GUARD","USER_PROVIDED_EFFECTS","_ROOT_EFFECTS","ROOT_EFFECTS","_FEATURE_EFFECTS","FEATURE_EFFECTS","EFFECTS_ERROR_HANDLER","EffectSources","addEffects","effectSourceInstance","toActions","groupBy","mergeMap","source$","effectsInstance","effect$","mergedEffects$","mergeEffects","isOnRunEffects","ngrxOnRunEffects","resolveEffectSource","reporter","isAction","isMethod","getEffectName","reportInvalidActions","dematerialize","init$","isOnInitEffects","ngrxOnInitEffects","isOnIdentifyEffects","ngrxOnIdentifyEffects","EffectsRunner","effectSources","effectsSubscription","ROOT_EFFECTS_INIT","EffectsRootModule","runner","rootEffects","storeRootModule","storeFeatureModule","guard","EffectsFeatureModule","effectSourceGroups","EffectsModule","featureEffects","ngModule","createEffects","_provideForRootGuard","Self","effectGroups","userProvidedEffectGroups","mergedEffects","effectGroup","userProvidedEffectGroup","createEffectInstances","ROUTER_REQUEST","ROUTER_NAVIGATION","ROUTER_CANCEL","ROUTER_ERROR","ROUTER_NAVIGATED","serialize","routerState","serializeRoute","paramMap","outlet","routeConfig","pathMatch","redirectTo","queryParamMap","firstChild","pathFromRoot","NavigationActionTiming","PreActivation","PostActivation","_ROUTER_CONFIG","ROUTER_CONFIG","stateKey","serializer","MinimalRouterStateSerializer","navigationActionTiming","RouterTrigger","NONE","ROUTER","STORE","StoreRouterConnectingModule","activeRuntimeChecks","lastEvent","isNgrxMockEnvironment","isDevMode","strictActionSerializability","strictStateSerializability","DefaultRouterStateSerializer","setUpStoreStateListener","setUpRouterEventsListener","_createRouterConfig","RouterStateSerializer","withLatestFrom","routerStoreState","storeState","navigateIfNeeded","stripTrailingSlash","isSameUrl","navigateByUrl","dispatchNavLate","routesRecognized","Oe","dispatchRouterRequest","RoutesRecognized","dispatchRouterNavigation","NavigationCancel","dispatchRouterCancel","NavigationError","dispatchRouterError","NavigationEnd","dispatchRouterNavigated","dispatchRouterAction","lastRoutesRecognized","nextRouterState","urlAfterRedirects","ACTIVE_RUNTIME_CHECKS","text","NavigationEffects","actions$","breakpointObserver","createEffect","ofType","NavigationItems","tags","icon","routerLink","navItems","navItem","active","matched","decorateItems","navTitle","countTotal","filterActive","filterText","navigationReducer","NavigationActions","detectActiveItems","toggleItems","filterItems","countMatched","itemIsActive","toggledItem","isToggledItemLevel","navItemMatch","selectNavigationState","selectNavigationItems","selectFilter","selectResult","BnNgIdleService","expired$","startWatching","timeOutSeconds","idle$","fromEvent","timeOutMilliSeconds","idleSubscription","resetTimer","startTimer","timer$","stopTimer","MainComponent","bnIdle","unloadHandler","isTimedOut","onLogoutTimer","showChildModal","closeMobileNav","ShortcutModalComponent","closeShortcut","ShortcutModalService","LogoComponent","shortcut","openShortcut","NavFilterComponent","textThrhottle$","throttleTime","distinctUntilChanged","handleKeyup","NavInfoCardComponent","cdr","navigationSubscription","detectChanges","NavItemComponent","hidden","shown","toggleSection","trackByFn","changeDetection","NavComponent","minified","NavFilterMsgComponent","NavFooterComponent","NavigationComponent","SidebarComponent","SettingsShortcutComponent","DropdownUserComponent","logoutUser","PageHeaderComponent","openMobileNav","isChannel$","CustomSerializer","getRouterState","go","back","RouterEffects","__decorate","Effect","ys","PageBreadcrumbComponent","goBack","_r2","TaskgridComponent","taskTimer","onTaskTimer","owner","TaskOwner","toLocaleString","callState$","GetAllTasksInput","GetTasksInput","ee","PageFooterComponent","isOpen","setContentWrapperSize","getScreenSize","toggleIsOpen","onResized","pageWrapper","pageContentWrapper","pagefabShortcut","pageFooter","offsetHeight","NavigationModule","FabShortcutComponent","scrollToTop2","scrollToTop","fullScreen","printPage","TYPEAHEAD_ANIMATION_TIMING","overflow","TypeaheadConfig","adaptivePosition","isAnimated","hideResultsOnBlur","cancelRequestOnFocusLost","selectFirstItem","isFirstItemActive","selectItemOnBlur","TypeaheadModule","ComponentLoaderFactory","PositioningService","LayoutModule","loadChildren","m","AliveModule","AboutModule","canActivate","SettingsModule","InfoModule","UiPagesModule","IconsModule","CloudmanageModule","VmsModule","VmModule","CostModule","BrsModule","DpsModule","RdsModule","MonitorModule","ManageModule","ResourcesModule","SupportModule","ShoppingCartModule","AppRoutingModule","relativeLinkResolution","getErrorMessage","isMatch","pattern","exactMatch","handler","N3THandler","list","module","N3TErrorHandler","handleErrorObservable","sendAlert","iterateHandlers","handleErrorType","handlers","errHandler","GlobalErrorHandler","n3tErrorHandler","ErrorHandlerModule","ErrorHandler","appResult","gqlReducer","setCompanyUserMemberships","addCompanyUserMembership","upsertCompanyUserMembership","upsertCompanyUserMemberships","addCompanyUserMemberships","updateCompanyUserMembership","updateCompanyUserMemberships","deleteCompanyUserMembership","deleteCompanyUserMemberships","clearCompanyUserMemberships","getCompanyUserMemberships","setCompanyUserMembershipsLoaded","getCompanyUserMembershipsError","updateCompanyUserMembershipsError","deleteCompanyUserMembershipsError","setCompanyUserMembershipsReset","AppEffects","VDCActions","CompanyUserMemberships","TenantOfferingItems","TenantUsages","AdminUserEffects","AuthUserEffects","rolesUpdate","UpdateRolesByUserInput","newRoles","MetricsEffects","storedDatapoint","metricCompute","metricCloudManage","BrsLinkEffects","ChannelCompanyEffects","CompanyEffects","ChannelAdmin","companyChannelAdmin","CompanyIdentifierEffects","GqlActions","GqlEffects","dataLoadComputeMetric","dataLoadCloudManageMetric","nwData","NetworkData","providerInfo","theTokens","ComputeTokens","NetworksByLocation","metricCompany","selfServInput","GetProductSelfServiceInput","MembershipEffects","pmInput","portalMembership","pInput","orgUserResponse","applicationLocationId","thing","NetworkEffects","OrgEffects","ProviderTokenEffects","RoleEffects","TaskEffects","Tasks","tasksResponse","UserLoginEffects","VdcEffects","vmsFlats","VmFlatEffects","tmp2","tmp1","vmUpdate","typeVMSnapshot","snapshotResult","snapshotReducer","typeVMSnapshots","bh","SnapshotEffects","selectSnapshotState","fromSnapshot","TemplatesEffects","GetTemplatesInput","Templates","SelectedTemplatesEffects","ProductEffects","containers","ProductSelfServicePricing","ProductSelfServiceResponse","reqProducts","requestedProducts","DPSEffects","dat","Backups","backupsAllResponse","GetBackupsAllResponse","BackupAuthEffects","locHelper","sessionsInput","sess","SessionInput","application","cluster","GetBackupClusterInfoInput","identifiers","newCompanyId","CompanyIdentifier","orgUserName","orgIdentifier","GetBackupsAllInput","BackupClusterInfoEffects","BackupClusterInfo","getBackupClustersHelper","clusterResults","clustGroup","getBackupClusterHelper","BackupEffects","BackupJobEffects","dpsJobStatus","BackupProcessJobEffects","ProcessJobStatus","processJobResponse","CompanyUserEffects","userService","companyUsersResponse","companyUserInput","CreateCompanyUserInput","cn","createdBy","usersInput","ssoInput","inputPortal","huh","Ji","umInput","UpdateUserInput","attributes","GetGroupByNameInput","GroupName","groupRepresentation","GroupRepresentation","getGroup","datacenterGroups","yr","subGroups","groupIDArray","perm","locationDatacenter","l","rolesInput","tmpRole","RolesInput","Rn","yn","companyUserMemberships","companyUserMembershipsResult","companyUserMembershipsReducer","CompanyUserMembershipsActions","companyUserMembership","_p","CompanyUserMembershipsEffects","selectCompanyUserMembershipsState","fromCompanyUserMemberships","TenantOfferingItemsEffects","newItems","getOfferingItems","newItem","TenantUsagesEffects","resources","INIT_ACTION","detectDate","dateReviver","_key","dummyReviver","existingSlice","memo","attr","createStateSlice","syncStateUpdate","storageKeySerializer","removeOnUndefined","syncCondition","replacer","space","encrypt","stateSlice","decrypt","defaultMergeReducer","rehydratedState","deepmerge","arrayMerge","destinationArray","sourceArray","reducers","navigation","routerAction","navigationId","metaReducers","checkStorageAvailability","restoreDates","mergeReducer","stateKeys","validateStateKeys","rehydrate","curr","deserialize","reviver","He","isObjectRegex","raw","rehydrateApplicationState","nextState","localStorageSync","customValidator","dateArrival","z","dateDeparture","customDateRangeValidator","forbiddenValue","forbidden","_control","_reject","customAsyncValidator","AppModule","bootstrap","LocationStrategy","PathLocationStrategy","APP_INITIALIZER","KeycloakService","NG_VALIDATORS","NG_ASYNC_VALIDATORS","DYNAMIC_VALIDATORS","customForbiddenValidator","StoreModule","runtimeChecks","strictStateImmutability","strictActionImmutability","selectedTemplates","tenantOfferingItems","tenantUsages","StoreDevtoolsModule","maxAge","actionsBlocklist","BrowserModule","KeycloakAngularModule","HttpClientJsonpModule","LoggerModule","colorScheme","DynamicFormsNGxBootstrapUIModule","NgxMaskModule","NgSelectModule","ProgressBarModule","NgxSliderModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","_enable_super_gross_mode_that_will_cause_bad_things","useDeprecatedSynchronousErrorHandling","hostReportError","UnsubscriptionError","UnsubscriptionErrorImpl","_parentOrParents","_subscriptions","_ctorUnsubscribe","_unsubscribe","flattenUnsubscriptionErrors","len","Si","teardown","subscriptions","subscriptionIndex","errs","rxSubscriber","destinationOrNext","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","emptyObserver","Subscriber","SafeSubscriber","rxSubscriberSymbol","_next","_error","_complete","_unsubscribeAndRecycle","_parentSubscriber","observerOrNext","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","_isScalar","_subscribe","toSubscriber","kt","_trySubscribe","promiseCtor","getPromiseCtor","Symbol_observable","operations","fns","identity","pipeFromArray","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","observers","subscriberIndex","thrownError","SubjectSubscriber","AnonymousSubject","copy","SubjectSubscription","work","Scheduler","SchedulerAction","AsyncScheduler","delegate","scheduled","flush","execute","shift","async","Action","pending","recycleAsyncId","requestAsyncId","setInterval","clearInterval","_execute","errorValue","errored","defaultThrottleConfig","leading","trailing","ThrottleTimeOperator","ThrottleTimeSubscriber","_hasTrailingValue","_trailingValue","throttled","dispatchNext","clearThrottle","DoOperator","TapSubscriber","_tapNext","noop","_tapError","_tapComplete","compare","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","y","predicate","thisArg","FilterSubscriber","w","screen","matchMedia","passiveOptionAccessed","passive","supportsPassiveEvents","onTouchStartInWindow","_c0","_c1","_c2","_c3","_c4","_c5","_c6","_c7","_c8","_c9","_c10","_c11","_c12","rf","t_r13","tooltipTemplate","valueTooltip","valueTooltipPlacement","legend","_c13","a0","SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template","SliderComponent_span_28_span_3_Template","selected","tooltip","tooltipPlacement","TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template","_c14","a1","a2","placement","TooltipWrapperComponent_ng_container_0_1_Template","ctx_r0","LabelType","Low","High","Floor","Ceil","TickValue","minRange","maxRange","pushRange","maxLimit","combineLabels","getLegend","getStepLegend","stepsArray","bindIndexForStepsArray","draggableRange","draggableRangeOnly","showSelectionBar","showSelectionBarEnd","showOuterSelectionBars","hidePointerLabels","hideLimitLabels","autoHideLimitLabels","readOnly","showTicks","showTicksValues","tickStep","tickValueStep","ticksArray","ticksTooltip","ticksValuesTooltip","vertical","getSelectionBarColor","getTickColor","getPointerColor","keyboardSupport","rotate","enforceStep","enforceRange","enforceStepsArray","noSwitching","onlyBindHandles","rightToLeft","reversedControls","boundPointerLabels","logScale","customValueToPosition","customPositionToValue","precisionLimit","selectionBarGradient","ariaLabelHigh","ariaLabelledByHigh","handleDimension","barDimension","animateOnMove","PointerType","Min","Max","array1","array2","minVal","maxVal","range","percent","modelValue","differences","abs","minDifferenceIndex","TouchEvent","touches","ResizeObserver","toPrecision","modulo","eventName","eventsSubscription","teardownCallback","attachPassiveEventListener","throttleInterval","attachEventListener","listener","EventListener","observerCallback","capture","Gt","isNullOrUndefined","detachEventListener","eventListener","ValueHelper","listen","SliderElementDirective","elemRef","changeDetectionRef","_position","_dimension","_alwaysHide","_vertical","_scale","_rotate","visibility","eventListeners","eventListenerHelper","EventListenerHelper","dimension","alwaysHide","setAlwaysHide","fe","isVisible","setVertical","setScale","setRotate","getRotate","setPosition","isRefDestroyed","calculateDimension","getBoundingClientRect","setDimension","dim","debounceInterval","onPassive","off","listenersToKeep","listenersToRemove","destroyed","hostVars","hostBindings","SliderHandleDirective","tabindex","ariaOrientation","ariaValueNow","ariaValueText","ariaValueMin","ariaValueMax","features","SliderLabelDirective","setValue","recalculateDimension","innerHTML","difference","lowLimit","highLimit","highValue","ModelValues","forceChange","NGX_SLIDER_CONTROL_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","useExisting","forwardRef","SliderComponent","valueChange","highValueChange","Options","userChangeStart","userChange","userChangeEnd","initHasRun","inputModelChangeSubject","inputModelChangeSubscription","outputModelChangeSubject","outputModelChangeSubscription","viewLowValue","viewHighValue","viewOptions","handleHalfDimension","maxHandlePosition","currentTrackingPointer","currentFocusPointer","firstKeyDown","touchId","dragging","Dragging","sliderElementVerticalClass","sliderElementAnimateClass","sliderElementWithLegendClass","sliderElementDisabledAttr","sliderElementAriaLabel","barStyle","minPointerStyle","maxPointerStyle","fullBarTransparentClass","selectionBarDraggableClass","ticksUnderValuesClass","intermediateTicks","ticks","onMoveEventListener","onEndEventListener","moving","resizeObserver","onTouchedCallback","onChangeCallback","manualRefresh","unsubscribeManualRefresh","manualRefreshSubscription","calculateViewDimensionsAndDetectChanges","triggerFocus","unsubscribeTriggerFocus","triggerFocusSubscription","pointerType","focusPointer","updateDisabledState","updateVerticalState","updateAriaLabel","ngAfterViewInit","applyOptions","subscribeInputModelChangeSubject","subscribeOutputModelChangeSubject","renormaliseModelValues","modelValueToViewValue","manageElementsStyle","calculateViewDimensions","addAccessibility","updateCeilLabel","updateFloorLabel","initHandles","manageEventsBindings","subscribeResizeObserver","currentValue","onChangeOptions","internalChange","unbindEvents","unsubscribeResizeObserver","unsubscribeInputModelChangeSubject","unsubscribeOutputModelChangeSubject","writeValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","setAriaLabel","onResize","ModelChange","FilterOperator","modelChange","applyInputModelChange","publishOutputModelChange","CompatibilityHelper","isResizeObserverAvailable","disconnect","unsubscribeOnMove","unsubscribeOnEnd","getPointerElement","minHandleElement","maxHandleElement","getCurrentTrackingValue","NaN","findStepIndex","viewValueToModelValue","viewValue","getStepValue","sliderValue","applyViewChange","userEventInitiated","normalisedModelChange","normaliseModelValues","normalisationChange","updateLowHandle","valueToPosition","updateHighHandle","updateSelectionBar","updateTicksScale","updateAriaAttributes","updateCombinedLabel","emitOutputs","emit","getChangeContext","normalisedInput","valueIndex","highValueIndex","roundStep","MathHelper","clampToRange","tempValue","previousModelValues","normalisedModelValues","previousOptionsInfluencingEventBindings","getOptionsInfluencingEventBindings","newOptionsInfluencingEventBindings","rebindEvents","areArraysEqual","resetSlider","applyFloorCeilOptions","applyStepsArrayOptions","minValue","refocusPointerIfNeeded","onPointerFocus","updateScale","floorLabelElement","ceilLabelElement","hideLabelsForTicks","minHandleLabelElement","maxHandleLabelElement","combinedLabelElement","selectionBarElement","leftOuterSelectionBarElement","rightOuterSelectionBarElement","updateRotate","bindEvents","getAllSliderElements","fullBarElement","ticksElement","handleWidth","getTicksArray","reverse","hasAtLeastOneLegend","newTicks","translation","tick","Tick","isTickSelected","isModuloWithinPrecisionLimit","getDisplayValue","numberOfValues","roundToPrecisionLimit","center","updateHandles","newPos","getHandleLabelPos","labelType","labelDimension","nearHandlePos","endOfBarPos","backgroundColor","updateFloorAndCeilLabelsVisibility","floorLabelHidden","ceilLabelHidden","isMinLabelAtFloor","isLabelBelowFloorLabel","isMinLabelAtCeil","isLabelAboveCeilLabel","isMaxLabelAtCeil","isCombinedLabelAtFloor","isCombinedLabelAtCeil","Dt","hideCeil","hideFloor","Li","floorPos","ceilPos","isSelectionBarFromRight","positionForRange","centerPosition","offset","reversed","backgroundImage","to","backgroundPosition","backgroundSize","color","isLabelOverlap","lowDisplayValue","highDisplayValue","combinedLabelValue","customStep","steppedDifference","linearValueToPosition","logValueToPosition","positionToValue","linearPositionToValue","logPositionToValue","getEventXY","targetTouchId","MouseEvent","clientY","clientX","touchIndex","identifier","getEventPosition","sliderElementBoundingRect","sliderPos","eventPos","getNearestHandle","distanceMin","distanceMax","onBarStart","onStart","bindMove","bindEnd","simulateImmediateMove","simulateImmediateEnd","onDragStart","stopPropagation","isTouchEvent","pointerElement","onMoveCallback","onDragMove","onMove","onEndCallback","onEnd","changedTouches","fromTick","touchForThisSlider","ve","positionTrackingHandle","onPointerBlur","onKeyboardEvent","onKeyUp","pointer","getKeyActions","valueRange","increaseStep","decreaseStep","increasePage","decreasePage","UP","DOWN","LEFT","RIGHT","PAGEUP","PAGEDOWN","HOME","END","actionValue","newMinValue","newMaxValue","positionTrackingBar","getMinValue","outOfBounds","isAbove","isRTL","getMaxValue","ceilLimit","floorLimit","floorHandleElement","ceilHandleElement","isOverCeilLimit","applyMinMaxLimit","applyPushRange","applyMinMaxRange","changeContext","ChangeContext","contentQueries","dirIndex","_t","hostAttrs","inputs","outputs","vars","consts","SliderComponent_span_28_Template","ɵngcc1","TooltipWrapperComponent","TooltipWrapperComponent_ng_container_0_Template","TooltipWrapperComponent_ng_container_1_Template","currentContext","MISSING_VALUE","idCounter","globalKey","Slot","context_1","slots","getValue","withValue","__proto__","saved","noContext","fnToStr","Function","previousComparisons","check","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","aIterator","entries","isMap","done","aKey","aValue","Uint8Array","byteLength","aCode","full","fromIndex","endsWith","nativeCodeSuffix","isDefinedKey","bSet","Cache","Infinity","defaultDispose","newest","oldest","getNode","clean","parentEntrySlot","toArray","collection","entryOrDep","emptySetPool","optionalMessage","Entry","parents","childValues","dirtyChildren","recomputing","mightBeDirty","rememberParent","recompute","assert","entry","forgetChildren","recomputeNewValue","maybeUnsubscribe","setDirty","maybeSubscribe","reportClean","setClean","valueGet","reallyRecompute","reportDirty","eachParent","forgetChild","dependOn","forgetDeps","reportDirtyChild","reportCleanChild","parentCount","parentWasClean","childValue","ot","valueCopy","valueIs","removeDirtyChild","dc","EntryMethods","depsByKey","dep_1","entryMethodName","m_1","keyTrie","makeDefaultMakeCacheKeyFunction","caches","originalFunction","dirtyKey","peekKey","forgetKey","getKey","defaultMakeData","weakness","makeData","getChildTrie","isObjRef","weak","strong","a3","a4","a5","a6","horizontal","small","navBarLocation","navBarLayout","wizardStep","step_r1","stepTitleTemplate","templateRef","stepTitle","stepSymbolTemplate","navigationSymbol","symbol","current","editing","completed","navigable","WizardNavigationBarComponent_li_1_ng_container_3_Template","WizardNavigationBarComponent_li_1_ng_container_4_Template","WizardNavigationBarComponent_li_1_ng_container_6_Template","WizardNavigationBarComponent_li_1_ng_container_7_Template","isCurrent","isEditing","isDone","isOptional","isCompleted","isNavigable","stepId","fontFamily","WizardStepSymbolDirective","WizardStepTitleDirective","WizardStep","initiallyCompleted","defaultSelected","canEnter","canExit","stepEnter","stepExit","enter","exit","canEnterStep","canTransitionStep","canExitStep","WizardCompletionStep","ɵWizardCompletionStep_BaseFactory","MovingDirection","Forwards","Backwards","Stay","canGoToStep","wizard","destinationIndex","hasStep","movingDirection","getMovingDirection","previous","canTransitionToStep","currentStep","getStepAtIndex","goToStep","preFinalize","postFinalize","navigationAllowed","wasCompleted","currentStepIndex","ensureCanReset","wizardSteps","defaultStepIndex","navigateBackward","navigateForward","destinationStep","defaultCompletionStep","WizardComponent","navBarDirection","_defaultStepIndex","disableNavigationBar","_navigation","ConfigurableNavigationMode","_wizardSteps","foundDefaultStep","getIndexOfStep","horizontalOrientation","verticalOrientation","ngAfterContentInit","wizardStepsQueryList","changedWizardSteps","updateWizardSteps","stepIndex","hasPreviousStep","hasNextStep","isLastStep","getIndexOfStepWithId","pe","goToPreviousStep","goToNextStep","ngContentSelectors","WizardComponent_aw_wizard_navigation_bar_0_Template","WizardComponent_aw_wizard_navigation_bar_3_Template","WizardNavigationBarComponent","encapsulation","numberOfWizardSteps","WizardNavigationBarComponent_li_1_Template","GoToStepDirective","WizardStepComponent","ɵWizardStepComponent_BaseFactory","finalize","emitter","isStepIndex","targetStep","isStepId","isStepOffset","stepOffset","onClick","NextStepDirective","PreviousStepDirective","DataTableDirective","vcr","displayTable","dt","dtInstance","resolvedDTOptions","rowCallback","applyNgPipeTransform","applyNgRefTemplate","ngPipeInstance","ngTemplateRef","pipeArgs","ngPipeArgs","rowFromCol","childNodes","rowVal","rowValAfter","pack","ar","__spreadArray","cellFromIndex","userData","adtData","createEmbeddedView","rootNodes","forRoot","whichProgress","ProgressBarComponent","disabledP","whichColor","degraded","ProgressBarComponent_ng_container_2_Template","ProgressBarComponent_ng_container_3_Template","crypto","getRandomValues","buf","Uint16Array","pad4","random4","num","ret","exports","isMergeableObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","emptyTarget","cloneUnlessOtherwiseSpecified","getOwnPropertySymbols","propertyIsEnumerable","getEnumerableOwnPropertySymbols","defaultArrayMerge","sourceIsArray","getKeys","propertyIsOnObject","propertyIsUnsafe","customMerge","mergeObject","all","guid","isGuid","validator","gen","createEmpty","out","equals","isEmpty","ERROR","WINDOW","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","process","versions","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","define","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","ArrayBuffer","HEX_CHARS","EXTRA","SHIFT","K","OUTPUT_TYPES","blocks","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","isView","createOutputMethod","outputType","is224","Sha256","createMethod","nodeWrap","eval","Buffer","algorithm","nodeMethod","createHash","digest","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","je","h0","h1","h2","h3","h4","h5","h6","h7","hBytes","finalized","hashed","oKeyPad","iKeyPad","inner","notString","lastByteIndex","hash","t1","ab","da","cd","g","h","hex","arrayBuffer","dataView","DataView","setUint32","innerHash","sha256","sha224","hmac","b64","lens","getLens","placeHoldersLen","validLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","tripletToBase64","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","te","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","require","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","func","setter","iteratee","accumulator","resIndex","baseIndexOf","comparator","initAccum","asciiSize","baseProperty","eachFunc","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","trimmedEndIndex","arrayMap","strSymbols","chrSymbols","placeholder","deburrLetter","basePropertyOf","escapeHtmlChar","chr","hasUnicode","lastIndex","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","uid","arrayProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","overArg","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","iterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","__data__","MapCache","ListCache","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","baseTimes","isIndex","baseRandom","shuffleSelf","copyArray","baseClamp","eq","baseAssignValue","objValue","baseEach","copyObject","skip","lower","upper","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","baseAssign","Ctor","cloneArrayBuffer","byteOffset","cloneDataView","cloneTypedArray","regexp","cloneRegExp","cloneSymbol","initCloneByTag","Stack","stacked","Rf","subValue","baseClone","getAllKeysIn","getAllKeys","arrayEach","assignValue","wait","arrayIncludes","isCommon","valuesLength","baseUnary","Ve","arrayIncludesWith","cacheHas","SetCache","outer","computed","valuesIndex","lodash","templateSettings","evaluate","interpolate","baseLodash","Hash","assocIndexOf","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","depth","isStrict","isFlattenable","baseFlatten","arrayPush","baseFor","createBaseFor","baseForRight","arrayFilter","castPath","toKey","keysFunc","symbolsFunc","isOwn","unmasked","getRawTag","objectToString","arrays","othLength","othIndex","maxLength","seen","baseGetTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","mapToArray","setToArray","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","baseMatchesProperty","baseMatches","isPrototype","isArrayLike","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","srcIndex","mergeFunc","safeGet","assignMergeValue","isTyped","nr","na","$s","br","Er","rh","toPlainObject","baseMergeDeep","baseMerge","iteratees","baseGet","getIteratee","comparer","baseSortBy","baseMap","criteria","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSet","baseIndexOfWith","indexes","baseUnset","setToString","overRest","arraySample","nested","baseSetData","Ko","baseSetToString","wa","constant","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","Vn","Jn","baseToString","createSet","seenIndex","updater","isDrop","baseSlice","arrayReduce","baseUniq","baseDifference","assignFunc","valsLength","isArrayLikeObject","stringToPath","castRest","baseRest","typedArray","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","isNew","Mt","initializer","arrayAggregator","baseAggregator","assigner","isIterateeCall","iterable","methodName","stringToArray","castSlice","deburr","thisBinding","findIndexFunc","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","getData","isLaziable","WRAP_ARY_FLAG","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","isFlip","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","reorder","toIteratee","baseInverter","baseToNumber","arrayFunc","chars","charsLength","baseRepeat","stringSize","toFinite","Y","baseRange","toNumber","wrapFunc","isCurry","setData","setWrapToString","precision","toInteger","pair","Po","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","isPlainObject","arrLength","arrStacked","arrValue","arraySome","baseGetAllKeys","otherFunc","baseIteratee","isKeyable","baseIsNative","Ht","stubArray","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","subString","differenceBy","differenceWith","intersection","mapped","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pull","pullAll","basePullAll","pullAt","baseAt","basePullAt","union","unionBy","unionWith","unzip","without","xor","baseXor","xorBy","xorWith","zip","zipWith","unzipWith","interceptor","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","invokeMap","baseInvoke","keyBy","partition","sortBy","baseOrderBy","createWrap","bindKey","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","maxing","time","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","baseDelay","resolver","memoized","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","createRelationalOperation","baseGt","gte","baseIsArguments","lt","baseLt","lte","isString","iteratorToArray","remainder","baseTrim","isBinary","createAssigner","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","hasPath","baseHasIn","invert","createInverter","invertBy","Ar","invoke","arrayLikeKeys","baseKeys","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","camelCase","createCompounder","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","createCaseFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","createFlow","flowRight","methodOf","baseFunctions","chain","over","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","createRange","rangeRight","createMathOperation","augend","addend","createRound","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","before","castArray","chunk","cond","conforms","baseConformsTo","baseConforms","properties","curry","curryRight","debounce","drop","dropRight","dropRightWhile","baseWhile","dropWhile","toLength","baseFill","baseFilter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","mixin","negate","nthArg","baseNth","omitBy","pickBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","arraySampleSize","baseSampleSize","setWith","shuffle","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","separator","spread","tail","takeRight","takeRightWhile","throttle","toPath","isArrLike","Is","unary","uniq","uniqBy","uniqWith","unset","baseUpdate","castFunction","updateWith","valuesIn","zipObject","baseZipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeepWith","cloneWith","conformsTo","defaultTo","baseEvery","findKey","baseFindKey","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","baseHas","inRange","baseInRange","isBoolean","isElement","isEqual","isEqualWith","isInteger","isMatchWith","isNumber","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","baseExtremum","maxBy","mean","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","createPadding","padEnd","radix","floating","baseReduce","reduceRight","arrayReduceRight","repeat","runInContext","sample","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","escapeStringChar","times","toLower","toSafeInteger","toUpper","charsStartIndex","charsEndIndex","trimEnd","trimStart","truncate","omission","search","newEnd","unescape","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","view","getView","iterLength","baseWrapperValue","iterIndex","commit","wrapped","Fn","_placeholder","_r11","item_r8","restoredCtx","onItemClick","k_r9","_settings","itemsShowLimit","itemShowRemaining","_r13","toggleSelectAll","isAllItemsSelected","isLimitSelectionReached","Fe","unSelectAllText","selectAllText","_r15","onFilterTextChange","searchPlaceholderText","_r20","item_r17","isSelected","noFilteredDataAvailablePlaceholderText","noDataAvailablePlaceholderText","ListFilterPipe","applyFilter","ɵpipe","pure","DROPDOWN_CONTROL_VALUE_ACCESSOR","MultiSelectComponent","listFilterPipe","_data","selectedItems","isDropdownOpen","_sourceDataType","_sourceDataFields","ListItem","defaultSettings","singleSelection","idField","textField","disabledField","enableCheckAll","allowSearchFilter","limitSelection","clearSearchFilter","closeDropDownOnSelection","showSelectedItemsAtTop","defaultOpen","allowRemoteDataSearch","onFilterChange","onDropDownClose","onSelect","onDeSelect","onSelectAll","onDeSelectAll","firstItem","getFields","found","allowAdd","removeSelected","addSelected","closeDropdown","onTouched","clickedItem","filteredItems","itemDisabledCount","showButton","emittedValue","itemSel","objectify","Number","toggleDropdown","evt","inputData","MultiSelectComponent_span_3_Template","MultiSelectComponent_span_4_Template","MultiSelectComponent_span_6_Template","MultiSelectComponent_li_10_Template","MultiSelectComponent_li_11_Template","MultiSelectComponent_li_13_Template","MultiSelectComponent_li_15_Template","MultiSelectComponent_li_17_Template","ClickOutsideDirective","ɵngcc2","pipes","Input","Output","HostListener","clickOutside","targetElement","clickedInside","NgMultiSelectDropDownModule_1","Reflect","exporter","makeExporter","supportsSymbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","supportsCreate","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","usePolyfill","REFLECT_METADATA_USE_MAP_POLYFILL","_Map","cacheSentinel","arraySentinel","MapIterator","_index","_keys","_values","_selector","throw","return","_cacheKey","_cacheIndex","_find","getEntry","insert","CreateMapPolyfill","_Set","_map","CreateSetPolyfill","Metadata","rootKey","CreateUniqueKey","table","GetOrCreateWeakMapTable","CreateUUID","msCrypto","FillRandomBytes","GenRandomBytes","byte","CreateWeakMapPolyfill","O","Create","targetMetadata","IsUndefined","metadataMap","MetadataKey","OrdinaryHasOwnMetadata","OrdinaryGetPrototypeOf","IsNull","OrdinaryHasMetadata","GetOrCreateMetadataMap","argument","ToBoolean","OrdinaryGetOwnMetadata","OrdinaryGetMetadata","MetadataValue","ownKeys","OrdinaryOwnMetadataKeys","parentKeys","OrdinaryMetadataKeys","ownKeys_1","parentKeys_1","GetMethod","IsCallable","IsObject","GetIterator","IteratorStep","nextValue","IteratorValue","IteratorClose","PreferredType","Type","hint","exoticToPrim","toString_1","toString_2","OrdinaryToPrimitive","ToPrimitive","IsSymbol","ToString","V","iterResult","prototypeProto","__","decorators","propertyKey","IsArray","IsConstructor","decorated","decorator","DecorateConstructor","descriptor","DecorateProperty","ToPropertyKey","metadataKey","metadataValue","IsPropertyKey","OrdinaryDefineOwnMetadata","_throwIfClosed","isObserver","isSubscription","isSubscriber","errorContext","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","createErrorClass","currentObservers","observed","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","U","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","errorNotification","_bind","partialObserver","handleUnhandledError","ConsumerObserver","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","_hasParent","_addParent","_removeParent","onUnhandledError","useDeprecatedNextContext","popScheduler","popResultSelector","observables","argsArgArrayOrObject","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","combineLatestInit","createObject","mapOneOrManyArgs","executeSchedule","mergeAll","concatAll","observableFactory","remainingCompletions","remainingEmissions","sourceIndex","asyncIterator","isInteropObservable","subscribeOn","observeOn","scheduleObservable","scheduleArray","isPromise","schedulePromise","isAsyncIterable","scheduleAsyncIterable","isIterable","Symbol_iterator","scheduleIterable","isReadableStreamLike","readableStreamLikeToAsyncGenerator","scheduleReadableStreamLike","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","obs","fromInteropObservable","fromArrayLike","promise","fromPromise","fromAsyncIterable","fromIterable","readableStream","fromReadableStreamLike","asyncIterable","asyncIterable_1","asyncIterable_1_1","__asyncValues","e_1_1","period","asyncScheduler","concurrent","popNumber","I","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","onNext","onComplete","onFinalize","shouldUnsubscribe","durationSelector","lastValue","endDuration","cleanupDuration","handledResult","syncUnsub","activeTask","lastTime","targetTime","emitWhenIdle","delayDurationSelector","subscriptionDelay","delayWhen","mapTo","defaultCompare","previousKey","currentKey","hasDefaultValue","defaultIfEmpty","throwIfEmpty","EmptyError","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeInternals","hasSeed","emitOnNext","emitBeforeComplete","hasState","scanInternals","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","connection","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","conn","dest","handleReset","configOrBufferSize","windowTime","bufferSize","share","innerSubscriber","innerIndex","outerIndex","inclusive","tapObserver","isUnsub","duration$","sendValue","endThrottling","send","cleanupThrottling","startThrottle","defaultErrorFactory","TimeoutError","schedulerArg","with","_with","timeoutErrorFactory","meta","originalSourceSubscription","timerSubscription","otherValues","ready","intervalProvider","_scheduler","_delay","schedulerActionCtor","_active","_scheduled","animationFrameProvider","cancelAnimationFrame","animationFrameScheduler","flushId","AsyncAction","resolved","nextHandle","activeHandles","Immediate","setImmediate","findAndClearHandle","clearImmediate","immediateProvider","asapScheduler","queueScheduler","getSymbolIterator","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","__asyncGenerator","getReader","__await","releaseLock","hasLift","liftedSource","callOrApply","_subs","qwerty","A","B","E","F","G","H","J","M","N","Q","R","S","W","X","q","r","dvorak","keypad","mac_keypad","scoring","default_feedback","warning","suggestions","get_feedback","sequence","extra_feedback","longest_match","get_match_feedback","unshift","is_sole_match","get_dictionary_match_feedback","layout","graph","turns","base_token","regex_name","dictionary_name","l33t","guesses_log10","rank","START_UPPER","ALL_UPPER","frequency_lists","passwords","english_wikipedia","female_names","surnames","us_tv_and_film","male_names","matching","time_estimates","user_inputs","attack_times","sanitized_inputs","set_user_input_dictionary","omnimatch","most_guessable_match_sequence","calc_time","estimate_attack_times","guesses","DATE_SPLITS","GRAPHS","L33T_TABLE","RANKED_DICTIONARIES","REGEXEN","adjacency_graphs","build_ranked_dict","ordered_list","len1","recent_year","lst","lst2","chr_map","mod","sorted","m1","m2","matchers","dictionary_match","reverse_dictionary_match","l33t_match","spatial_match","repeat_match","sequence_match","regex_match","date_match","_ranked_dictionaries","password_lower","ranked_dict","ref1","ref2","matched_word","reversed_password","relevant_l33t_subtable","letter","password_chars","relevant_subs","subs","subtable","enumerate_l33t_subs","dedup","helper","sub_dict","sub_dicts","assoc","deduped","members","dup_l33t_index","first_key","l33t_chr","next_subs","rest_keys","sub_alternative","sub_extension","_l33t_table","match_sub","subbed_chr","subbed_password","sub_display","_graphs","graph_name","spatial_match_helper","SHIFTED_RX","adj","adjacents","cur_char","cur_direction","found_direction","last_direction","shifted_count","base_analysis","greedy","greedy_match","lazy","lazy_anchored","lazy_match","base_guesses","base_matches","repeat_count","MAX_DELTA","delta","last_delta","sequence_name","sequence_space","ascending","_regexen","rx_match","best_candidate","candidate","candidates","distance","dmy","maybe_date_no_separator","maybe_date_with_separator","min_distance","ref3","ref4","ref5","ref6","ref7","ref8","ref9","map_ints_to_dmy","year","REFERENCE_YEAR","month","day","is_submatch","len3","other_match","ints","int","over_12","over_31","possible_year_splits","under_1","map_ints_to_dm","two_to_four_digit_year","calc_average_degree","average","neighbors","nCk","log10","log2","factorial","_exclude_additive","bruteforce_update","make_bruteforce_match","matches_by_j","optimal","optimal_match_sequence","unwind","pi","competing_l","estimate_guesses","last_m","results1","candidate_g","candidate_l","min_guesses","bruteforce","bruteforce_guesses","dictionary","dictionary_guesses","spatial","spatial_guesses","repeat_guesses","sequence_guesses","regex_guesses","date_guesses","POSITIVE_INFINITY","MAX_VALUE","MIN_SUBMATCH_GUESSES_SINGLE_CHAR","MIN_SUBMATCH_GUESSES_MULTI_CHAR","first_chr","MIN_YEAR_SPACE","getFullYear","char_class_bases","year_space","alpha_lower","alpha_upper","alpha","alphanumeric","digits","symbols","KEYBOARD_AVERAGE_DEGREE","KEYPAD_AVERAGE_DEGREE","KEYBOARD_STARTING_POSITIONS","KEYPAD_STARTING_POSITIONS","shifted_variations","uppercase_variations","l33t_variations","END_UPPER","ALL_LOWER","variations","chrs","possibilities","subbed","unsubbed","crack_times_display","crack_times_seconds","scenario","online_throttling_100_per_hour","online_no_throttling_10_per_second","offline_slow_hashing_1e4_per_second","offline_fast_hashing_1e10_per_second","display_time","guesses_to_score","seconds","base","display_num","display_str","minute","Be","qt","qe","trys","ft","Ae","AUTO_STYLE","timings","steps","stateChangeExpr","expr","animation","_onDoneFns","_onStartFns","_onDestroyFns","_started","_destroyed","_finished","parentPlayer","_onFinish","onDone","onDestroy","hasStarted","_onStart","triggerMicrotask","scheduleMicroTask","restart","finish","getPosition","triggerCallback","phaseName","methods","_players","players","doneCount","destroyCount","startCount","player","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","newPlayerIsLongest","beforeDestroy","ɵPRE_STYLE","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","_pressedLetters","tabOut","QueryList","newIndex","itemArray","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","inputString","_getItemsArray","getLabel","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","onKeydown","isModifierAllowed","modifiers","modifier","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","setFirstItemActive","setLastItemActive","toLocaleUpperCase","ZERO","NINE","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","_origin","setFocusOrigin","InteractivityChecker","offsetWidth","getClientRects","hasGeometry","getComputedStyle","isTabbable","frameElement","getFrameElement","ownerDocument","defaultView","getWindow","getTabIndexValue","tabIndexValue","WEBKIT","IOS","inputType","isPotentiallyTabbableIOS","FIREFOX","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","_element","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","_createAnchor","parentNode","insertBefore","nextSibling","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","querySelectorAll","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","tabbableChild","ELEMENT_NODE","anchor","isEnabled","toggleAnchors","isStable","onStable","FocusTrapFactory","deferCaptureElements","FocusTrap","offsetX","offsetY","touch","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","modalityEventListenerOptions","normalizePassiveListenerOptions","InputModalityDetector","_mostRecentTarget","_modality","_lastTouchMs","_onKeydown","_getEventTarget","_onMousedown","isFakeMousedownFromScreenReader","_onTouchstart","isFakeTouchstartFromScreenReader","modalityDetected","modalityChanged","mostRecentModality","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_liveElement","_createLiveElement","announce","politeness","_previousTimeout","_currentPromise","_currentResolve","elementClass","previousElements","getElementsByClassName","liveEl","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","checkChildren","coerceElement","rootNode","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","_info","_getWindow","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","toggle","isFromInteraction","_originTimeoutId","relatedTarget","Node","_emitOrigin","rootNodeFocusListeners","takeUntil","modality","CdkMonitorFocus","cdkFocusChange","_monitorSubscription","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","getHighContrastMode","testElement","documentWindow","computedStyle","computedColor","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","highContrastModeDetector","DIR_DOCUMENT","inject","RTL_LOCALE_PATTERN","htmlDir","rawValue","language","_resolveDirectionality","fallbackValue","_isNumberValue","elementOrRef","ElementRef","connect","applyChanges","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","currentIndex","previousIndex","insertContext","move","detach","viewCacheSize","_viewCache","_insertView","_detachAndCacheView","_moveView","viewArgsFactory","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","_multiple","initiallySelectedValues","_emitChanges","_selection","_deselectedToEmit","_selectedToEmit","changed","_markSelected","_selected","_verifyValueAssignment","_emitChangeEvent","deselect","_unmarkSelected","_unmarkAll","isMultipleSelection","added","removed","UniqueSelectionDispatcher","_listeners","registered","_VIEW_REPEATER_STRATEGY","BACKSPACE","SPACE","PAGE_UP","PAGE_DOWN","altKey","shiftKey","ctrlKey","metaKey","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_matchMedia","noopMatchMedia","BLINK","sheet","insertRule","createEmptyStyleRule","media","BreakpointObserver","_mediaMatcher","_zone","_queries","_destroySubject","isMatched","queries","coerceArray","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","breakpoints","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","MutationObserverFactory","MutationObserver","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","stream","_observeElement","_unobserveElement","mutations","characterData","childList","subtree","CdkObserveContent","_contentObserver","_disabled","_currentSubscription","coerceBooleanProperty","_debounce","scrollBehaviorSupported","supportsScrollBehavior","_viewportRuler","_previousHTMLStyles","_isEnabled","enable","_canBeEnabled","_previousScrollPosition","getViewportScrollPosition","coerceCssPixelValue","disable","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","scroll","viewport","getViewportSize","scrollHeight","scrollWidth","_scrollDispatcher","_scrollSubscription","_detach","scrolled","threshold","_initialScrollPosition","scrollPosition","scrollContainers","containerBounds","scrollContainerRect","overlayRect","overlayElement","isElementScrolledOutsideView","ScrollStrategyOptions","NoopScrollStrategy","CloseScrollStrategy","BlockScrollStrategy","RepositionScrollStrategy","configKeys","connectionPair","scrollableViewProperties","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_keydownEvents","_outsidePointerEvents","_positionStrategy","backdropElement","hostElement","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","attachments","outsidePointerEvents","updatePositionStrategy","sizeConfig","setDirection","getDirection","updateScrollStrategy","enablePointer","pointerEvents","showingClass","backdropToDetach","_backdropTimeout","cssClasses","isAdd","OverlayContainer","_containerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","boundingBoxClass","cssUnitPattern","connectedTo","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","containerRect","flexibleFits","fallback","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","margin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","originX","startX","_isRtl","endX","originY","overlayStartX","overlayStartY","overlayX","vt","overlayY","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","horizontalFit","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","St","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","ConnectedOverlayPositionChange","elements","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","De","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","clientHeight","horizontalStyleProperty","clientWidth","originBounds","overlayBounds","scrollContainerBounds","scrollable","getElementRef","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentOverflow","axis","clientRect","wrapperClass","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginTop","marginBottom","marginRight","OverlayPositionBuilder","GlobalPositionStrategy","flexibleConnectedTo","FlexibleConnectedPositionStrategy","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_addEventListeners","_cursorOriginalValue","cursor","nextUniqueId","_componentFactoryResolver","_positionBuilder","_directionality","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","OverlayRef","_appRef","ApplicationRef","DomPortalOutlet","i5","i6","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","CdkConnectedOverlay","scrollStrategyFactory","_dir","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","_scrollStrategyFactory","_updatePositionStrategy","lockPosition","_attachOverlay","_detachOverlay","_buildConfig","_createPositionStrategy","currentPosition","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","hasV8BreakIterator","Intl","v8BreakIterator","shadowDomIsSupported","Platform","_platformId","isPlatformBrowser","EDGE","TRIDENT","chrome","CSS","ANDROID","PLATFORM_ID","supportsPassiveEventListeners","scrollToFunction","createShadowRoot","attachShadow","_supportsShadowDom","getRootNode","ShadowRoot","shadowRoot","newActiveElement","composedPath","__karma__","jasmine","jest","Mocha","_attachedHost","setAttachedHost","Portal","_attachedPortal","DomPortal","_invokeDisposeFn","setDisposeFn","_disposeFn","outletElement","_defaultInjector","anchorNode","createComment","replaceChild","componentFactory","resolveComponentFactory","componentRef","createComponent","attachView","hostView","viewCount","detachView","_getComponentRootNode","viewContainer","viewRef","CdkPortal","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","deregister","scrollableReference","auditTimeInMs","_addGlobalListener","auditTime","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","scrollableElement","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","scrollLeft","innerWidth","innerHeight","_DOM","PlatformLocation","historyGo","relativePosition","ɵɵinject","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_init","_history","history","getBaseHrefFromDOM","getDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","protocol","pathname","newPath","pushState","supportsState","replaceState","createBrowserPlatformLocation","slashes","pathEndIdx","platformLocation","provideLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","HashLocationStrategy","platformStrategy","_subject","_urlChangeListeners","_platformStrategy","browserBaseHref","_stripIndexHtml","ev","isCurrentPathEqualTo","baseHref","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onThrow","onReturn","createLocation","CURRENCIES_EN","ADP","AFN","ALL","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RUR","RWF","SBD","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Long","Full","Group","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","locale","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","hours","minutes","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","format","timezone","createDate","parsedNb","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","ms","isoStringToDate","namedFormat","part","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","reverseValue","setMinutes","getMinutes","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","newDate","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","getNamedFormat","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","minusSign","negWrap","neg","strNum","getMonth","getDate","getHours","getSeconds","getDay","getDatePart","milliseconds","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","padNumber","extended","formStyle","months","getLocaleMonthNames","days","getLocaleDayNames","currentHours","currentMinutes","rules","checkFullData","rule","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","getDateTranslation","datetime","monthBased","nbDaysBefore1stDayOfMonth","today","thisThurs","getThursdayThisWeek","firstThurs","firstDayOfYear","THURSDAY","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","parseNumber","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","Jt","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","roundNumber","lgSize","gSize","negPre","negSuf","posPre","posSuf","patternParts","positive","negative","positiveParts","integer","fraction","ch","$i","trunkLen","cookieStr","encodeURIComponent","cookie","eqIndex","cookieName","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_renderer","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","ngDoCheck","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","removeClass","ngForOf","even","odd","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","_applyChanges","NgForOfContext","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","_templateRef","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","useDefault","NgSwitchCase","_view","SwitchView","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","unit","setStyle","removeStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ɵRuntimeError","createSubscription","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","formatDate","LOCALE_ID","DecimalPipe","_locale","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","formatNumber","strToNumber","CurrencyPipe","_defaultCurrencyCode","currencyCode","currency","getLocaleCurrencies","symbolNarrow","getCurrencySymbol","getNumberOfCurrencyDigits","formatCurrency","DEFAULT_CURRENCY_CODE","PLATFORM_BROWSER_ID","platformId","ViewportScroller","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","pageXOffset","pageYOffset","scrollToPosition","scrollToAnchor","elSelected","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","findAnchorFromDocument","scrollToElement","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","rect","scrollRestorationDescriptor","getScrollRestorationProperty","normalizedNames","lazyUpdate","ke","lazyInit","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","toDelete","de","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","updates","cloneFrom","encoder","HttpUrlEncodingCodec","fromString","fromObject","rawParams","codec","eqIdx","paramParser","le","appendAll","eKey","HttpParams","valueToString","Blob","third","fourth","HttpContext","urlWithParams","qIdx","serializeBody","isBlob","isFormData","URLSearchParams","isUrlSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpRequest","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","defaultStatus","defaultStatusText","ok","HttpResponseBase","HttpHeaderResponse","HttpResponse","HttpClient","events$","concatMap","res$","jsonp","callbackParam","addBody","HttpHandler","foreignDocument","NoopInterceptor","nextRequestId","JsonpClientBackend","callbackMap","resolvedPromise","nextCallback","src","finished","cleanup","removeChild","HttpErrorResponse","removeListeners","script","implementation","createHTMLDocument","adoptNode","JsonpCallbackContext","JsonpInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","xhr","build","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","responseText","bt","originalBody","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","partialText","onUpProgress","upload","readyState","DONE","abort","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfCookieExtractor","platform","lastCookieString","parseCount","getToken","cookieString","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpXsrfTokenExtractor","HttpInterceptingHandler","backend","interceptors","HttpInterceptorHandler","HttpBackend","HttpClientXsrfModule","withOptions","jsonpCallbackContext","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","__forward_ref__","forwardRefFn","isForwardRef","formatRuntimeError","renderStringify","injectorName","injectorDetails","RuntimeError","stringifyForError","actual","msg","expected","comparison","opts","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","Default","Host","_injectImplementation","impl","notFoundValue","flags","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","None","ShadowDom","__globalThis","globalThis","__window","__self","WorkerGlobalScope","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","componentDefinition","noSideEffects","declaredInputs","providersResolver","exportAs","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","feature","pipeTypes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","scope","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","firstChange","isFirstChange","NgOnChangesFeatureImpl","definition","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","SimpleChange","ɵɵNgOnChangesFeature","ngInherit","domRendererFactory3","rendererType","getDocument","lView","unwrapRNode","nodeIndex","slotValue","isLView","lContainer","amount","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","viewToRestore","contextLView","currentTNode","getCurrentTNodePlaceholderOk","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","currentDirectiveIndex","setCurrentDirectiveIndex","tData","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","inI18n","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","getTNode","namespaceHTMLInternal","directiveStart","directiveEnd","lifecycleHooks","directiveDef","ngAfterContentChecked","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","hooks","callHooks","initPhase","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","isInitHook","callHook","hook","directive","indexWithintInitPhase","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","attrs","isProc","isProceduralRenderer","namespaceURI","attrName","attrVal","setAttributeNS","isAnimationProp","setProperty","marker","dst","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","parentLocation","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","oldValue","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","footer","declarationViewOffset","lViewCursor","tViewType","bloomHash","BLOOM_SIZE","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","tokenId","createNodeInjector","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","Pe","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isComponentDef","NodeInjectorFactory","isFactory","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","propName","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","parameters","ngMetadataName","annotationCls","additionalProcessing","PropDecoratorFactory","decoratorInstance","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","deepForEach","keyValueArray","keyValueArrayIndexOf","value1","value2","arrayInsert2","middle","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE$1","_currentInjector","former","getInjectImplementation","injectInjectorOnly","flag","getInjectFlag","Inject","attachInjectFlag","makeParamDecorator","policy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy$1","SafeValueImpl","getTypeName","actualType","getSanitizationBypassType","trustedHtml","SafeHtmlImpl","trustedStyle","SafeStyleImpl","trustedScript","SafeScriptImpl","trustedUrl","SafeUrlImpl","trustedResourceUrl","SafeResourceUrlImpl","inertDocumentHelper","getInertBodyElement","trustedHTMLFromString","defaultDoc","inertDocument","inertHtml","inertBodyElement","templateEl","inertBody","documentMode","stripCustomNsAttrs","elAttrs","attrib","childNode","SAFE_URL_PATTERN","DATA_URL_PATTERN","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","sanitizeChildren","traverseContent","startElement","TEXT_NODE","nodeValue","endElement","checkClobberedElement","tagName","elAttr","_sanitizeUrl","srcset","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","unsafeHtmlInput","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","SanitizingHtmlSerializer","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","HTML","STYLE","SCRIPT","URL","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","sanitize","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","unsafeResourceUrl","trustedScriptURLFromStringBypass","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","_console","_findOriginalError","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","getOriginalError","defaultScheduler","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","_icuContainerIterate","isLContainer","getNearestLContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","isHostElement","nativeParent","nativeParentNode","nativeRemoveChild","nativeRemoveNode","destroyNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","namespace","namespaceUri","getNamespaceUri","createElementNS","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","mt","processCleanups","getNativeByTNode","getClosestRElement","isMove","_getInsertInFrontOfRNodeWithI18n","childRNode","childTNode","parentRNode","getParentRElement","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","projectionNodes","getProjectionNodes","getLViewParent","componentView","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isProjection","rawSlotValue","attachPatchData","applyNodes","nextRNode","icuContainerIterate","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","componentNode","cssText","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","queryStartIdx","directiveDefIdx","setCurrentQueryIndex","tHostNode","resetPreOrderHookFlags","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","createTNodeAtIndex","isInI18nBlock","getCurrentParentTNode","setCurrentTNode","numSlotsToAlloc","initialValue","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","components","hostLView","renderComponent$1","renderChildComponents","incompleteFirstPass","leaveView","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","creationModeIsActive","isCreationMode","begin","renderView","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","Lr","localRefs","hasDirectives","registry","isNodeMatchingSelectorList","diPublicInInjector","qi","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","ngDevMode","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","addToViewTree","createLView","strValue","setElementAttribute","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","currentDef","unwrapLView","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","NullInjector","defType","additionalProviders","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","R3Injector","getNullInjector","records","injectorDefTypes","dedupStack","provider","processProvider","injectorDef","processInjectorType","makeRecord","assertNotDestroyed","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","catchInjectorError","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","createInjector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","is","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","elementAttributeInternal","getSelectedTNode","ɵɵattribute","v0","v1","getBindingIndex","incrementBindingIndex","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","comment","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","load","getContextLView","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","getNamespace$1","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","getElementDepthCount","increaseElementDepthCount","executeContentQueries","ɵɵelementStart","setCurrentTNodeAsNotParent","decreaseElementDepthCount","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementEnd","ɵɵelement","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","ɵɵelementContainer","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","ɵɵlistener","loadComponentRenderer","getCurrentDirectiveDef","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","returnValue","nestingLevel","walkUpViews","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","interpolation2","ɵɵpropertyInterpolate2","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","consumeClassToken","consumeWhitespace","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","keyValueArraySet","classStringParser","resetParserState","parseClassNameNext","parseClassName","getLastParsedKey","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","hn","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","be","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","removeProperty","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","createText","createTextNode","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","ɵɵtextInterpolate2","v2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","LocaleDataIndex","PluralCase","ng","common","locales","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","ExtraData","DEFAULT_LOCALE_ID","LOCALE_ID$1","lInjectablesBlueprint","resolveProvider","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","viewProviders","processProvidersFn","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","_NullComponentFactoryResolver","createElementRef","injectElementRef","Renderer2","nodeAtIndex","getOrCreateRenderer2","injectRenderer2","Sanitizer","major","minor","Version","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","_cdRefInjectingView","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","reattach","detectChangesInternal","checkNoChanges","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","appRef","ViewRef$1","detectChangesInRootView","componentDef","ComponentFactory","nonMinified","templateName","ComponentFactory$1","componentType","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","rootViewInjector","createChainedInjector","RendererFactory2","hostRenderer","elementName","hostRNode","elementOrSelector","selectRootElement","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","createRootContext","rootTView","rootLView","tElementNode","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","rootTNode","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","RootViewRef","modules","NgModuleRef$1","_parent","_bootstrapComponents","destroyCbs","ComponentFactoryResolver","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory$1","moduleType","assertSameOrNotExisting","recurse","registerNgModuleType","parentInjector","NgModuleRef","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","bindingRoot","getPureFunctionReturnValue","pureFunction3Internal","pureFunction4Internal","exp5","exp6","bindingUpdated4","exp7","returnValueIndex","lastReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","v3","v4","isAsync","__isAsync","nextFn","errorFn","completeFn","_wrapInTimeout","_results","_emitDistinctChangesOnly","_changesDetected","_changes","symbolIterator","resultsTree","identityAccessor","newResultFlat","valueA","valueB","arrayEquals","notifyOnChanges","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","declaredComponentLView","insertedLContainer","trackMovedView","insertView","parentNativeNode","addViewToContainer","getOrCreateViewRefs","viewRefsArr","wasDetached","commentNode","nativeNextSibling","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","track","tquery","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","createTQuery","TQueryMetadata_","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","loadQueryInternal","makePropDecorator","bindingPropertyName","ApplicationInitStatus","appInits","initialized","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","$localize","getGlobalLocale","ngModuleFactory","componentFactories","Compiler","compileModuleSync","NgModuleFactory","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","ModuleWithComponentFactories","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","NgZone","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","findProviders","using","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","elem","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","getter","_NoopGetTestability","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_ON_DESTROY","parentPlatformFactory","desc","extraProviders","getPlatform","platformProviders","PlatformRef","inits","initFn","createPlatform","createPlatformInjector","requiredToken","assertPlatform","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","ngZoneOption","extra","NoopNgZone","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","assertDefined","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListener","objs","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","testabilityRegistry","_loadComponent","listeners","_devMode","_runModeLocked","ChangeDetectorRef","injectChangeDetectorRef","isPipe","createViewRef","supports","isListLikeIterable","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_head","_tail","atOrAfterIndex","duplicates","_DuplicateItemRecordList","recordList","moveOffset","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","DefaultIterableDifferFactory","copied","defaultIterableDiffersFactory","KeyValueDiffers","DefaultKeyValueDifferFactory","defaultKeyValueDiffersFactory","kv","platformCore","createPlatformFactory","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","BaseControlValueAccessor","BuiltInControlValueAccessor","Et","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","_handleInput","_compositionStart","_compositionEnd","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","isEmptyInputValue","emailValidator","hasValidLength","actualLength","minLengthValidator","maxlength","maxLengthValidator","patternValidator","validators","composeAsync","nullValidator","regexStr","requiredPattern","actualValue","ɵisObservable","arrayOfErrors","validate","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","_onDestroyCallbacks","pristine","untouched","statusChanges","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","AbstractControlDirective","valueAccessor","formDirective","_cd","NgControlStatus","AbstractControlStatus","NgControl","NgControlStatusGroup","ControlContainer","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","markAsTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","registerOnValidatorChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","viewModel","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","Tt","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","isFormControl","isFormGroup","isFormArray","FormArray","isGroup","_forEachChild","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","emitEvent","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","controlToFind","Mn","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","AbstractControl","pickValidators","pickAsyncValidators","_onChange","_applyFormState","initialValueIsDefault","emitViewToModelChange","patchValue","removeListItem","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","assertAllValuesPresent","assertControlPresent","_reduceChildren","subtreeUpdated","updated","_reduceValue","initValue","_registerControl","removeAt","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","getControl","addFormGroup","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","syncPendingControls","onReset","formControlBinding$1","NgModel","_registered","selectValueAccessor","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","standalone","_checkParentType","disabledValue","controlPath","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RadioControlRegistryModule","RANGE_VALUE_ACCESSOR","RangeValueAccessor","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","cleanUpControl","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","controlNameBinding","FormControlName","_ngModelWarningConfig","_added","_ngModelWarningSent","_ngModelWarningSentOnce","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","compareWith","valueString","_buildValueString$1","_getOptionId","_getOptionValue","_registerOption","_extractId$1","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","opt","_setSelected","selectedOptions","_extractId","ɵNgSelectMultipleOption","_buildValueString","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","toFloat","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","toBoolean","PATTERN_VALIDATOR","PatternValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","BUTTON_HOST_ATTRIBUTES","_MatButtonBase","mixinDisabled","mixinDisableRipple","MatButton","isRoundButton","_hasHostAttributes","isIconButton","_getHostElement","_isRippleDisabled","disableRipple","attribute","MatRipple","MatCardContent","MatCardActions","align","MatCard","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","defaultColor","_color","colorPalette","_disableRipple","defaultTabIndex","_tabIndex","stateChanges","errorState","updateErrorState","oldState","newState","errorStateMatcher","_defaultErrorStateMatcher","isErrorState","ngControl","_parentFormGroup","_parentForm","MAT_DATE_LOCALE","_localeChanges","localeChanges","getValidDateOrNull","isDateInstance","setLocale","compareDate","getYear","sameDate","firstValid","secondValid","clampDate","MAT_DATE_FORMATS","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","DateAdapter","matDateLocale","useUtcForDisplay","getDayOfWeek","getMonthNames","dtf","timeZone","_format","getDateNames","getDayOfWeekNames","weekday","getYearName","getFirstDayOfWeek","getNumDaysInMonth","_createDateWithOverflow","displayFormat","addCalendarYears","years","addCalendarMonths","addCalendarDays","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","MAT_NATIVE_DATE_FORMATS","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","NativeDateModule","MatLine","setClass","Nt","fadeOut","fadeOutRipple","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveEventOptions","pointerDownEvents","pointerUpEvents","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","centered","radius","distX","distY","sqrt","distanceToFurthestCorner","ripple","transitionDuration","getPropertyValue","enforceStyleRecalculation","rippleRef","RippleRef","persistent","_mostRecentTransientRipple","_runTimeoutOutsideZone","isMostRecentTransientRipple","wasActive","rippleEl","fadeOutAll","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_registerEvents","handleEvent","_onTouchStart","_onPointerUp","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","rippleConfig","terminateOnPointerUp","eventTypes","MAT_RIPPLE_GLOBAL_OPTIONS","globalOptions","_globalOptions","_rippleRenderer","RippleRenderer","_setupTriggerEventsIfEnabled","_trigger","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","isUserInput","optionIndex","optionGroups","optionsArray","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","MatFormFieldControl","MAT_FORM_FIELD","ttWindow","iconName","literal","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","SvgIconConfig","addSvgIconResolver","cleanLiteral","getMatIconFailedToSanitizeLiteralError","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","getMatIconFailedToSanitizeUrlError","cachedIcon","cloneSvg","_loadSvgIconFromConfig","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","getMatIconNameNotFoundError","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","cloneNode","_setSvgAttributes","_toSvgElement","_svgElementFromString","div","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","configNamespace","svgElement","isSafeUrlWithOptions","_MatIconBase","MAT_ICON_LOCATION","getPathname","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","_iconRegistry","ariaHidden","_inline","_currentIconFetch","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_splitIconName","cachedElements","_elementsWithExternalReferences","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","childCount","fontSetClass","_previousFontSetClass","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","_MatListBase","_MatListItemMixinBase","MAT_LIST","MAT_NAV_LIST","MatList","_stateChanges","_getListType","MatListAvatarCssMatStyler","MatListIconCssMatStyler","MatListItem","navList","_isInteractiveList","_list","setLines","_lines","tt","yt","_MatProgressBarBase","MAT_PROGRESS_BAR_LOCATION","MAT_PROGRESS_BAR_DEFAULT_OPTIONS","progressbarId","MatProgressBar","_isNoopAnimation","_bufferValue","animationEnd","_animationEndSubscription","_rectangleFillValue","bufferValue","_primaryTransform","_bufferTransform","_primaryValueBar","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","_MatSlideToggleRequiredValidatorModule","MAT_SNACK_BAR_DATA","announcementMessage","horizontalPosition","verticalPosition","MAX_TIMEOUT","containerInstance","_afterDismissed","_onAction","_dismissedByAction","_onExit","_finishDismiss","dismiss","_durationTimeoutId","dismissWithAction","closeWithAction","_dismissAfter","_open","dismissedByAction","afterDismissed","_onEnter","onAction","SimpleSnackBar","snackBarRef","hasAction","MatSnackBarRef","matSnackBarAnimations","snackBarState","MatSnackBarContainer","snackBarConfig","_announceDelay","_onAnnounce","_animationState","_assertNotAttached","_applySnackBarClasses","_live","_role","onAnimationEnd","fromState","_completeExit","_screenReaderAnnounce","_announceTimeoutId","panelClasses","inertElement","liveElement","focusedElement","HTMLElement","MatSnackBarConfig","i3$1","MAT_SNACK_BAR_DEFAULT_OPTIONS","_MatSnackBarBase","_breakpointObserver","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","_openedSnackBarRef","openFromComponent","_attach","openFromTemplate","simpleSnackBarComponent","_attachSnackBarContainer","snackBarContainerComponent","userConfig","handsetCssClass","_animateSnackBar","isLeft","i2$1","i3$2","MatSnackBar","live","parentSnackBar","defaultConfig","Xt","xe","Lt","_tabFocusChanged","_removeTabBodyWrapperHeight","_setTabBodyWrapperHeight","_MAT_INK_BAR_POSITIONER","offsetLeft","MatInkBar","_inkBarPositioner","alignToElement","inkBar","MAT_TAB_CONTENT","MAT_TAB_LABEL","MAT_TAB","MatTabLabel","_closestTab","_MatTabBase","MAT_TAB_GROUP","MatTab","_closestTabGroup","textLabel","_contentPortal","templateLabel","_templateLabel","_setTemplateLabelInput","_explicitContent","_implicitContent","Bt","Rt","matTabsAnimations","translateTab","MatTabBodyPortal","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","isCentering","_content","_afterLeavingCenter","MatTabBody","_MatTabBodyBase","_dirChangeSubscription","_translateTabComplete","_onCentering","_onCentered","animationDuration","_computePositionAnimationState","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","_getLayoutDirection","MAT_TABS_CONFIG","_MatTabLabelWrapperBase","MatTabLabelWrapper","getOffsetLeft","getOffsetWidth","passiveEventListenerOptions","MatPaginatedTabHeader","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","_stopScrolling","disablePagination","_selectedIndex","selectFocusedIndex","indexFocused","_stopInterval","_keyManager","_previousPaginator","_handlePaginatorPress","_nextPaginator","dirChange","resize","realign","updatePagination","_alignInkBarToSelectedTab","FocusKeyManager","_itemsResized","_getMaxScrollDistance","newFocusIndex","_setTabFocus","tabItems","_tabLabelCount","_scrollToLabel","_checkScrollingControls","_scrollDistanceChanged","_updateTabScrollPosition","_handleKeydown","focusIndex","_itemSelected","_onContentChanges","_currentTextContent","_checkPaginationEnabled","_isValidIndex","tab","containerEl","_tabListContainer","scrollDistance","translateX","_tabList","_scrollTo","_scrollHeader","_handlePaginatorClick","labelIndex","selectedLabel","viewLength","labelBeforePos","labelAfterPos","_tabListInner","beforeVisiblePos","afterVisiblePos","selectedItem","selectedLabelWrapper","_inkBar","mouseEvent","button","maxScrollDistance","_MatTabHeaderBase","MatTabHeader","i4","nextId","_MatTabGroupMixinBase","_MatTabGroupBase","_tabs","_indexToSelect","_lastFocusedTabIndex","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","headerPosition","selectedIndexChange","focusChange","animationDone","selectedTabChange","_groupId","dynamicHeight","contentTabIndex","_dynamicHeight","_animationDuration","_contentTabIndex","_backgroundColor","indexToSelect","_clampTabIndex","isFirstRun","_createChangeEvent","_tabBodyWrapper","_subscribeToAllTabChanges","_subscribeToTabLabels","tabs","selectedTab","_allTabs","realignInkBar","_tabHeader","focusTab","header","_focusChanged","MatTabChangeEvent","_getTabLabelId","_getTabContentId","tabHeight","_handleClick","tabHeader","_getTabIndex","focusOrigin","MatTabGroup","i7","i7$1","NG_DEV_MODE$1","NoopAnimationPlayer","ɵAnimationGroupPlayer","driver","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","normalizeStyleValue","animationFailed","copyAnimationEvent","makeAnimationEvent","triggerName","command","separatorPos","_contains","elm1","elm2","_query","_documentElement","isNode","getParentElement","_CACHED_BODY","_IS_WEBKIT","getBodyNode","containsVendorPrefix","camelProp","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","matchesElement","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","_convertTimeValueToMS","allowNegativeValues","invalidTimingValue","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","parseTimeExpression","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","camelCaseToDashCase","formerStyles","dashCaseToCamelCase","writeStyleAttribute","PARAM_REGEX","original","varName","localVal","invalidParamValue","DASH_CASE_REGEXP","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","transitionValue","expressions","eventStr","invalidTransitionAlias","parseAnimationAlias","invalidExpression","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","visitDslNode","normalizeAnimationEntry","unsupportedCSSPropertiesFound","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","extractStyleParams","metadataName","invalidState","parseTransitionExpr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","Dn","invalidStyleValue","collectedEasing","styleData","styleMap","endTime","tuple","collectedEntry","updateCollectedStyle","firstStart","firstEnd","secondStart","secondEnd","invalidParallelAnimation","invalidStyleParams","validateStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","hasAmpersand","normalizeSelector","getOrSetAsInMap","originalSelector","invalidStagger","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","ElementInstructionMap","AnimationTimelineContext","currentTimeline","setStyles","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","resolveTimingValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","interpolateParams","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","allProperties","copyStyles","flattenStyles","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","AnimationStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","invalidCssUnitValue","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","currentState","matchFns","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","elm","queriedElementsList","defaultParams","combinedParams","styleObj","_normalizer","transitionFactories","AnimationStateStyles","balanceProperties","AnimationTransitionFactory","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","EMPTY_INSTRUCTION_MAP","bodyNode","_animations","_playersById","buildAnimationAst","registerFailed","_buildPlayer","normalizeKeyframes","autoStylesMap","rn","inst","missingOrDestroyedAnimation","createAnimationFailed","optimizeGroupPlayer","_getPlayer","missingPlayer","baseEvent","listenOnPlayer","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","StateValue","_engine","_triggers","_queue","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","k1","k2","objEquals","reportError","eraseStyles","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","stateMap","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","wt","markedForDestroy","d0","d1","elementContainsData","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","AnimationTransitionNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","ancestor","ancestorNs","registerTrigger","_fetchNamespace","nsId","isElementNode","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","or","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","_queueEvent","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","_triggerCache","_transitionEngine","TransitionAnimationEngine","_timelineEngine","TimelineAnimationEngine","componentId","triggerBuildFailed","AnimationTrigger","buildTrigger","onInsert","onRemove","disableAnimations","parseTimelineCommand","eventPhase","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","_specialStyles","_initialized","currentSnapshot","_duration","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","playerOptions","previousStyles","previousWebAnimationPlayers","WebAnimationsPlayer","allowPreviousPlayerStylesMerge","previousStyleProps","startingKeyframe","missingStyleProps","balancePreviousStylesIntoKeyframes","specialStyles","startStyles","endStyles","filterNonAnimatableStyles","packageNonAnimatableStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","animationTriggers","AnimationRenderer","_scheduleCountTask","scheduleListenerCallback","newChild","refChild","oldChild","selectorOrNode","preserveContent","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","InjectableAnimationEngine","ɵAnimationEngine","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","dispatchEvent","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","baseElement","getBaseElementHref","urlParsingNode","pathName","relativePath","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","setTestabilityGetter","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","compId","eventHandler","allowDefaultBehavior","DomRendererFactory2","eventManager","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","removeAttributeNS","decoratePreventDefault","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","DomEventsPlugin","EventManagerPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","DomSanitizer","DomSanitizerImpl","ut","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","bypassSecurityTrustHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","_refCount","refCounter","sharedConnection","_connection","subjectFactory","getSubject","_teardown","higherOrderRefCount","RouterEvent","navigationTrigger","restoredState","reason","shouldActivate","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segments","segmentGroup","hasChildren","posParams","segment","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","ignored","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serializePaths","parameterMap","_parameterMap","serializePath","as","UrlParser","UrlTree","parseRootSegment","parseQueryParams","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeUriFragment","DefaultUrlSerializer","primary","childOutlet","mapChildrenIntoArray","encodeUriString","decode","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","UrlSegmentGroup","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","UrlSegment","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","allowPrimary","outletName","_root","findNode","findPath","cc","Tree","setRouterState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","TreeNode","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","RouterState","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","outlets","segmentPath","oldRoot","oldSegmentGroup","newSegmentGroup","qp","newRoot","replaceSegment","oldSegment","newSegment","isAbsolute","numberOfDoubleDots","commands","isMatrixParams","cmdWithOutlet","isCommandWithOutlets","toRoot","processChildren","updateSegmentGroupChildren","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","updateSegmentGroup","createNewSegmentChildren","futureState","currState","forwardEvent","activate","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","deactivate","attachRef","activateRoutes","ActivationEnd","ChildActivationEnd","getOrCreateContext","stored","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","INITIAL_VALUE","isPending","innerAcc","isUrlTree","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","OutletContext","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","isActivated","activatedRoute","activatedRouteData","cmp","childContexts","OutletInjector","ɵEmptyOutletComponent","parentPath","validateNode","getFullPath","fullPath","validateConfig","currentRoute","standardizeConfig","sortedConfig","getOutlet","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","matcher","defaultUrlMatcher","slicedSegments","emptyPathMatch","containsEmptyPathMatchesWithNamedOutlets","primarySegment","_sourceSegment","_segmentIndexShift","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","rawSegment","NoMatch$1","newTree","AbsoluteRedirect","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","urlTrees$","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","mapped$","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expanded$","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","cfg","childConfig$","getChildConfig","routerConfig","childModule","childConfig","splitSegmentGroup","matchedOnOutlet","cs","LoadedRouterConfig","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","CanActivate","CanDeactivate","getRouteGuards","_e","ct","rootComponentType","recognize","processSegmentGroup","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","nextResult","detachedTree","ROUTES","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","moduleFactory$","loadModuleFactory","ConnectableObservable","shouldProcessUrl","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","currentPageId","isNgZoneEnabled","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","DefaultUrlHandlingStrategy","DefaultRouteReuseStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","RouterConfigLoader","triggerEvent","RouteConfigLoadStart","RouteConfigLoadEnd","createEmptyState","targetPageId","currentRawUrl","extractedUrl","rawUrl","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","serializeUrl","ApplyRedirects","applyRedirects$1","applyRedirects","finalUrl","Recognizer","newObservableError","NoMatch","recognize$1","skipLocationChange","setBrowserUrl","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","GuardsCheckStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","ChildActivationStart","fireChildActivationStart","ActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChildGuards","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","GuardsCheckEnd","restoreHistory","cancelNavigationTransition","resolveStart","ResolveStart","dataResolved","canActivateChecksResolved","getDataKeys","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","ResolveEnd","createRouterState","ActivateRoutes","isNavigationCancelingError","redirecting","navCancel","fi","mergedTree","scheduleNavigation","navError","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","queryParamsHandling","preserveFragment","removeEmptyProps","nav","Navigation","cmd","cmdIdx","urlPart","partIndex","Pn","computeNavigation","startingPosition","Position","dd","createPositionApplyingDoubleDots","findStartingPosition","validateCommands","matchOptions","Ze","containsTree","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLinkWithHref","locationStrategy","onChanges","updateTargetUrlAndHref","attrBoolValue","preload","RouterPreloader","preloadingStrategy","loader","setUpPreloading","processRoutes","preloadConfig","PreloadingStrategy","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","re","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","UrlSerializer","assignExtraOptionsToRouter","enableTracing","groupEnd","NoPreloading","NgProbeToken","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","provideRouterInitializer","scrollOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","appInitializer","vn","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","stringifyCanon","stringifyCache","known","canUseWeakSet","WeakSet","pool","passes","keysByJSON","isObjectOrArray","shallowCopy","proto_1","array_1","sortedKeys","json","firstValueIndex_1","obj_1","resetCanonicalStringify","canonical","cacheInfoMap","getCacheInfo","rv","attachCache","oldListeners","onNextChange","LinkError","toLink","leftLink","rightLink","passthrough","isTerminating","starting","createOperation","transformedOperation","getOperationName","transformOperation","OPERATION_FIELDS","validateOperation","firstLink","nextLink","setOnError","arr2","Constructor","protoProps","staticProps","_defineProperties","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","ctor","_cleanup","getMethod","_observer","closeSubscription","cleanupSubscription","enqueue","queue","notifySubscription","flushSubscription","subscriptionObserver","SubscriptionObserver","_proto","_createClass","_proto2","onNotify","_subscriber","_proto3","_this2","getSpecies","_this3","_this4","_this5","_len","startNext","_this6","completeIfDone","_step","_iterator","allowArrayLike","it","_arrayLikeToArray","_unsupportedIterableToArray","_createForOfIteratorHelperLoose","_len2","_key2","maybe","canUseSymbol","cloneDeepHelper","copy_1","copy_2","objects","prefixCounts","defaultReconciler","reconciler","pastCopies","targetValue","shallowCopyForMerge","genericMessage","setPrototypeOf","framesToPop","verbosityLevels","verbosityLevel","thunk","wrapConsoleMethod","GLOBAL_KEY","getDEV","safeGlobal","needToRemove","NODE_ENV","install","removeTemporaryGlobals","DEV","checkDEV","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","getInclusionDirectives","evaledValue","names","visit","Directive","getDirectiveNames","actualFragmentName","fragments","symTable","checkDocument","queryDef","fragmentDef","queryDoc","defaultValues","defs","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","variableValue","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","directivesObj","KNOWN_DIRECTIVES","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","setStringify","stringifyReplacer","argObj_1","TYPENAME_FIELD","getFragmentDefinition","variablesInUse","variablesToRemove","fragmentSpreadsInUse","fragmentSpreadsToRemove","modifiedDoc","nullIfDocIsEmpty","Variable","Field","getDirectiveMatcher","getAllFragmentSpreadsFromSelectionSet","frag","FragmentSpread","filterInPlace","argMatcher","aConfig","getArgumentMatcher","OperationDefinition","varDef","shouldRemoveField","argConfig","argMatchCount_1","Argument","removeArgumentsFromDocument","fs","FragmentDefinition","removeFragmentSpreadFromDocument","SelectionSet","connectionRemoveConfig","willRemove","removeDirectivesFromDocument","allFragments","isInlineFragment","DYNAMIC_FORM_CONTROL_MAP_FN","DynamicFormComponentService","forms","formControls","getForms","registerForm","unregisterForm","getFormControlRef","modelId","registerFormControl","arrayRef","unregisterFormControl","getCustomComponentType","componentService","onBlur","blur","onFocus","onCustomEvent","customEventEmitter","METADATA_KEY_SERIALIZABLE","defineMetadata","serializables","getMetadata","getSerializables","DynamicFormControlModel","_f","_g","errorMessages","labelTooltip","controlTooltip","relations","disabled$","disabledChanges","hasErrorMessages","serializable","DynamicFormValueControlModel","value$","getAdditional","DynamicFormArrayGroupModel","DYNAMIC_FORM_CONTROL_TYPE_ARRAY","DynamicFormArrayModel","groupFactory","groupAsyncValidators","groupPrototype","groupValidators","initialCount","arrayGroup","addGroup","updateGroupIndex","insertGroup","moveGroup","removeGroup","DynamicCheckControlModel","labelPosition","checked","DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX","DynamicCheckboxModel","indeterminate","DynamicInputControlModel","autoComplete","spellCheck","DynamicInputModel","list$","_listId","mask","maskConfig","initialConfig","multiple","listId","hasList","DYNAMIC_TEMPLATE_DIRECTIVE_ALIGNMENT","Start","End","DynamicFormLayoutService","findById","formLayout","findByModel","controlLayout","filterTemplatesByModel","modelType","getAlignedTemplate","alignment","getStartTemplate","getEndTemplate","getClass","place","getHostClass","getElementId","DynamicFormHook","Blur","Change","Submit","DYNAMIC_ERROR_MESSAGES_MATCHER","DynamicFormValidationService","_NG_VALIDATORS","_NG_ASYNC_VALIDATORS","_DYNAMIC_VALIDATORS","_DYNAMIC_ERROR_MESSAGES_MATCHER","getValidatorFn","validatorArgs","validatorsToken","getValidatorFns","validatorsConfig","validatorFns","validatorConfigKey","validatorConfigValue","isValidatorDescriptor","getValidator","getAsyncValidator","getValidators","getAsyncValidators","asyncValidatorsConfig","updateValidators","Je","updateAsyncValidators","showErrorMessages","hasFocus","precondition","DEFAULT_ERROR_STATE_MATCHER","parseErrorMessageConfig","_match","expression","propertySource","createErrorMessages","messagesConfig","validationErrorKey","messageKey","validationError","isFormHook","DYNAMIC_FORM_CONTROL_TYPE_GROUP","DynamicFormGroupModel","controlModel","DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP","DynamicCheckboxGroupModel","indices","uncheck","checkAll","uncheckAll","DYNAMIC_FORM_CONTROL_TYPE_COLORPICKER","DynamicColorPickerModel","DynamicDateControlModel","DYNAMIC_FORM_CONTROL_TYPE_DATEPICKER","DynamicDatePickerModel","focusedDate","toggleIcon","toggleLabel","DynamicEditorModel","DynamicFileControlModel","DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD","DynamicFileUploadModel","autoUpload","maxSize","minSize","removeUrl","showFileList","DynamicFormOption","DynamicOptionControlModel","updateOptions$","options$","optionConfig","optionsConfig","option","DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP","DynamicRadioGroupModel","DynamicRatingModel","DynamicSelectModel","compareWithFn","filterable","DynamicSliderModel","DynamicSwitchModel","offLabel","onLabel","DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA","DynamicTextAreaModel","cols","DYNAMIC_FORM_CONTROL_TYPE_TIMEPICKER","DynamicTimePickerModel","meridian","showSeconds","DynamicFormService","validationService","createAbstractControlOptions","createFormArray","formArrayModel","groupModel","groupOptions","createFormGroup","formModel","controlState","controlOptions","getPathSegment","getPath","addFormGroupControl","formGroup","models","insertFormGroupControl","moveFormGroupControl","removeFormGroupControl","addFormArrayGroup","formArray","insertFormArrayGroup","moveFormArrayGroup","moveUp","movingGroups","formControl","removeFormArrayGroup","clearFormArray","findByIdFn","findModelById","findControlByModel","formComponent","fromJSON","formModelJSON","parseReviver","DYNAMIC_MATCHERS","DynamicFormRelationService","MATCHERS","getRelatedFormControls","conditionReducer","rootPath","relation","when","findRelationByMatcher","opposingMatch","matchesCondition","relatedFormControls","hasMatched","relatedFormControl","subscribeRelations","relatedControl","hasMatch","DynamicFormsCoreModule","rate","RatingConfig","RATING_CONTROL_VALUE_ACCESSOR","RatingComponent","readonly","titles","onHover","buildTemplateObjects","preValue","Ut","RatingModule","BsDatepickerModule","TimepickerModule","NgOptionHighlightDirective","_canHighlight","_highlightLabel","_escapeRegExp","term","_setInnerHtml","alternationString","termRegex","_isDefined","NgOptionHighlightModule","unselect","toggleItem","onItemHover","itemsList","selectTag","viewPortItems","scrollToEnd","unescapedHTMLExp","hasUnescapedHTMLExp","htmlEscapes","isDefined","NgItemLabelDirective","escapeHTML","ngItemLabel","NgOptionTemplateDirective","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","diacritics","_ngSelect","_selectionModel","_filteredItems","_markedIndex","markedIndex","markedItem","noItemsToSelect","hideSelected","maxItemsSelected","maxSelectedItems","lastSelectedItem","setItems","mapItem","_groups","_groupBy","_flatten","clearSelected","selectableGroupAsModel","_hideSelected","_showSelected","findItem","findBy","bindValue","resolveNested","bindLabel","addItem","keepDisabled","marked","resetFilteredItems","findByLabel","stripSpecialChars","toLocaleLowerCase","searchFn","_defaultSearchFn","matchedItems","unmarkItem","markNextItem","_stepToItem","markPreviousItem","markItem","markSelectedOrDefault","markDefault","lastMarkedIndex","_getLastMarkedIndex","$ngOptionLabel","$ngOptionValue","htmlId","dropdownId","mapSelectedItems","parentExists","_getNextItemIndex","isFnKey","isGroupByFn","withoutGroup","isObjectKey","selectableGroup","newId","groupKey","groupValue","KeyCode","Tab","Enter","Space","ArrowUp","ArrowDown","Backspace","NgDropdownPanelService","_dimensions","itemHeight","itemsPerViewport","dimensions","calculateItems","scrollPos","itemsLength","indexByScrollTop","maxStart","maxStartEnd","topPadding","setDimensions","getScrollTo","itemTop","lastScroll","itemBottom","CSS_POSITIONS","SCROLL_SCHEDULER","NgDropdownPanelComponent","_panelService","virtualScroll","filterValue","outsideClick","_destroy$","_scrollToEndFired","_updateScrollHeight","_lastScrollPosition","_dropdown","_currentPosition","_itemsLength","_onItemsLengthChanged","_startOffset","_virtualPadding","paddingElementRef","_scrollablePanel","scrollElementRef","_contentPanel","contentElementRef","_handleScroll","_handleOutsideClick","_appendDropdown","_setupMousedownListener","_onItemsChange","appendTo","startFromOption","offsetTop","scrollToTag","panel","adjustPosition","_updateYPosition","_handleDropdownPosition","_calculateCurrentPosition","_updateDropdownClass","REMOVE_CSS_CLASS","ADD_CSS_CLASS","_onContentScrolled","_checkToClose","_updateItemsRange","_setVirtualHeight","_updateItems","_measureDimensions","_renderItemsRange","_fireScrollToEnd","_updateVirtualHeight","bufferAmount","dropdownEl","selectRect","_updateXPosition","zn","$t","NgOptionComponent","stateChange$","_isDisabled","_previousLabel","NgSelectConfig","notFoundText","typeToSearchText","addTagText","loadingText","clearAllText","disableVirtualScroll","openOnEnter","appearance","ConsoleService","SELECTION_MODEL_FACTORY","NgSelectComponent","newSelectionModel","markFirst","dropdownPosition","closeOnSelect","selectOnTab","clearOnBackspace","labelForId","inputAttrs","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","addTag","searchable","clearable","blurEvent","focusEvent","openEvent","closeEvent","searchEvent","clearEvent","addEvent","removeEvent","useDefaultClass","_defaultLabel","_pressedKeys","_isComposing","_keyPress$","_onTouched","clearItem","trackByOption","_mergeGlobalConfig","ItemsList","_itemsAreUsed","clearSearchOnAdd","_clearSearchOnAdd","single","_editableSearchTerm","selectedValues","currentPanelPosition","dropdownPanel","_handleKeyPresses","_setInputAttributes","_setItems","_manualOpen","_setItemsFromNgOptions","handleKeyDown","handleKeyCode","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","handleMousedown","handleClearClick","handleArrowClick","focused","_updateNgModel","_clearSearch","_onSelectionChanged","clearModel","_handleWriteValue","_isTypeahead","_setSearchTermFromItems","searchInput","_primitive","handleTag","showClear","showAddTag","_validTerm","showNoItemsFound","showTypeToSearch","onCompositionStart","onCompositionEnd","typeahead","onInputFocus","onInputBlur","mapNgOptions","handleOptionChange","changedOrDestroyed","ngOptions","_isValidWriteValue","validateBinding","ngModel","isValObject","isPrimitive","_scrollToMarked","autocorrect","autocapitalize","autocomplete","_changeSearch","_scrollToTag","_nextItemIsTag","nextStep","nextIndex","Me","yi","DefaultSelectionModel","groupAsModel","childrenCount","selectedCount","_setChildrenSelectedState","_removeChildren","_activeChildren","DefaultSelectionModelFactory","DidMutate","EntitiesOnly","Both","mutator","clonedEntityState","didMutate","entity","selectIdValue","addOneMutably","keysOrPredicate","updateManyMutably","newKeys","hasNewKey","takeNewKey","didMutateByUpdated","didMutateByAdded","addManyMutably","createStateOperator","setOneMutably","setMany","didMutateSetOne","updateOneMutably","upsertManyMutably","removeManyMutably","mapOne","sortComparer","stateFactory","additionalState","createInitialStateFactory","selectorsFactory","selectState","selectIds","selectEntities","selectTotal","createSelectorsFactory","stateAdapter","createUnsortedStateAdapter","newModels","didMutateIds","takeUpdatedModel","originalIds","updatedIndexes","updatesOrMap","createSortedStateAdapter","STORE_DEVTOOLS_CONFIG","INITIAL_OPTIONS","DEFAULT_NAME","optionsInput","DEFAULT_OPTIONS","noMonitor","actionSanitizer","stateSanitizer","logOnly","autoPause","lock","persist","export","import","jump","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","actionId","nextLiftedState","liftedState","computedStates","currentStateIndex","actionsById","nextActionId","PerformAction","sanitizedActions","actionIdx","sanitizeAction","computedState","sanitizeState","stateIdx","actionsSafelist","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","stagedActionIds","liftedAction","isActionFiltered","blockedlist","predicateMatch","safelistMatch","blocklistMatch","RECOMPUTE","RECOMPUTE_ACTION","nextError","minInvalidatedStateIndex","committedState","skippedActionIds","isPaused","nextComputedStates","lastIncludedActionId","previousEntry","previousState","previousError","shouldSkip","computeNextEntry","initialCommittedState","monitorReducer","monitorState","liftAction","initialLiftedState","excess","idsToDelete","commitChanges","actionIds","lastState","commitExcessActions","recomputeStates","UPDATE","DevtoolsDispatcher","ActionsSubject","ExtensionActionTypes","START","DISPATCH","STOP","ACTION","REDUX_DEVTOOLS_EXTENSION","DevtoolsExtension","devtoolsExtension","dispatcher","createActionStreams","unliftState","shouldFilterActions","sanitizedState","sanitizedAction","sendToReduxDevtools","extensionConnection","sanitizedLiftedState","sanitizeActions","sanitizeStates","getExtensionConfig","createChangesObservable","changes$","start$","stop$","liftedActions$","unwrapAction","actionsUntilStop$","liftedUntilStop$","extensionOptions","StoreDevtools","reducers$","extension","scannedActions","liftedInitialState","liftInitialState","liftReducer","liftReducerWith","liftedAction$","liftedReducer$","liftedStateSubject","liftedStateSubscription","reducedLiftedState","filterLiftedState","extensionStartSubscription","refresh","liftedState$","stateSubscription","performAction","Refresh","Reset","rollback","Rollback","Commit","sweep","Sweep","toggleAction","ToggleAction","jumpToAction","JumpToAction","jumpToState","JumpToState","importState","ImportState","lockChanges","LockChanges","pauseRecording","PauseRecording","INITIAL_STATE","IS_EXTENSION_OR_MONITOR_PRESENT","extensionKey","devtools","createIsExtensionOrMonitorPresent","createReduxDevtoolsExtension","createConfig","StateObservable","createStateObservable","ReducerManagerDispatcher","REGISTERED_ACTION_TYPES","defineType","_as","creator","ACTIONS_SUBJECT_PROVIDERS","_ROOT_STORE_GUARD","_INITIAL_STATE","REDUCER_FACTORY","_REDUCER_FACTORY","INITIAL_REDUCERS","_INITIAL_REDUCERS","STORE_FEATURES","_STORE_REDUCERS","_FEATURE_REDUCERS","_FEATURE_CONFIGS","_STORE_FEATURES","_FEATURE_REDUCERS_TOKEN","FEATURE_REDUCERS","USER_PROVIDED_META_REDUCERS","META_REDUCERS","_RESOLVED_META_REDUCERS","USER_RUNTIME_CHECKS","_USER_RUNTIME_CHECKS","_ACTION_TYPE_UNIQUENESS_CHECK","reducerKeys","finalReducers","finalReducerKeys","hasChanged","previousStateForKey","nextStateForKey","composed","reducerFactory","ReducerManager","currentReducers","addFeature","addFeatures","reducerDict","createFeatureReducerFactory","createReducerFactory","addReducers","removeFeature","removeFeatures","removeReducers","addReducer","updateReducers","removeReducer","featureKey","featureKeys","keyToRemove","REDUCER_MANAGER_PROVIDERS","ReducerObservable","tn","SCANNED_ACTIONS_SUBJECT_PROVIDERS","State","reducer$","stateAndAction$","actionsOnQueue$","reduceState","stateActionPair","STATE_PROVIDERS","Store","actionsObserver","reducerManager","pathOrMapFn","STORE_PROVIDERS","propsOrPath","pathSlices","currentProp","pluck","RUNTIME_CHECK_URL","lastArguments","projectionFn","isArgumentsEqual","isEqualCheck","isResultEqual","overrideResult","lastResult","isArgumentsChanged","newResult","setResult","clearResult","stateFn","defaultStateFn","projector","memoizedSelectors","memoizedProjector","memoizedState","defaultMemoize","createSelectorFactory","featureName","featureState","targetIsFunction","propValue","targetPrototype","getUnserializable","unserializable","unserializablePath","strictActionWithinNgZone","strictActionTypeUniqueness","throwIfUnserializable","serializationCheckMetaReducer","ignoreNgrxAction","act","immutabilityCheckMetaReducer","inNgZoneAssertMetaReducer","_runtimeChecksFactory","createActiveRuntimeChecks","createImmutabilityCheckMetaReducer","createSerializationCheckMetaReducer","createInNgZoneCheckMetaReducer","_actionTypeUniquenessCheck","registrations","StoreRootModule","scannedActions$","actionCheck","StoreFeatureModule","featureReducers","feats","featureReducerCollection","_initialStateFactory","_createStoreReducers","_concatMetaReducers","combineReducers","provideRuntimeChecks","checkForActionTypeUniqueness","featureNameOrSlice","_createFeatureStore","_createFeatureReducers","configs","featureStores","feat","conf","reducerCollection","userProvidedMetaReducers","ons","existingReducer","newRect","oldRect","isFirst","ResizedDirective","resized","domSize","resizedEvent","ResizedEvent","contentRect","NetworkStatus","setVariables","fetchMore","refetch","poll","networkStatus","serializeFetchParameter","serialized","parseError","throwServerError","statusCode","fallbackHttpConfig","defaultPrinter","printer","normalized_1","backupFetch","createHttpLink","linkOptions","preferredFetch","includeUnusedVariables","requestOptions","fetcher","checkFetcher","linkConfig","fetchOptions","credentials","chosenURI","fallbackURI","selectURI","clientAwarenessHeaders","name_1","controller","contextHeaders","headersToLowerCase","selectHttpOptionsAndBodyInternal","unusedNames_1","signal","AbortController","createSignalIfSupported","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","rewriteURIForGET","fromError","currentFetch","bodyText","parseAndCheckHttpResponse","mapFn","catchFn","activeCallbackCount","promiseQueue","examiner","both","caught","makeCallback","observersWithMethod","subclass","species","Concast","addObserver","removeObserver","addCount","iterateObserversSafely","Ct","ht","deliverLastMessage","nextOrError","quietly","called","fixObservableSubclass","ApolloError","clientErrors","extraInfo","generateErrorMessage","ObservableQuery","queryManager","queryInfo","subObserver","defaultSubscriptionObserverErrorCallback","reobserve","tearDownQuery","isTornDown","defaultFetchPolicy","initialFetchPolicy","queryId","generateQueryId","opDef","queryName","removeQuery","getCurrentResult","saveAsLastResult","getLastResult","isNetworkRequestInFlight","hasForcedResolvers","getDiff","si","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","reobserveOptions","resetLastWrite","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","updatedQuerySet","fetchQuery","fetchMoreResult","finally","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","setOptions","broadcastQueries","startPolling","updatePolling","applyNextFetchPolicy","nextFetchPolicy","Ye","newNetworkStatus","setObservableQuery","fetchQueryObservable","ssrMode","pollingInfo","maybeFetch","assumeImmutableResults","useDisposableConcast","oldVariables","oldFetchPolicy","mergedOptions","concast","reportResult","lastError","hasObservers","stopQuery","obsQuery","LocalState","client","resolvers","fragmentMatcher","addResolvers","setFragmentMatcher","resolverGroup","mergeDeep","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","__generator","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","removeClientSetsFromDocument","prepareContext","getCacheKey","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","BREAK","buildQueryFromSelectionSet","rootValue","mainDefinition","definitionOperation","defaultOperationType","execContext","resolveSelectionSet","resultsToMerge","resolveField","fieldResult","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","resolveSubSelectedArray","destructiveMethodCounts","notifyTimeout","QueryInfo","lastRequestId","stopped","observableQuery","wrapDestructiveCacheMethod","cancelNotifyTimeout","getDiffOptions","updateWatch","oq","updateLastDiff","setDiff","oldDiff","oqListener","me","shouldNotify","stop","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","shouldWriteResult","errorPolicy","diffOptions","markReady","markError","ignoreErrors","writeWithErrors","graphQLResultHasError","QueryManager","queryDeduplication","onBroadcast","localState","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","mutationStore","stopQueryNoBroadcast","cancelPendingFetches","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","keepRootFields","mutationId","mutationStoreValue","_h","generateMutationId","getVariables","hasClientExports","sent","markMutationOptimistic","asyncMap","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","updateQueries_1","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","asQuery","include","getQueryStore","transformed","forLink","removeConnectionDirectiveFromDocument","cacheEntry_1","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","isDocumentNode","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","byVariables_1","varJson_1","getResultsFromLink","requestId","hasErrors","aqr","isApolloError","normalized","fromVariables","concastSources","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resultsFromLink","newContext","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","resetStore","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","ua","devToolsHookCb","dataWithOptimisticResults","mergeOptions","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","promiseFn","ZoneScheduler","wrapWithZone","fixObservable","useInitialLoading","currentResult","APOLLO_FLAGS","APOLLO_NAMED_OPTIONS","_client","pickFlag","useMutationLoading","QueryRef","ensureClient","useZone","getClient","setClient","checkInstance","Apollo","ApolloBase","apolloOptions","apolloNamedOptions","createDefault","createNamed","use","removeClient","PROVIDERS","seenValues","previouslySeenValues","isJSONable","jsonValue","formatArray","getObjectTag","formatObject","formatObjectValue","QueryDocumentKeys","Name","Document","VariableDefinition","InlineFragment","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","kindValues","maybeNode","maybeKind","_firstNonEmptyLine2","commonIndent","firstNonEmptyLine","lastNonEmptyLine","_firstNonEmptyLine","indent","leadingWhitespace","isWhiteSpace","escapedValue","isSingleLine","forceLeadingNewLine","hasTrailingTripleQuotes","hasTrailingQuote","hasTrailingSlash","forceTrailingNewline","printAsMultipleLines","minimize","skipLeadingNewLine","isLetter","OPERATION_DEFINITION","SELECTION_SET","ARGUMENT","VARIABLE","BOOLEAN","LIST","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","escapedRegExp","escapeSequences","printDocASTReducer","leave","varDefs","argsLine","isBlockString","printBlockString","escapedReplacer","printString","hasMultilineItems","maybeArray","_maybeArray$filter$jo","maybeString","_maybeArray$some","devAssert","inspect","visitorKeys","enterLeaveMap","getEnterLeaveForKind","inArray","edits","isLeaving","isEdited","editOffset","editKey","editValue","arrayKey","getOwnPropertyDescriptors","_enterLeaveMap$get","_enterLeaveMap$get2","visitFn","_node$kind","kindVisitor","loggedPromiseDeprecation","Keycloak","callbackStorage","kc","refreshQueue","loginIframe","callbackList","scripts","iframeVersion","useNonce","logInfo","createLogger","logWarn","alphabet","randomData","generateRandomData","authServerUrl","oauth","prompt","timeLocal","kc_action_status","onActionUpdate","errorData","error_description","onAuthError","setError","setSuccess","access_token","id_token","authSuccess","endpoints","redirectUri","pkceCodeVerifier","onreadystatechange","tokenResponse","refresh_token","scheduleCheckIframe","accessToken","refreshToken","idToken","fulfillPromise","setToken","tokenParsed","nonce","storedNonce","refreshTokenParsed","idTokenParsed","clearToken","tokenTimeoutHandle","session_state","realmAccess","realm_access","resourceAccess","resource_access","timeSkew","iat","expiresIn","ue","hexDigits","generateRandomString","supportedParams","newUrl","fragmentIndex","responseMode","parseCallbackParams","paramsString","oauthParams","parseCallbackUrl","oauthState","logPromiseDeprecation","createPromise","iframe","onload","authUrl","authorize","iframeOrigin","getOrigin","checkSessionIframe","contentWindow","callbacks","unchanged","postMessage","thirdPartyCookiesIframe","messageCallback","silentCheckSsoFallback","timeoutHandle","timeoutPromise","race","applyTimeoutToPromise","messageReceiveTimeout","createLoginUrl","createLogoutUrl","createRegisterUrl","accountManagement","accountUrl","createAccountUrl","encodeHash","cordovaOpenWindowWrapper","loginUrl","cordova","InAppBrowser","createCordovaOptions","userOptions","cordovaOptions","optionName","shallowCloneCordovaOptions","formatCordovaOptions","closeBrowser","processCallback","parseCallback","logoutUrl","registerUrl","universalLinks","browsertab","openUrl","LocalStorage","CookieStorage","createCallbackStorage","ne","loadAdapter","Cordova","checkLoginIframeInterval","loginRequired","pkceMethod","enableLogging","initPromise","onReady","configPromise","configUrl","oidcConfiguration","authorization_endpoint","token_endpoint","end_session_endpoint","check_session_iframe","userinfo","userinfo_endpoint","getRealmUrl","fileLoaded","setupOidcEndoints","oidcProvider","oidcProviderConfigUrl","loadConfig","doLogin","checkSsoSilently","ifrm","setupCheckLoginIframe","oe","updateToken","checkReadyState","domReady","check3pCookiesSupported","processInit","baseUrl","createUUID","callbackState","loginHint","idpHint","acr","claimsParameter","requestedAcr","buildClaimsParameter","codeVerifier","generateCodeVerifier","pkceChallenge","hashBytes","base64","generatePkceChallenge","hasRealmRole","access","hasResourceRole","loadUserProfile","profile","minValidity","onAuthRefreshError","onAuthLogout","expires","clearExpired","setCookie","cookieExpiration","setTime","ca","expirationDate","toUTCString","KeycloakEventType","OnAuthError","OnAuthLogout","OnAuthRefreshError","OnAuthRefreshSuccess","OnAuthSuccess","OnReady","OnTokenExpired","OnActionUpdate","keycloakAngular","isLoggedIn","getUserRoles","_keycloakEvents$","bindsKeycloakEvents","_instance","loadExcludedUrls","urlPattern","httpMethods","initServiceValues","enableBearerInterceptor","loadUserProfileAtStartUp","authorizationHeaderName","bearerPrefix","updateMinValidity","shouldAddToken","shouldUpdateToken","_enableBearerInterceptor","_loadUserProfileAtStartUp","_authorizationHeaderName","_bearerPrefix","_excludedUrls","_silentRefresh","_updateMinValidity","_userProfile","isUserInRole","allRoles","forceReload","getUsername","addTokenToHeader","KeycloakBearerInterceptor","conditionallyUpdateToken","isUrlExcluded","httpTest","urlTest","handleRequestWithTokenHeader","headersWithBearer","kcReq","scrollWindow","defaultElement","fromRoot","hasWindow","containerIsString","customRoot","findElement","VerticalProps","HorizontalProps","propsMap","clientHeightKey","offsetHeightKey","scrollHeightKey","pageYOffsetKey","offsetTopKey","scrollTopKey","topKey","windowElement","isContainerWindow","isWindow","extractHeightPropKeys","getElementHeight","extractHeightForElement","getElementPageYOffset","getDocumentElement","nativeElementHeight","totalToScroll","getElementOffsetTop","calculatePointsForWindow","calculatePointsForElement","docElem","down","up","scrollingDown","containerBreakpoint","scrolledUntilNow","lastScrollPosition","lastTotalToScroll","triggered","updateScrollPosition","updateTotalToScroll","updateScroll","updateTriggeredFlag","isScrollingDown","isTriggeredScroll","scrollContainer","createResolverWithContainer","isElementWindow","createResolver","AxisResolver","resolveContainerElement","scrollState","ScrollState","calculatePoints","upDistance","downDistance","attachScrollEvent","positionStats","scrollDown","fire","isScrollingDownwards","shouldFireScrollEvent","getScrollStats","toInfiniteScrollParams","alwaysCallback","isTriggeredCurrentTotal","shouldTriggerEvents","toInfiniteScrollAction","InfiniteScrollDirective","scrolledUp","infiniteScrollDistance","infiniteScrollUpDistance","infiniteScrollThrottle","infiniteScrollDisabled","infiniteScrollContainer","immediateCheck","setup","containerChanged","inputPropChanged","disabledChanged","distanceChanged","shouldSetup","destroyScroller","hasWindowDefined","disposeScroller","createScroller","handleOnScroll","InfiniteScrollModule","removeSelection","mouseenter","click","keyDown","searchUpdate","prevChange","onScroll","unicodePatterns","protectRegexp","groupOrOption","Select2Utils","getOptionByValue","filteredData","hoveringValue","findIt","maxResults","counter","searchText","editPattern","containSearchText","filteredOptions","minCountForSearch","optionCount","getOptionsCount","formatSansUnicode","formatPattern","unicodePattern","protectPattern","displaySearchStatusList","Select2","minCharForSearch","listPosition","styleMode","maxResultsMessage","resultMaxHeight","removeOption","innerSearchText","_required","_readonly","_resettable","_hideSelectedItems","_clickDetection","_uid","_infiniteScroll","_clickDetectionFc","clickDetection","updateFilteredData","_coerceBooleanProperty","infiniteScroll","select2Options","select2Option","customSearchEnabled","_minCountForSearch","updateSearchBox","hideSelectedItems","testValueChange","resettable","ariaInvalid","_isErrorState","classMaterial","classNostyle","select2above","_isAbobeOverlay","_positions","resultsElement","resultContainer","triggerRect","getOptionsByValue","cdkConnectedOverlay","posChange","_overlayPosition","selectionElement","_dirtyCheckNativeValue","_triggerRect","overlayWidth","_dropdownRect","overlayHeight","isSearchboxHiddex","isSearchboxHidden","hideSearch","displaySearchStatus","getOptionStyle","testSelection","toggleOpenAndClose","_focus","_focusSearchboxOrResultsElement","updateScrollFromOption","hasTemplate","defaut","getTemplate","dropdown","e1","getFilteredSelectedData","getFilteredData","getReduceData","maxResultsExceeded","valueIsNotInFilteredData","getFirstAvailableOption","ifParentContainsClass","ifParentContainsId","clickExit","getParentElementByClass","getParentElementById","containClasses","focusin","focusout","_testKey","moveDown","selectByEnter","openKey","trackBy","removedOption","_setSelectionByValue","way","getPreviousOption","getNextOption","domElement","listClientRect","optionClientRect","_isKey","_getKey","_previousNativeValue","wn","Se","AccordionConfig","closeOthers","AccordionComponent","closeOtherPanels","openGroup","AccordionPanelComponent","accordion","_isOpen","isBs3","toggleOpen","AlertConfig","dismissible","dismissOnTimeout","onClosed","dismissibleChange","OnChange","__metadata","CHECKBOX_CONTROL_VALUE_ACCESSOR","ButtonCheckboxDirective","btnCheckboxTrue","btnCheckboxFalse","trueValue","falseValue","RADIO_CONTROL_VALUE_ACCESSOR$1","ButtonRadioDirective","uncheckable","_hasFocus","controlOrGroupDisabled","hasDisabledClass","btnRadio","toggleIfAllowed","canToggle","onSpacePressed","ButtonRadioGroupDirective","RADIO_CONTROL_VALUE_ACCESSOR","radioButtons","activeRadio","getActiveOrFocusedRadio","firstEnabled","selectNext","selectInDirection","selectPrevious","buttonRadioDirectives","calcIndex","currentActiveIndex","COLLAPSE_ANIMATION_TIMING","expandAnimation","collapseAnimation","CollapseDirective","_el","_builder","collapses","expanded","expands","isExpanded","collapseNewValue","isCollapsed","isCollapse","isCollapsing","_display","_stylesLoaded","_COLLAPSE_ACTION_NAME","_EXPAND_ACTION_NAME","_factoryCollapseAnimation","_factoryExpandAnimation","collapse","_isAnimationDone","animationRun","factoryAnimation","_applicationRef","_posService","onBeforeShow","onBeforeHide","_providers","_isHiding","containerDefaultSelector","_listenOpts","_globalListener","isShown","_componentRef","compType","_componentFactory","attachment","_subscribePositioning","_innerComponent","_contentRef","_getContentRef","selectedElement","_registerOutsideClick","deletePositionElement","componentEl","_unsubscribePositioning","_unregisterListenersFn","listenOpts","triggers","outsideEsc","registerHide","listenToTriggersV2","attachInline","vRef","_inlineViewRef","registerOutsideClick","registerEscClick","getInnerComponent","_zoneSubscription","appendToBody","calcPosition","ContentRef","contentCmptFactory","modalContentInjector","createLoader","ComponentLoader","argumentForCoercion","coercedNumber","absFloor","aliases","_mapUnits","hour","millisecond","shorthand","_unit","targetLength","forceSign","absNumber","formatFunctions","formatTokenFunctions","formattingTokens","padded","ordinal","zeroFill","UTC","isUTC","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getUTCDay","date1","date2","isSameYear","isSameMonth","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchShortOffset","matchTimestamp","matchWord","regexes","strictRegex","hasOwnProp","_strict","regexEscape","p1","p2","p3","p4","unescapeFormat","_token","toInt","addParseToken","_w","priorities","priority","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","isLeapYear","modMonth","defaultTimeUnit","daysInMonth","dayOfMonth","setUTCMonth","setMonth","setUTCDate","setDate","_date","cloneDate","setUTCMinutes","setSeconds","setUTCMilliseconds","setMilliseconds","getLocaleDayOfWeek","setLocaleDayOfWeek","getLocale","weekdaysParse","parseIsoWeekday","setDayOfWeek","setISODayOfWeek","addSubtract","createDuration","startOf","dow","doy","fwd","createUTCDate","weekOffset","firstWeekOffset","week","getDayOfYear","resWeek","resYear","weeksInYear","pt","weekOffsetNext","daysInYear","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","defaultMonthsShortRegex","defaultMonthsRegex","confKey","calendar","_calendar","sameElse","longDateFormat","_longDateFormat","formatUpper","invalidDate","_invalidDate","_ordinal","preparse","postformat","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","_months","isFormat","monthsShort","_monthsShort","monthsParse","monthName","strict","_monthsParseExact","handleMonthStrictParse","_monthsParse","_longMonthsParse","_shortMonthsParse","_shortMonths","monthsRegex","computeMonthsParse","_monthsStrictRegex","_monthsRegex","monthsShortRegex","_monthsShortStrictRegex","_monthsShortRegex","weekOfYear","_week","firstDayOfWeek","weekdays","_weekdays","weekdaysMin","_weekdaysMin","weekdaysShort","_weekdaysShort","weekdayName","_weekdaysParseExact","handleWeekStrictParse","_weekdaysParse","_minWeekdaysParse","_shortWeekdaysParse","_fullWeekdaysParse","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","isPM","isLower","formatLongDate","llc","mom","shortPieces","longPieces","mixedPieces","cmpLenRev","minPieces","minp","shortp","longp","baseConfig","sameDay","nextDay","nextWeek","lastDay","lastWeek","dayOfMonthOrdinalParse","past","ss","mm","hh","MM","yy","meridiemParse","dontConvert","lengthDiff","diffs","addFormatToken","getWeekYear","getISOWeekYear","_isUTC","_offset","getDateOffset","getUTCOffset","chunkOffset","localeFamilies","globalLocale","defineLocale","_abbr","parentConfig","abbr","Locale","childProp","parentProp","mergeConfigs","getSetGlobalLocale","en","getWeek","getISOWeek","addUnitAlias","addUnitPriority","addRegexToken","addWeekParseToken","initWeek","addWeekYearFormatToken","_getWeekYearFormatCb","_getISOWeekYearFormatCb","parseTwoDigitYear","initWeekYear","initYear","initTimezone","unix","initTimestamp","initSecond","getQuarter","initQuarter","addOffsetFormatToken","_useUTC","_tzm","offsetFromString","initOffset","getParsingFlags","initMonth","initMinute","parseMs","initMillisecond","lowercase","_meridiemParse","hFormat","kFormat","matchMeridiem","kInput","_isPm","_meridiem","bigHour","pos1","pos2","initHour","_dayOfYear","initDayOfYear","getISODayOfWeek","invalidWeekday","initDayOfWeek","_dayOfMonthOrdinalParse","_ordinalParse","initDayOfMonth","setDefaultLocale","loadLocale","compareArrays","chooseLocale","orderingHash","mem","thresholds","quarters","quarter","weeks","_isValid","durationKeys","unitHasDecimal","isDurationValid","_milliseconds","_days","dur","absCeil","monthsToDays","monthsFromDays","daysToMonths","bubble","humanize","withSuffix","localeData","posNegDuration","substituteTimeAgo","localeKey","mathAbs","_units","normalizeUnits","parsedParts","isNowValid","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","yearStr","preprocessRFC2822","markInvalid","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","extractFromRFC2822Strings","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","isDateValid","expandFormat","formatArr","removeFormattingTokens","makeFormatFunction","formatMoment","localFormattingTokens","replaceLongDateFormatTokens","yearToUse","currentDate","nowValue","currentDateArray","weekYear","weekdayOverflow","GG","curWeek","gg","zi","_overflowWeeks","ai","_overflowWeekday","dayOfYear","resDayOfYear","dayOfYearFromWeeks","dayOfYearFromWeekInfo","_overflowDayOfYear","_nextDay","expectedWeekday","configFromISO","configFromRFC2822","totalParsedInputLength","inputLength","skipped","getParseRegexForToken","addTimeToArrayFromToken","_hour","meridiemHour","isPm","meridiemFixWrap","configFromArray","checkOverflow","_l","createInvalid","tempConfig","bestMoment","scoreToBeat","currentScore","configFromStringAndArray","configFromString","_arr","inputObject","normalizedInput","normalizeObjectUnits","configFromObject","configFromInput","prepareConfig","_input","isObjectEmpty","createFromConfig","endOf","inputMs","aspNetRegex","isoRegex","Duration","isDuration","absRound","parseIso","diffRes","_other","offsetDiff","cloneWithOffset","isBefore","positiveMomentsDifference","momentsDifference","convertDuration","inp","isAfter","isAdding","_num","_weekDay","parseWeekday","pluralForm","plurals","pluralize","months$1","monthsShort$6","thBeLocale","monthsParseExact","weekdaysParseExact","processHoursFunction","selectWeek","weekHoverHandler","selectDay","hoverDay","viewMonth","hoverMonth","viewYear","hoverYear","selectFromRanges","navigateTo","setViewMode","dayHoverHandler","daySelectHandler","monthHoverHandler","monthSelectHandler","yearHoverHandler","yearSelectHandler","setToday","clearDate","setRangeOnCalendar","positionServiceEnable","BsDatepickerConfig","useUtc","returnFocusToInput","displayMonths","showWeekNumbers","dateInputFormat","rangeSeparator","rangeInputFormat","monthTitle","yearTitle","dayLabel","monthLabel","yearLabel","weekNumbers","showTodayButton","showClearButton","todayPosition","clearPosition","todayButtonLabel","clearButtonLabel","customRangeButtonLabel","withTimepicker","allowedPositions","DATEPICKER_ANIMATION_TIMING","datepickerAnimation","customRanges","chosenRange","_daysCalendarSub","selectedTimeSub","minDate","_effects","setMinDate","maxDate","setMaxDate","daysDisabled","setDaysDisabled","datesDisabled","setDatesDisabled","datesEnabled","setDatesEnabled","setDisabled","dateCustomClasses","setDateCustomClasses","dateTooltipTexts","setDateTooltipTexts","daysCalendar$","_daysCalendar$","multipleCalendars","timeSelectHandler","dates","_stopPropagation","BsDatepickerActions","calculate","CALCULATE","FORMAT","FLAG","SELECT","selectTime","SELECT_TIME","changeViewMode","CHANGE_VIEWMODE","NAVIGATE_TO","navigateStep","NAVIGATE_OFFSET","SET_OPTIONS","selectRange","SELECT_RANGE","HOVER","isHovered","cell","SET_MIN_DATE","SET_MAX_DATE","SET_DAYSDISABLED","SET_DATESDISABLED","SET_DATESENABLED","SET_IS_DISABLED","SET_DATE_CUSTOM_CLASSES","SET_DATE_TOOLTIP_TEXTS","SET_LOCALE","BsLocaleService","_defaultLocale","_localeChange","localeChange","currentLocale","BsDatepickerEffects","_actions","_localeService","_bsDatepickerStore","_store","setRangeValue","setBindings","selectedTime","flaggedMonths","monthsCalendar","flaggedMonthsCalendar","yearsCalendar","yearsCalendarFlagged","viewMode","setEventHandlers","_cell","isOtherMonth","registerDatepickerSideEffects","monthsModel","monthModel","formattedMonths","selectedDate","selectedRange","yearsCalendarModel","hoveredDate","_initialView","initialDatepickerState","monthViewOptions","minBound","maxBound","dateDisabled","isSame","enabledDate","calendarIndex","ranges","compareDateWithMaxDateHelper","setCurrentTimeHelper","prevValue","initialDate","matrix","shiftDate","startingDate","firstDay","getFirstDayOfMonth","isFirstDayOfWeek","startingDayOffset","_startingDayOffset","calculateDateOffset","getStartingDayOfCalendar","daysMatrix","createMatrix","minMode","shift$1","viewDate","formatOptions","hideRightArrow","hideLeftArrow","disableRightArrow","disableLeftArrow","initialYearShift","yearsPerCalendar","previousInitialDate","calculateInitialDate","yearsMatrix","formatYearRangeTitle","sourceDate","displayOneMonthRange","isDisplayOneMonth","showPreviousMonth","monthIndex","calcDaysCalendar","preventChangeToNextMonth","formatMonthsCalendar","getFormatOptions","formatYearsCalendar","getYearsCalendarInitialDate","calculateReducer","daysCalendar","getWeekNumbers","getShiftedWeekdays","weekIndex","dayIndex","formatDaysCalendar","formatReducer","formattedMonth","isSameDay","isSelectionStart","isSelectionEnd","isInRange","isDateInRange","isDisabledDay","isDisabledDate","isEnabledDate","isToday","customClasses","dcc","tooltipText","newDay","isMonthDisabled","flagDaysCalendar","monthCalendar","rowIndex","hoveredMonth","newMonth","isYearDisabled","flagMonthsCalendar","yearIndex","hoveredYear","flagYearsCalendar","flagReducer","middleDate","shiftViewDate","navigateOffsetReducer","getNum","setFullDate","canSwitchMode","_time","copyTime","getViewDate","dte","BsDatepickerStore","MiniStore","_dispatcher","bsDatepickerReducer","MiniState","BsNavigationDirection","BsCurrentDateViewComponent","BsTimepickerViewComponent","ampm","BsCalendarLayoutComponent","Xo","i11","BsDatepickerNavigationViewComponent","onNavigate","onViewMode","navTo","BsDatepickerDayDecoratorComponent","_elRef","customTodayClass","BsDaysCalendarViewComponent","onHoverWeek","isiOS","maxTouchPoints","isShowTooltip","selectWeekDateRange","selectFromOtherMonth","selectedDay","lastDayOfRange","hasActiveDays","isWeekHovered","isOtherMonthHovered","dateData","BsMonthCalendarViewComponent","BsYearsCalendarViewComponent","BsCustomDatesViewComponent","BsDatepickerContainerComponent","BsDatepickerAbstractComponent","_positionService","animationState","isRangePicker","preventOverflow","event$","isTopPosition","isOtherMonthsActive","showTodayBtn","todayBtnLbl","todayPos","showClearBtn","clearBtnLbl","clearPos","customRangeBtnLbl","startTimepicker","ao","he","BsDatepickerDirective","cis","isDestroy$","bsValueChange","_dateInputFormat$","_datepicker","isOpen$","bsValue","_bsValue","bsConfig","initCurrentTime","setCurrentTimeOnDateSelect","dateInputFormat$","setConfig","_datepickerRef","initSubscribes","checkBsValue","unsubscribeSubscriptions","BsDaterangepickerContainerComponent","_rangeStack","dateRange","endTimepicker","rangesProcessing","maxDateRange","setMaxDateRangeOnCalendar","currentSelection","maxDateValueInMilliseconds","maxDateRangeInMilliseconds","va","BS_DATEPICKER_VALUE_ACCESSOR","BsDatepickerInputDirective","BS_DATEPICKER_VALIDATOR","_picker","_validatorChange","setBsValue","_setInputValue","onKeydownEvent","bsDate","_localeKey","utcAsLocal","BsDaterangepickerConfig","BsDaterangepickerDirective","_rangeInputFormat$","setDateRangesCurrentTimeOnDateSelect","rangeInputFormat$","checkRangesWithMaxDate","BS_DATERANGEPICKER_VALUE_ACCESSOR","BsDaterangepickerInputDirective","BS_DATERANGEPICKER_VALIDATOR","_isFirstDateValid","_isSecondDateValid","trimmedSeparator","_val","TimepickerActions","dropdownAnimation","BsDropdownState","insideClick","stopOnClickPropagation","isDisabledChange","toggleClick","counts","dropdownMenu","resolveDropdownMenu","BsDropdownContainerComponent","_factoryDropDownAnimation","BsDropdownConfig","BsDropdownDirective","_cis","dropup","_isInlineOpen","_isInited","_showInline","isBs4","_inlinedMenu","addBs4Polyfills","playAnimation","_dropup","_placement","removeShowClass","removeDropupStyles","navigationClick","firstActive","allRef","addShowClass","checkRightAlignment","addDropupStyles","isRightAligned","BsDropdownMenuDirective","BsDropdownToggleDirective","_documentClickListener","_escKeyUpListener","_initialState","actionsDispatcher$","actionInQueue$","_reducer","FocusTrapManager","_focusTrapStack","focusTrap","_disable","_enable","FocusTrapDirective","_previouslyFocusedElement","_autoCapture","autoCapture","_captureFocus","autoCaptureChange","FocusTrapModule","BsModalRef","ModalOptions","modalConfigDefaults","ignoreBackdropClick","animated","closeInterceptor","MODAL_CONFIG_DEFAULT_OVERRIDE","ModalContainerComponent","isModalHiding","clickStartedInContent","bsModalService","getModalsCount","checkScrollbar","setScrollbar","onClickStarted","onClickStop","setDismissReason","onEsc","_hide","zt","ModalBackdropComponent","_isAnimated","_isShown","Utils","currentId","BsModalService","clf","modalDefaultOption","onShow","onHide","isBodyOverflowing","originalBodyPadding","scrollbarWidth","modalsCount","loaders","_backdropLoader","_createLoaders","_showBackdrop","lastDismissReason","_showModal","_hideBackdrop","resetScrollbar","_hideModal","removeLoaders","isBackdropEnabled","isBackdropInDOM","backdropRef","removeBackdrop","modalLoader","modalContainerRef","newClass","copyEvent","indexToRemove","getScrollbarWidth","paddingRight","scrollDiv","PopoverConfig","PopoverContainerComponent","_bsVersions","isBs5","PlacementForBs5","getBsVer","checkMarginNecessity","checkMargins","PopoverDirective","popoverId","_popover","setAriaDescribedBy","_ariaDescribedby","popover","_delayTimeoutId","showPopover","popoverContext","popoverTitle","cancelDelayedTooltipShowing","_popoverCancelShowFn","_timer","parseTriggers","MapPlacementInToRL","auto","css","offsetParent","nextElementSibling","getStyleComputedProperty","getOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","setStart","setEnd","commonAncestorContainer","firstElementChild","isOffsetContainer","element1root","findCommonOffsetParent","sideA","sideB","getSize","sizes","getWindowSizes","horizScrollbar","vertScrollbar","getBordersSize","getClientRect","overflowX","overflowY","getScrollParent","getParentNode","fixedPosition","isHTML","childrenRect","parentRect","borderTopWidth","borderLeftWidth","side","upperSide","scrollingElement","isFixed","padding","boundariesElement","boundaries","getFixedPositionOffsetParent","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","getScroll","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","refRect","_j","_k","_m","getBoundaries","rects","sortedAreas","area","getArea","filteredAreas","allowedPosition","computedPlacement","variation","hostOffsets","targetRect","getOuterSizes","targetOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getOppositePlacement","availablePositions","checkPosition","checkPopoverMargin","isNumeric","arrowElement","isVertical","sideCapitalized","altSide","opSide","arrowElementSize","placementVariation","targetMarginSide","targetBorderSide","targetBorderRadius","borderRadius","targetSideArrowOffset","sideValue","arrow","isModifierEnabled","getTargetOffsets","computeAutoPlacement","flipOrder","_o","_q","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","getOppositeVariation","transformProp","targetStyles","isPlacementHorizontal","basePlacement","shiftVariation","shiftOffsets","positionService","getReferenceOffsets","positionElements","chainOfModifiers","hostElPosition","placementAuto","positionFixed","initData","modifiedData","update$$","triggerEvent$","positionElement","getOffsets","dataPlacement","updateContainerClass","_getHtmlElement","addPositionElement","elRef","BarComponent","striped","applyTypeClasses","_prevType","bgClass","ProgressbarComponent","isStacked","keyNavActions","NgTranscludeDirective","ngTransclude","_ngTransclude","TabsetConfig","isKeysAllowed","TabsetComponent","clazz","classMap","isDestroyed","_justified","_type","_isKeysAllowed","setClassMap","justified","addTab","removeTab","reselect","hasAvailableTabs","newActiveIndex","getClosestTabIndex","currentTab","removable","lastTab","firstTab","previousTab","nextTab","tabsLength","prevIndex","TabDirective","tabset","selectTab","_customClass","customClass","ariaLabelledby","updateMinutes","updateSeconds","toggleMeridian","changeTime","parseHours","parseMinutes","parseSeconds","isHourInputValid","isMinuteInputValid","isSecondInputValid","readonlyInput","mousewheel","arrowkeys","hourStep","minuteStep","secondsStep","showSpinners","showMeridian","meridians","TimepickerConfig","allowEmptyTime","showMinutes","hoursPlaceholder","minutesPlaceholder","secondsPlaceholder","ariaLabelHours","ariaLabelMinutes","ariaLabelSeconds","WRITE_VALUE","changeHours","CHANGE_HOURS","changeMinutes","CHANGE_MINUTES","changeSeconds","CHANGE_SECONDS","SET_TIME_UNIT","updateControls","UPDATE_CONTROLS","canIncrementHours","canIncrementMinutes","canIncrementSeconds","canDecrementHours","canDecrementMinutes","canDecrementSeconds","canToggleMeridian","canChangeValue","canChangeHours","_newTime","isValidLimit","canChangeMinutes","canChangeSeconds","_newControlsState","_newHour","hoursPerDay","_newMinutes","_newSeconds","hoursPerDayHalf","timepickerControls","_newState","TimepickerStore","timepickerReducer","TIMEPICKER_CONTROL_VALUE_ACCESSOR","TimepickerComponent","_timepickerActions","meridianChange","invalidHours","invalidMinutes","invalidSeconds","labelHours","labelMinutes","labelSeconds","timepickerSub","_renderTime","getControlsValue","controlsState","isTimepickerInputValid","isInputValid","isOneOfDatesIsEmpty","isSpinnersVisible","isEditable","resetValidation","prevDef","wheelSign","deltaY","updateHours","_updateTime","isInputLimitValid","isOneOfDatesEmpty","parseTime","_hours","ze","TooltipConfig","TooltipContainerComponent","in","TooltipDirective","tooltipId","tooltipChange","tooltipAnimation","tooltipFadeDuration","tooltipStateChanged","_tooltip","htmlContent","warnOnce","_appendToBody","_popupClass","_tooltipContext","_tooltipPopupDelay","_tooltipTrigger","showTooltip","_tooltipCancelShowFn","_delaySubscription","isManual","DEFAULT_ALIASES","hover","trimmedTriggers","parsedTriggers","triggerPair","Trigger","manualTriggers","_registerHide","useToggle","showFn","unsubscribeFn","win","BsVerions","guessedVersion","spanEl","checkPadding","paddingLeft","__theme","_guessBsVersion","asArray","currentPreviousNode","currentNextNode","createInternalArrayRepresentation","removedNode","findAll","lastItem","outArray","opener","bsVer","resVersion","currentBsVersion","crossorigin","integrity","cdnLink","_messagesHash","_hideMsg","NgxGaugeAppend","NgxGaugePrepend","NgxGaugeValue","NgxGaugeLabel","NgxGauge","_size","_min","_max","_animate","_margin","_animationRequestID","cap","thick","foregroundColor","isCanvasPropertyChanged","nv","ov","_update","_destroy","_updateSize","cssUnit","_getWidth","_getCanvasHeight","_canvas","_label","_reading","_getBounds","_drawShell","_getCenter","_getRadius","_clear","_drawMarkersAndTicks","_getBackgroundColorRanges","lineWidth","lineCap","beginPath","strokeStyle","bgOpacity","globalAlpha","arc","_getDisplacement","stroke","_drawFill","_addMarker","angle","font","rad","sin","x2","y2","moveTo","rad2","x3","y3","lineTo","rad3","x4","y4","closePath","fillStyle","save","textAlign","fillText","clearRect","_getHeight","_create","_getForegroundColorByRange","thresh","_getThresholdMatchForValue","_getNextThreshold","bounds","displacement","runtime","mv","charToInteger","integerToChar","hasContinuationBit","shouldNegate","TOKEN_LOGGER_CONFIG","_clone","updateConfig","partialUpdateConfig","partialConfig","configParamKey","cloneConfig","TOKEN_LOGGER_CONFIG_ENGINE_FACTORY","provideConfigEngine","NGXLoggerConfigEngine","TOKEN_LOGGER_MAPPER_SERVICE","NGXLoggerMapperService","httpBackend","sourceMapCache","logPositionCache","getLogPosition","stackLine","getStackLine","fileName","lineNumber","columnNumber","logPosition","getLocalPosition","sourceMapLocation","getSourceMapLocation","getSourceMap","defaultProxy","firstStackLine","proxiedSteps","positionStartIndex","positionEndIndex","dataArray","getTranspileLocation","locationStartIndex","locationEndIndex","mapFullPath","getMapping","sourceMap","sourceFileIndex","sourceCodeLine","sourceCodeColumn","mappings","generatedCodeColumn","columnIndex","decodedSection","vlq","distPosition","distPositionKey","httpResponse","configOrCount","resetOnSuccess","soFar","subscribeForRetry","resub","notifierSubscriber","retry","logPosition$","TOKEN_LOGGER_METADATA_SERVICE","NGXLoggerMetadataService","datePipe","computeTimestamp","defaultTimestamp","toISOString","timestampFormat","TOKEN_LOGGER_RULES_SERVICE","NGXLoggerRulesService","shouldCallWriter","shouldCallServer","shouldCallMonitor","TOKEN_LOGGER_SERVER_SERVICE","NGXLoggerServerService","secureErrorObject","secureAdditionalParameters","secureMessage","alterHttpRequest","httpRequest","logOnServer","logContent","defaultRequest","finalRequest","alteredRequest","customiseRequestBody","sendToServer","localMetadata","requestBody","customHttpHeaders","customHttpParams","httpResponseType","TOKEN_LOGGER_WRITER_SERVICE","TRACE","DEBUG","INFO","LOG","WARN","FATAL","OFF","DEFAULT_COLOR_SCHEME","NGXLoggerWriterService","prepareMetaStringFuncs","getTimestampToWrite","getLevelToWrite","getFileDetailsToWrite","getContextToWrite","isIE","logFunc","logIE","logModern","disableFileDetails","prepareMetaString","metaString","prepareMetaStringFunc","metaItem","getColor","configColorScheme","writeMessage","NGXLogger","configEngineFactory","metadataService","ruleService","mapperService","writerService","serverService","configEngine","setCustomHttpHeaders","getConfigSnapshot","setCustomParams","setWithCredentialsOptionValue","registerMonitor","_loggerMonitor","onLog","CustomNGXLoggerService","logMonitor","getNewInstance","customProvider","configProvider","configEngineFactoryProvider","NGXLoggerConfigEngineFactory","metadataProvider","ruleProvider","mapperProvider","writerProvider","serverProvider","NEW_CONFIG","INITIAL_CONFIG","thousandSeparator","decimalMarker","clearIfNotMatch","showTemplate","showMaskTyped","placeHolderCharacter","dropSpecialCharacters","hiddenInput","shownMaskExpression","separatorLimit","allowNegativeNumbers","validation","specialCharacters","leadZeroDateTime","triggerOnMaskChange","maskFilled","patterns","MaskApplierService","maskExpression","_formatWithSeparators","thousandSeparatorChar","decimalChars","decimalChar","rgx","percentage","getPrecision","checkAndRemoveSuffix","inputValue","checkInputPrecision","precisionRegEx","_charToRegExpExpression","precisionMatch","_compareOrIncludes","_shift","maskSpecialCharacters","maskAvailablePatterns","applyMaskWithPattern","maskAndPattern","customPattern","applyMask","justPasted","backspaced","backspaceShift","stepBack","inputArray","ipError","cpfCnpjError","_stripToDecimal","thousandSeparatorCharEscaped","invalidChars","invalidCharRegexp","strForSep","commaShift","shiftStep","inputSymbol","_checkSymbolMask","_shiftStep","daysCount","withoutDays","monthsCount","day1monthInput","day2monthInput","day1monthPaste","day2monthPaste","_findSpecialChar","newPosition","actualShift","onlySpecial","maskSymbol","charsToEscape","comparedValue","excludedValue","initConfig","configValue","_configFactory","commonjsGlobal","KeyboardEvent","_eventType","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","nativeIsArray","nativeIsView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","tagTester","Int8Array","hasStringTagBug","hasObjectTag","isIE11","isDataView","getInt8","getSizeProperty","sizeProperty","shallowProperty","createSizePropertyCheck","getByteLength","typedArrayPattern","isBufferLike","emulatedSet","nonEnumIdx","collectNonEnumProps","getLength","_wrapped","bufferSource","tagDataView","aStack","bStack","deepEq","toBufferView","areArrays","aCtor","bCtor","allKeys","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","ie11fingerprint","gi","Ni","Vi","extendOwn","deepGet","_has","argCount","optimizeCb","accum","escaper","testRegexp","replaceRegexp","xt","createEscaper","escapeMap","escapes","bareIdentifier","oldSettings","escapeChar","Ne","_chain","sourceFunc","boundFunc","callingContext","restArguments","boundArgs","executeBound","Ra","callArgs","kr","hasher","address","Os","later","_now","createPredicateIndexFinder","Ks","predicateFind","createIndexFinder","wr","createReduce","_s","contextPath","lastComputed","reStrSymbol","behavior","Xn","vi","keyInObj","zr","Hi","otherArrays","isSorted","mn","chainResult","allExports"],"sourceRoot":"webpack:///","sources":["./src/app/app.config.ts","./src/app/core/_helpers/n3tlogger.ts","./src/app/core/_models/datapoint.ts","./src/app/core/_models/dropdown-helper.ts","./src/app/core/_models/enums.ts","./src/app/core/_models/alert.ts","./src/app/core/_models/question-base.ts","./src/app/core/_models/question-textbox.ts","./src/app/core/_models/question-dropdown.ts","./src/app/core/_models/question-checkbox.ts","./src/app/core/_models/question-hr.ts","./src/app/core/_models/messages.ts","./src/app/core/_models/n3tResult.ts","./src/app/core/_models/self-service-order.ts","./src/app/core/_models/stats/usageVDC.ts","./src/app/core/_models/user.ts","./src/app/core/_services/alert.service.ts","./node_modules/@auth0/angular-jwt/__ivy_ngcc__/fesm2015/auth0-angular-jwt.js","./src/app/core/_services/authentication.service.ts","./src/app/core/gql/graphql/company/schema/input/getChannelCompanies.ts","./src/app/core/gql/graphql/shared/schema/type/login.ts","./src/app/core/_services/channel.service.ts","./src/app/core/gql/graphql/compute/schema/type/vMFlat.ts","./src/app/core/gql/graphql/compute/schema/type/typeVMSnapshot.ts","./src/app/core/gql/graphql/compute/schema/type/typeSnapshotSection.ts","./src/app/core/gql/graphql/compute/schema/type/typeSnapshotSectionSnapshot.ts","./src/app/core/gql/graphql/compute/schema/type/providerLink.ts","./src/app/core/gql/graphql/compute/schema/input/getVMScreenTicketInput.ts","./src/app/core/gql/graphql/compute/schema/input/updatePowerStatusInput.ts","./src/app/core/_services/cloudmanage.service.ts","./src/app/core/_services/common.service.ts","./src/app/core/_services/company.service.ts","./src/app/core/gql/graphql/compute/schema/input/createVMSnapInput.ts","./src/app/core/gql/graphql/compute/schema/type/vDC.ts","./src/app/core/gql/graphql/compute/schema/input/removeVMSnapInput.ts","./src/app/core/gql/graphql/compute/schema/input/revertVMSnapInput.ts","./src/app/core/_services/compute.service.ts","./src/app/core/gql/graphql/dps/schema/input/syncbackInput.ts","./src/app/core/gql/graphql/recovery/schema/input/failbackInput.ts","./src/app/core/gql/graphql/recovery/schema/input/removeTestFailoverInput.ts","./src/app/core/gql/graphql/recovery/schema/input/performFailoverInput.ts","./src/app/core/gql/graphql/dps/schema/input/getDPSJobStatusInput.ts","./src/app/core/gql/graphql/dps/schema/input/processJobStatusInput.ts","./src/app/core/gql/graphql/dps/schema/input/doDPSRestoreInput.ts","./src/app/core/gql/graphql/dps/schema/input/doCloneProcessInput.ts","./src/app/core/gql/graphql/dps/schema/input/doMountProcessInput.ts","./src/app/core/gql/graphql/dps/schema/type/typeJob.ts","./src/app/core/gql/graphql/dps/schema/type/typeBackups.ts","./src/app/core/_services/dps.service.ts","./src/app/core/_services/gql.service.ts","./src/app/core/_services/account.service.ts","./src/app/core/_services/password.service.ts","./src/app/core/gql/graphql/shared/schema/enums/runMode.ts","./src/app/core/gql/graphql/shared/schema/type/typeComputeTemplate.ts","./src/app/core/gql/graphql/shared/schema/type/typeVM.ts","./src/app/core/gql/graphql/shared/schema/type/typeDisk.ts","./src/app/core/_services/question.service.ts","./src/app/core/_services/question-control.service.ts","./src/app/core/_services/message.service.ts","./src/app/core/_models/list.ts","./src/app/core/_models/metrics-stats.ts","./src/app/core/gql/graphql/metrics/schema/input/addDatapointAndTimestampInput.ts","./src/app/core/gql/graphql/metrics/schema/input/addCorrelationByIdInput.ts","./src/app/core/_services/metrics.service.ts","./src/app/core/gql/graphql/keycloak/schema/input/addUserGroupInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/userActionsInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/addUserInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/getKeycloakSessionInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/getUserByEmailInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/getUserGroupsInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/deleteUserInput.ts","./src/app/core/gql/graphql/shared/schema/enums/datacenterLocationsString.ts","./src/app/core/_services/n3tKeycloak.service.ts","./src/app/core/_services/n3tStore.service.ts","./src/app/core/gql/graphql/products/schema/type/selfServicePayload.ts","./src/app/core/gql/graphql/products/schema/input/provisionSelfServiceOrderInput.ts","./src/app/core/gql/graphql/products/schema/type/typeSelfServiceModel.ts","./src/app/core/gql/graphql/products/schema/type/selfServiceProduct.ts","./src/app/core/_services/order.service.ts","./src/app/core/gql/graphql/products/schema/type/typeCostContainerReq.ts","./src/app/core/gql/graphql/products/schema/input/getProductPricingInput.ts","./src/app/core/gql/graphql/products/schema/type/typeCostOrderReq.ts","./src/app/core/gql/graphql/products/schema/type/typeCostProductReq.ts","./src/app/core/_services/products.service.ts","./src/app/core/_models/provision-job-status-req.ts","./src/app/core/_services/provision-job.service.ts","./src/app/core/_services/query-ref.service.ts","./src/app/core/_services/shoppingcart.service.ts","./src/app/core/_services/tasks.service.ts","./node_modules/ng2-simple-timer/__ivy_ngcc__/fesm2015/ng2-simple-timer.js","./src/app/core/_services/timer.service.ts","./src/app/core/gql/graphql/permissions/schema/input/createUserMembershipInput.ts","./src/app/core/gql/graphql/permissions/schema/input/typeLoginInput.ts","./src/app/core/gql/graphql/permissions/schema/input/typeMembershipInput.ts","./src/app/core/_services/user.service.ts","./src/app/core/components/dynamicform/dynamic-form-question/dynamic-form-question.component.html","./src/app/core/components/dynamicform/dynamic-form-question/dynamic-form-question.component.ts","./src/app/core/components/dynamicform/dynamic-form/dynamic-form.component.html","./src/app/core/components/dynamicform/dynamic-form/dynamic-form.component.ts","./src/app/core/components/alert/alert.component.html","./src/app/core/components/alert/alert.component.ts","./src/app/core/components/vdcstats/vdcstats.component.html","./src/app/core/components/vdcstats/vdcstats.component.ts","./src/app/core/components/workload/workload.component.html","./src/app/core/components/workload/workload.component.ts","./src/app/core/components/vmactions/vmactions.component.html","./src/app/core/components/vmactions/vmactions.component.ts","./src/app/core/_services/validation.service.ts","./src/app/core/components/control-messages/control-messages/control-messages.component.html","./src/app/core/components/control-messages/control-messages/control-messages.component.ts","./src/app/core/components/changechannel/changechannel.component.html","./src/app/core/components/changechannel/changechannel.component.ts","./src/app/core/components/workloadsgrid/workloadsgrid/workloadsgrid.component.ts","./src/app/core/components/workloadsgrid/workloadsgrid/workloadsgrid.component.html","./src/app/core/gql/graphql/dps/schema/type/dpsAction.ts","./src/app/core/components/dpsbackups/dpsbackups/dpsbackups.component.html","./src/app/core/components/dpsbackups/dpsbackups/dpsbackups.component.ts","./src/app/core/components/dpsgrid/dpsgrid/dpsgrid.component.html","./src/app/core/components/dpsgrid/dpsgrid/dpsgrid.component.ts","./src/app/core/components/dps-badge/dps-badge.component.ts","./src/app/core/components/dps-badge/dps-badge.component.html","./src/app/core/components/snapshot-badge/snapshot-badge.component.ts","./src/app/core/components/snapshot-badge/snapshot-badge.component.html","./src/app/core/components/resource/resource.component.html","./src/app/core/components/resource/resource.component.ts","./src/app/core/gql/graphql/backup/schema/input/getTenantOfferingItemsByEditionInput.ts","./src/app/core/gql/graphql/backup/schema/input/getTenantUsagesInput.ts","./src/app/core/gql/graphql/shared/schema/enums/n3tEnvironment.ts","./src/app/core/gql/graphql/backup/schema/type/tenantResources.ts","./src/app/core/gql/graphql/backup/schema/type/getOfferingItem.ts","./src/app/core/components/resource-dps/resource-dps.component.html","./src/app/core/components/resource-dps/resource-dps.component.ts","./src/app/core/components/jobmonitor/jobmonitor.component.html","./src/app/core/components/jobmonitor/jobmonitor.component.ts","./src/app/core/components/jobprogressbar/jobprogressbar.component.ts","./src/app/core/components/jobprogressbar/jobprogressbar.component.html","./src/app/core/components/messages/messages.component.html","./src/app/core/components/messages/messages.component.ts","./src/app/core/components/message/message.component.html","./src/app/core/components/message/message.component.ts","./src/app/core/components/booldisplay/booldisplay.component.html","./src/app/core/components/booldisplay/booldisplay.component.ts","./src/app/core/components/taskgrid/taskgrid.module.ts","./src/app/core/components/workloadoverview/workloadoverview.component.html","./src/app/core/components/workloadoverview/workloadoverview.component.ts","./node_modules/graphql/jsutils/invariant.mjs","./node_modules/graphql/language/location.mjs","./node_modules/graphql/language/printLocation.mjs","./node_modules/graphql/error/GraphQLError.mjs","./node_modules/graphql/jsutils/isObjectLike.mjs","./node_modules/graphql/error/syntaxError.mjs","./node_modules/graphql/language/directiveLocation.mjs","./node_modules/graphql/language/tokenKind.mjs","./node_modules/graphql/language/lexer.mjs","./node_modules/graphql/language/parser.mjs","./node_modules/graphql-tag/lib/index.js","./src/app/core/gql/graphql/cost/costApollo.ts","./src/app/core/gql/graphql/cost/schema/query/queryGetBillingInvoice.ts","./src/app/core/gql/graphql/cost/schema/query/queryGetCostFromBilling.ts","./src/app/core/gql/graphql/cost/costProxy.ts","./src/app/core/gql/graphql/brs/brsApollo.ts","./src/app/core/gql/graphql/brs/schema/mutation/mutationBRSLinks.ts","./src/app/core/gql/graphql/brs/brsProxy.ts","./src/app/core/gql/graphql/dps/dpsApollo.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetBackupsAll.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetHostBackup.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetHostBackups.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetDPSJobStatus.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetActiveMountStatus.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetBackupPolicyTemplates.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetBackupPolicies.ts","./src/app/core/gql/graphql/dps/schema/query/queryGetBackupProfiles.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoDPSRestore.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoCloneProcess.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoMountProcess.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationResumeProtection.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationRemoveProtection.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationToggleProtection.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoMountBackProcess.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoUnMountProcess.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoImageExpire.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDoBackupOnDemand.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationApplyBackupPolicy.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationDiscoverVMByName.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationSyncback.ts","./src/app/core/gql/graphql/dps/schema/mutation/mutationProcessJobStatus.ts","./src/app/core/gql/graphql/dps/dpsProxy.ts","./src/app/core/gql/graphql/rds/rdsApollo.ts","./src/app/core/gql/graphql/rds/schema/query/queryGetRecoveryUsages.ts","./src/app/core/gql/graphql/rds/rdsProxy.ts","./src/app/core/gql/graphql/cloudvalet/cloudvaletApollo.ts","./src/app/core/gql/graphql/cloudvalet/schema/query/queryGetSchedules.ts","./src/app/core/gql/graphql/cloudvalet/schema/query/queryCheckScheduleForHosts.ts","./src/app/core/gql/graphql/cloudvalet/schema/mutation/mutationProcessScheduledHostEdit.ts","./src/app/core/gql/graphql/cloudvalet/schema/mutation/mutationRemoveSchedule.ts","./src/app/core/gql/graphql/cloudvalet/cloudvaletProxy.ts","./src/app/core/gql/graphql/login/schema/input/deleteUserAndMembershipsInput.ts","./src/app/core/_helpers/jwt.parser.ts","./src/app/core/gql/graphql/login/loginApollo.ts","./src/app/core/gql/graphql/login/schema/query/queryGetAuthentication.ts","./src/app/core/gql/graphql/login/schema/query/queryGetAuthenticationByUserId.ts","./src/app/core/gql/graphql/login/schema/query/queryGetLogin.ts","./src/app/core/gql/graphql/login/schema/query/queryGetLogins.ts","./src/app/core/gql/graphql/login/schema/query/queryCheckUserPasscode.ts","./src/app/core/gql/graphql/login/schema/query/queryGetMemberships.ts","./src/app/core/gql/graphql/login/schema/query/queryGetOrgsSimple.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationChangePassword.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationChangePasswordWithToken.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationForgotPassword.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationCreateUserPsk.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationUpdateUserPsk.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationUpdateUserMembership.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationDeleteUserMembership.ts","./src/app/core/gql/graphql/login/schema/mutation/mutationDeleteUserAndMemberships.ts","./src/app/core/gql/graphql/login/loginProxy.ts","./src/app/core/gql/graphql/backup/backupApollo.ts","./src/app/core/gql/graphql/backup/schema/query/queryGetUserBackupAuth.ts","./src/app/core/gql/graphql/backup/schema/query/queryGetBackupClusterInfo.ts","./src/app/core/gql/graphql/backup/schema/query/queryGetTenantOfferingItemsByEdition.ts","./src/app/core/gql/graphql/backup/schema/query/queryGetTenantUsages.ts","./src/app/core/gql/graphql/backup/backupProxy.ts","./src/app/core/gql/graphql/audit/auditApollo.ts","./src/app/core/gql/graphql/audit/schema/query/queryGetAuditLogsByCompany.ts","./src/app/core/gql/graphql/audit/auditProxy.ts","./src/app/core/gql/graphql/products/productsApollo.ts","./src/app/core/gql/graphql/products/schema/query/queryGetProducts.ts","./src/app/core/gql/graphql/products/schema/query/queryGetProductsByService.ts","./src/app/core/gql/graphql/products/schema/query/queryGetProductPricing.ts","./src/app/core/gql/graphql/products/schema/query/queryGetProductSelfServicePricing.ts","./src/app/core/gql/graphql/products/schema/mutation/mutationProvisionSelfServiceOrder.ts","./src/app/core/gql/graphql/products/productsProxy.ts","./src/app/core/gql/graphql/recovery/recoveryApollo.ts","./src/app/core/gql/graphql/recovery/schema/mutation/mutationFailback.ts","./src/app/core/gql/graphql/recovery/schema/mutation/mutationPerformFailover.ts","./src/app/core/gql/graphql/recovery/schema/mutation/mutationRemoveTestFailover.ts","./src/app/core/gql/graphql/recovery/recoveryProxy.ts","./src/app/core/gql/portal/type/companyData.ts","./src/app/core/gql/graphql/permissions/schema/input/getRolesInput.ts","./src/app/core/gql/graphql/login/schema/input/getMembershipsInput.ts","./src/app/core/gql/graphql/company/schema/input/getCompanyIdentifiers.ts","./src/app/core/gql/graphql/login/schema/input/getLoginsInput.ts","./src/app/core/gql/graphql/login/schema/input/getOrgsSimpleInput.ts","./src/app/core/gql/graphql/backup/schema/input/getUserBackupAuthInput.ts","./src/app/core/gql/portal/portalApollo.ts","./src/app/core/gql/portal/query/queryPrefetchCoreData.ts","./src/app/core/gql/portal/portalProxy.ts","./src/app/core/gql/graphql/network/networkApollo.ts","./src/app/core/gql/graphql/network/schema/query/queryGetNetworksByLocation.ts","./src/app/core/gql/graphql/network/schema/query/queryGetVpnsByLocation.ts","./src/app/core/gql/graphql/network/networkProxy.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetCompute.ts","./src/app/core/gql/graphql/compute/computeApollo.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetVMWareProviderTokens.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetVMScreenTicket.ts","./src/app/core/gql/graphql/compute/schema/mutation/mutationUpdatePowerStatus.ts","./src/app/core/gql/graphql/compute/schema/mutation/mutationUpdateCpuCount.ts","./src/app/core/gql/graphql/compute/schema/mutation/mutationUpdateMemory.ts","./src/app/core/gql/graphql/compute/schema/mutation/mutationCreateVMSnap.ts","./src/app/core/gql/graphql/compute/schema/mutation/mutationRemoveVMSnap.ts","./src/app/core/gql/graphql/compute/schema/mutation/mutationRevertVMSnap.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetAppBackupTemplate.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetAppBackup.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetComputeStats.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetComputeTemplates.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetFilteredNetworks.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetSnapProtectStatus.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetMeteringVmProperties.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetTasks.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetTask.ts","./src/app/core/gql/graphql/compute/schema/query/queryGetAllTasks.ts","./src/app/core/gql/graphql/compute/computeProxy.ts","./src/app/core/gql/graphql/scheduler/schedulerApollo.ts","./src/app/core/gql/graphql/scheduler/schema/query/queryGetVMSchedule.ts","./src/app/core/gql/graphql/scheduler/schema/query/queryGetScheduleList.ts","./src/app/core/gql/graphql/scheduler/schema/mutation/mutationAddVMToSchedule.ts","./src/app/core/gql/graphql/scheduler/schema/mutation/mutationRemoveVMFromSchedule.ts","./src/app/core/gql/graphql/scheduler/schedulerProxy.ts","./src/app/core/gql/graphql/templates/templatesApollo.ts","./src/app/core/gql/graphql/templates/schema/query/queryGetTemplates.ts","./src/app/core/gql/graphql/templates/schema/query/queryGetJobStatus.ts","./src/app/core/gql/graphql/templates/schema/mutation/mutationPostTemplate.ts","./src/app/core/gql/graphql/templates/templatesProxy.ts","./src/app/core/gql/graphql/permissions/permissionsApollo.ts","./src/app/core/gql/graphql/permissions/schema/query/queryGetRoles.ts","./src/app/core/gql/graphql/permissions/schema/query/queryGetRolesByUser.ts","./src/app/core/gql/graphql/permissions/schema/query/queryGetCompanyUsers.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationUpdateRolesByUser.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationCreateCompanyUser.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationCreateProviderMembership.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationCreatePortalMembership.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationCreateUserMembership.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationDeleteProviderUserAndMemberships.ts","./src/app/core/gql/graphql/permissions/schema/mutation/mutationUpdateProviderUserMembership.ts","./src/app/core/gql/graphql/permissions/permissionsProxy.ts","./src/app/core/gql/graphql/authenticate/authenticateApollo.ts","./src/app/core/gql/graphql/authenticate/authenticateProxy.ts","./src/app/core/gql/graphql/monitor/monitorApollo.ts","./src/app/core/gql/graphql/monitor/schema/query/queryGetBRSEventLogsByCompany.ts","./src/app/core/gql/graphql/monitor/schema/query/queryGetBRSAlertLogsByCompany.ts","./src/app/core/gql/graphql/monitor/monitorProxy.ts","./src/app/core/gql/graphql/company/companyApollo.ts","./src/app/core/gql/graphql/company/schema/query/queryGetCompany.ts","./src/app/core/gql/graphql/company/schema/query/queryGetCompanyIdentifiers.ts","./src/app/core/gql/graphql/company/schema/query/queryGetCompanyChannel.ts","./src/app/core/gql/graphql/company/schema/query/queryGetCompanyChannelAdmin.ts","./src/app/core/gql/graphql/company/companyProxy.ts","./src/app/core/gql/graphql/keycloak/keycloakApollo.ts","./src/app/core/gql/graphql/keycloak/schema/query/queryGetClients.ts","./src/app/core/gql/graphql/keycloak/schema/mutation/mutationAddUser.ts","./src/app/core/gql/graphql/keycloak/schema/query/queryGetKeycloakSession.ts","./src/app/core/gql/graphql/keycloak/schema/mutation/mutationUserActions.ts","./src/app/core/gql/graphql/keycloak/schema/query/queryGetUserByEmail.ts","./src/app/core/gql/graphql/keycloak/schema/mutation/mutationDeleteUser.ts","./src/app/core/gql/graphql/keycloak/schema/query/queryGetUserGroups.ts","./src/app/core/gql/graphql/keycloak/schema/mutation/mutationUpdateUser.ts","./src/app/core/gql/graphql/keycloak/schema/query/queryGetGroupByName.ts","./src/app/core/gql/graphql/keycloak/schema/mutation/mutationAddUserToGroup.ts","./src/app/core/gql/graphql/keycloak/keycloakProxy.ts","./src/app/core/gql/graphql/metrics/schema/mutation/addDatapoint.ts","./src/app/core/gql/graphql/metrics/MetricsApollo.ts","./src/app/core/gql/graphql/metrics/schema/mutation/addCorrelation.ts","./src/app/core/gql/graphql/metrics/schema/mutation/addCorrelationById.ts","./src/app/core/gql/graphql/metrics/schema/mutation/addDatapointAndTimestamp.ts","./src/app/core/gql/graphql/metrics/schema/query/getDatapointsByUser.ts","./src/app/core/gql/graphql/metrics/metricsProxy.ts","./src/app/core/gql/graphql/n3tapi/N3TAPIApollo.ts","./src/app/core/gql/graphql/n3tapi/schema/query/getCrossSiteResource.ts","./src/app/core/gql/graphql/n3tapi/n3tapiProxy.ts","./src/app/core/gql/graphql/messageQueue/messageQueueApollo.ts","./src/app/core/gql/graphql/messageQueue/schema/query/queryGetJobStatus.ts","./src/app/core/gql/graphql/messageQueue/schema/mutation/mutationPostJob.ts","./src/app/core/gql/graphql/messageQueue/messageQueueProxy.ts","./src/app/core/gql/graphql/notifier/notifierApollo.ts","./src/app/core/gql/graphql/notifier/schema/mutation/mutationSendNotifierMessage.ts","./src/app/core/gql/graphql/notifier/notifierProxy.ts","./src/app/core/gql/graphql.ts","./src/app/core/gql/graphql/company/schema/type/company.ts","./src/app/core/gql/graphql/compute/schema/input/getSnapProtectStatusInput.ts","./src/app/core/gql/graphql/login/schema/type/membership.ts","./src/app/core/gql/graphql/permissions/schema/input/createPortalMembershipInput.ts","./src/app/core/gql/graphql/permissions/schema/input/createProviderMembershipInput.ts","./src/app/core/gql/graphql/permissions/schema/input/getCompanyUsersInput.ts","./src/app/core/gql/graphql/permissions/schema/input/updateRolesByUserInput.ts","./src/app/core/gql/graphql/shared/schema/enums/app.ts","./src/app/core/gql/graphql/shared/schema/enums/datacenterLocations.ts","./src/app/features/account/login-channel/login-channel.component.html","./src/app/features/account/login-channel/login-channel.component.ts","./src/app/features/account/layout.component.ts","./src/app/features/account/layout.component.html","./src/app/features/account/login.component.html","./src/app/features/account/login.component.ts","./src/app/features/account/register.component.html","./src/app/features/account/register.component.ts","./src/app/features/account/account-routing.module.ts","./src/app/features/account/logout.component.ts","./src/app/features/account/account.module.ts","./src/app/shared/dialogs/dialogs.module.ts","./src/app/shared/dialogs/confirm-dialog/confirm-dialog.component.ts","./src/app/shared/dialogs/confirm-timer-dialog/confirm-timer-dialog.component.ts","./src/app/shared/dialogs/dialogs.service.ts","./src/app/shared/layout/settings-modal/settings-modal.service.ts","./node_modules/@angular/material/fesm2015/chips.mjs","./node_modules/@angular/cdk/fesm2015/text-field.mjs","./node_modules/@angular/material/fesm2015/input.mjs","./node_modules/@angular/material/fesm2015/slider.mjs","./node_modules/@angular/material/fesm2015/dialog.mjs","./node_modules/@angular/material/fesm2015/autocomplete.mjs","./node_modules/@angular/material/fesm2015/badge.mjs","./node_modules/@angular/material/fesm2015/bottom-sheet.mjs","./node_modules/@angular/material/fesm2015/button-toggle.mjs","./node_modules/@angular/material/fesm2015/checkbox.mjs","./node_modules/@angular/cdk/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/datepicker.mjs","./node_modules/@angular/cdk/fesm2015/accordion.mjs","./node_modules/@angular/material/fesm2015/expansion.mjs","./node_modules/@angular/material/fesm2015/grid-list.mjs","./node_modules/@angular/material/fesm2015/menu.mjs","./node_modules/@angular/material/fesm2015/tooltip.mjs","./node_modules/@angular/material/fesm2015/paginator.mjs","./node_modules/@angular/material/fesm2015/progress-spinner.mjs","./node_modules/@angular/material/fesm2015/radio.mjs","./node_modules/@angular/material/fesm2015/sidenav.mjs","./node_modules/@angular/material/fesm2015/sort.mjs","./node_modules/@angular/cdk/fesm2015/table.mjs","./node_modules/@angular/material/fesm2015/table.mjs","./node_modules/@angular/material/fesm2015/toolbar.mjs","./node_modules/@angular/cdk/fesm2015/tree.mjs","./node_modules/@angular/material/fesm2015/tree.mjs","./src/app/shared/material/material.module.ts","./src/app/shared/monitoring/monitoring.module.ts","./src/app/shared/panels/panel/panel.component.html","./src/app/shared/panels/panel/panel.component.ts","./src/app/shared/panels/panels.module.ts","./src/app/shared/ui/ui.module.ts","./src/app/shared/utils/animations.ts","./src/app/shared/utils/directives/stub-click.directive.ts","./src/app/shared/utils/utils.functions.ts","./src/app/shared/utils/utils.module.ts","./src/app/store/adminUser/admin-user.actions.ts","./src/app/store/adminUser/admin-user.reducer.ts","./src/app/store/adminUser/admin-user.selectors.ts","./src/app/store/app/app.actions.ts","./src/app/store/authUser/auth-user.actions.ts","./src/app/store/authUser/auth-user.reducer.ts","./src/app/store/authUser/auth-user.selectors.ts","./src/app/store/backupAuth/backup-auth.actions.ts","./src/app/store/backupAuth/backup-auth.reducer.ts","./src/app/store/backupAuth/backup-auth.selectors.ts","./src/app/store/backupClusterInfo/backup-cluster-info.actions.ts","./src/app/store/backupClusterInfo/backup-cluster-info.reducer.ts","./src/app/store/backupClusterInfo/backup-cluster-info.selectors.ts","./src/app/store/backupJob/backup-job.actions.ts","./src/app/store/backupJob/backup-job.reducer.ts","./src/app/store/backupJob/backup-job.selectors.ts","./src/app/store/backup/backup.actions.ts","./src/app/store/backup/backup.reducer.ts","./src/app/store/backup/backup.selectors.ts","./src/app/store/brsLink/brs-link.actions.ts","./src/app/store/brsLink/brs-link.reducer.ts","./src/app/store/brsLink/brs-link.selectors.ts","./src/app/store/channelCompany/channel-company.actions.ts","./src/app/store/channelCompany/channel-company.reducer.ts","./src/app/store/channelCompany/channel-company.selectors.ts","./src/app/store/companyIdentifier/company-identifier.actions.ts","./src/app/store/companyIdentifier/company-identifier.reducer.ts","./src/app/store/companyIdentifier/company-identifier.selectors.ts","./src/app/store/companyUser/company-user.actions.ts","./src/app/store/companyUser/company-user.reducer.ts","./src/app/store/companyUser/company-user.selectors.ts","./src/app/store/company/company.actions.ts","./src/app/store/company/company.reducer.ts","./src/app/store/company/company.selectors.ts","./src/app/store/dps/dps.actions.ts","./src/app/store/dps/dps.reducer.ts","./src/app/store/dps/dps.selectors.ts","./src/app/store/gql/gql.actions.ts","./src/app/store/gql/gql.selectors.ts","./src/app/store/membership/membership.actions.ts","./src/app/store/membership/membership.reducer.ts","./src/app/store/membership/membership.selectors.ts","./src/app/store/metrics/metrics.actions.ts","./src/app/store/metrics/metrics.reducer.ts","./src/app/store/metrics/metrics.selectors.ts","./src/app/store/network/network.actions.ts","./src/app/store/network/network.reducer.ts","./src/app/store/network/network.selectors.ts","./src/app/store/org/org.actions.ts","./src/app/store/org/org.reducer.ts","./src/app/store/org/org.selectors.ts","./src/app/store/processJob/process-job.actions.ts","./src/app/store/processJob/process-job.reducer.ts","./src/app/store/processJob/process-job.selectors.ts","./src/app/store/product/product.actions.ts","./src/app/store/product/product.reducer.ts","./src/app/store/product/product.selectors.ts","./src/app/store/providerToken/provider-token.actions.ts","./src/app/store/providerToken/provider-token.reducer.ts","./src/app/store/providerToken/provider-token.selectors.ts","./src/app/store/role/role.actions.ts","./src/app/store/role/role.reducer.ts","./src/app/store/role/role.selectors.ts","./src/app/store/selectedTemplates/selected-templates.actions.ts","./src/app/store/selectedTemplates/selected-templates.reducer.ts","./src/app/store/selectedTemplates/selected-templates.selectors.ts","./src/app/store/settings/settings.actions.ts","./src/app/store/settings/settings.meta.ts","./src/app/store/settings/settings.reducer.ts","./src/app/store/settings/settings.selectors.ts","./src/app/store/snapshot/snapshot.actions.ts","./src/app/store/task/task.actions.ts","./src/app/store/task/task.reducer.ts","./src/app/store/task/task.selectors.ts","./src/app/store/templates/templates.actions.ts","./src/app/store/templates/templates.reducer.ts","./src/app/store/templates/templates.selectors.ts","./src/app/store/tenantOfferingItems/tenant-offering-items.actions.ts","./src/app/store/tenantOfferingItems/tenant-offering-items.reducer.ts","./src/app/store/tenantOfferingItems/tenant-offering-items.selectors.ts","./src/app/store/tenantUsages/tenant-usages.actions.ts","./src/app/store/tenantUsages/tenant-usages.reducer.ts","./src/app/store/tenantUsages/tenant-usages.selectors.ts","./src/app/store/userLogin/user-login.actions.ts","./src/app/store/userLogin/user-login.reducer.ts","./src/app/store/userLogin/user-login.selectors.ts","./src/app/store/vdc/vdc.actions.ts","./src/app/store/vdc/vdc.reducer.ts","./src/app/store/vdc/vdc.selectors.ts","./src/app/store/vmFlat/vm-flat.actions.ts","./src/app/store/vmFlat/vm-flat.reducer.ts","./src/app/store/vmFlat/vm-flat.selectors.ts","./src/environments/environment.prod.spa.ts","./src/app/core/_services/session.service.ts","./src/app/app.component.ts","./node_modules/@apollo/client/link/error/index.js","./node_modules/@apollo/client/link/core/concat.js","./node_modules/@apollo/client/cache/core/cache.js","./node_modules/@apollo/client/cache/core/types/common.js","./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","./node_modules/@apollo/client/cache/inmemory/entityStore.js","./node_modules/@apollo/client/cache/inmemory/readFromStore.js","./node_modules/@apollo/client/cache/inmemory/key-extractor.js","./node_modules/@apollo/client/cache/inmemory/policies.js","./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","./node_modules/@apollo/client/cache/inmemory/writeToStore.js","./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","./node_modules/apollo-angular/fesm2015/ngApolloLinkHttp.mjs","./src/app/graphql.module.ts","./src/app/core/_helpers/auth.guard.ts","./src/app/core/_helpers/jwt.interceptor.ts","./src/app/core/_helpers/metrics.interceptor.ts","./src/app/core/error/http-error.interceptor.ts","./src/app/core/resolvers/app.resolver.ts","./src/app/core/core.module.ts","./src/app/store/navigation/navigation.actions.ts","./node_modules/rxjs/dist/esm/internal/Notification.js","./node_modules/rxjs/dist/esm/internal/operators/groupBy.js","./node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js","./node_modules/@ngrx/effects/fesm2015/ngrx-effects.mjs","./node_modules/rxjs/dist/esm/internal/operators/materialize.js","./node_modules/rxjs/dist/esm/internal/operators/dematerialize.js","./node_modules/@ngrx/router-store/fesm2015/ngrx-router-store.mjs","./src/app/store/navigation/navigation.effects.ts","./src/app/app.navigation.ts","./src/app/store/navigation/navigation.reducer.ts","./src/app/store/navigation/navigation.selectors.ts","./node_modules/bn-ng-idle/fesm2015/bn-ng-idle.mjs","./src/app/shared/layout/main/main.component.ts","./src/app/shared/layout/main/main.component.html","./src/app/shared/layout/shortcut-modal/shortcut-modal.component.ts","./src/app/shared/layout/shortcut-modal/shortcut-modal.component.html","./src/app/shared/layout/shortcut-modal/shortcut-modal.service.ts","./src/app/shared/layout/logo/logo.component.ts","./src/app/shared/layout/logo/logo.component.html","./src/app/shared/navigation/nav-filter/nav-filter.component.html","./src/app/shared/navigation/nav-filter/nav-filter.component.ts","./src/app/shared/navigation/nav-info-card/nav-info-card.component.ts","./src/app/shared/navigation/nav-info-card/nav-info-card.component.html","./src/app/shared/navigation/nav-item/nav-item.component.html","./src/app/shared/navigation/nav-item/nav-item.component.ts","./src/app/shared/navigation/nav/nav.component.html","./src/app/shared/navigation/nav/nav.component.ts","./src/app/shared/navigation/nav-filter-msg/nav-filter-msg.component.html","./src/app/shared/navigation/nav-filter-msg/nav-filter-msg.component.ts","./src/app/shared/navigation/nav-footer/nav-footer.component.ts","./src/app/shared/navigation/nav-footer/nav-footer.component.html","./src/app/shared/navigation/navigation/navigation.component.ts","./src/app/shared/layout/sidebar/sidebar.component.html","./src/app/shared/layout/sidebar/sidebar.component.ts","./src/app/shared/layout/settings-shortcut/settings-shortcut.component.ts","./src/app/shared/layout/settings-shortcut/settings-shortcut.component.html","./src/app/shared/layout/dropdown-user/dropdown-user.component.html","./src/app/shared/layout/dropdown-user/dropdown-user.component.ts","./src/app/shared/layout/page-header/page-header.component.html","./src/app/shared/layout/page-header/page-header.component.ts","./src/app/store/router/router.reducer.ts","./src/app/store/router/router.selectors.ts","./src/app/store/router/router.effects.ts","./src/app/store/router/router.actions.ts","./src/app/shared/layout/page-breadcrumb/page-breadcrumb.component.html","./src/app/shared/layout/page-breadcrumb/page-breadcrumb.component.ts","./src/app/core/gql/graphql/compute/schema/input/getTasksInput.ts","./src/app/core/gql/graphql/compute/schema/input/getAllTasksInput.ts","./src/app/core/gql/graphql/compute/schema/type/taskOwner.ts","./src/app/core/components/taskgrid/taskgrid.component.html","./src/app/core/components/taskgrid/taskgrid.component.ts","./src/app/shared/layout/page-footer/page-footer.component.ts","./src/app/shared/layout/page-footer/page-footer.component.html","./src/app/shared/navigation/navigation.module.ts","./src/app/shared/layout/fab-shortcut/fab-shortcut.component.ts","./src/app/shared/layout/fab-shortcut/fab-shortcut.component.html","./node_modules/ngx-bootstrap/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs","./src/app/shared/layout/layout.module.ts","./src/app/app-routing.module.ts","./src/app/core/error/n3t-handler.ts","./src/app/core/error/handlers/test-error-handler.ts","./src/app/core/error/handlers/test-error2-handler.ts","./src/app/core/error/handlers/list.ts","./src/app/core/error/n3t-error-handler.ts","./src/app/core/error/global-error-handler.ts","./src/app/core/error/error-handler-module.ts","./src/app/store/app/app.reducer.ts","./src/app/store/companyUserMemberships/company-user-memberships.actions.ts","./src/app/store/app/app.effects.ts","./src/app/store/app/app.selectors.ts","./src/app/store/adminUser/admin-user.effects.ts","./src/app/store/authUser/auth-user.effects.ts","./src/app/store/metrics/metrics.effects.ts","./src/app/store/brsLink/brs-link.effects.ts","./src/app/store/channelCompany/channel-company.effects.ts","./src/app/store/company/company.effects.ts","./src/app/store/companyIdentifier/company-identifier.effects.ts","./src/app/store/gql/gql.reducer.ts","./src/app/core/gql/graphql/products/schema/input/getProductSelfServiceInput.ts","./src/app/core/gql/graphql/network/schema/type/networkData.ts","./src/app/store/gql/gql.effects.ts","./src/app/store/membership/membership.effects.ts","./src/app/store/network/network.effects.ts","./src/app/store/org/org.effects.ts","./src/app/store/providerToken/provider-token.effects.ts","./src/app/store/role/role.effects.ts","./src/app/store/task/task.effects.ts","./src/app/store/userLogin/user-login.effects.ts","./src/app/store/vdc/vdc.effects.ts","./src/app/store/vmFlat/vm-flat.effects.ts","./src/app/store/snapshot/snapshot.reducer.ts","./src/app/store/snapshot/snapshot.effects.ts","./src/app/store/snapshot/snapshot.selectors.ts","./src/app/core/gql/graphql/templates/schema/input/getTemplatesInput.ts","./src/app/store/templates/templates.effects.ts","./src/app/store/selectedTemplates/selected-templates.effects.ts","./src/app/store/product/product.effects.ts","./src/app/core/gql/graphql/dps/schema/type/getBackupsAllResponse.ts","./src/app/store/dps/dps.effects.ts","./src/app/core/gql/graphql/company/schema/type/companyidentifier.ts","./src/app/core/gql/graphql/dps/schema/input/getBackupsAllInput.ts","./src/app/core/gql/graphql/dps/schema/input/sessionInput.ts","./src/app/core/gql/graphql/backup/schema/input/getBackupClusterInfoInput.ts","./src/app/store/backupAuth/backup-auth.effects.ts","./src/app/store/backupClusterInfo/backup-cluster-info.effects.ts","./src/app/store/backup/backup.effects.ts","./src/app/store/backupJob/backup-job.effects.ts","./src/app/store/processJob/process-job.effects.ts","./src/app/core/gql/graphql/user/schema/type/groupRepresentation.ts","./src/app/core/gql/graphql/keycloak/schema/input/getGroupByNameInput.ts","./src/app/core/gql/graphql/keycloak/schema/input/updateUserInput.ts","./src/app/core/gql/graphql/permissions/schema/input/createCompanyUserInput.ts","./src/app/core/gql/graphql/permissions/schema/input/rolesInput.ts","./src/app/store/companyUser/company-user.effects.ts","./src/app/store/companyUserMemberships/company-user-memberships.reducer.ts","./src/app/store/companyUserMemberships/company-user-memberships.effects.ts","./src/app/store/companyUserMemberships/company-user-memberships.selectors.ts","./src/app/store/tenantOfferingItems/tenant-offering-items.effects.ts","./src/app/store/tenantUsages/tenant-usages.effects.ts","./node_modules/ngrx-store-localstorage/fesm2015/ngrx-store-localstorage.mjs","./src/app/store/index.ts","./src/app/app.validators.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/config.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/detect-it/dist/detect-it.esm.js","./node_modules/@angular-slider/ngx-slider/__ivy_ngcc__/fesm2015/angular-slider-ngx-slider.js","./node_modules/@apollo/client/node_modules/@wry/context/lib/context.esm.js","./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js","./node_modules/@apollo/client/node_modules/optimism/lib/bundle.esm.js","./node_modules/@wry/trie/lib/trie.esm.js","./node_modules/angular-archwizard/__ivy_ngcc__/fesm2015/angular-archwizard.js","./node_modules/angular-datatables/src/angular-datatables.directive.js","./node_modules/angular-datatables/src/angular-datatables.module.js","./node_modules/angular-progress-bar/__ivy_ngcc__/fesm2015/angular-progress-bar.js","./node_modules/angular2-uuid/index.js","./node_modules/deepmerge/dist/cjs.js","./node_modules/guid-typescript/dist/guid.js","./node_modules/js-sha256/src/sha256.js","./node_modules/keycloak-js/node_modules/base64-js/index.js","./node_modules/lodash/lodash.js","./node_modules/source-map-loader/dist/cjs.js","./node_modules/ng-multiselect-dropdown/__ivy_ngcc__/fesm2015/ng-multiselect-dropdown.js","./node_modules/reflect-metadata/Reflect.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throttle.js","./node_modules/rxjs/dist/esm/internal/operators/throttleTime.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/timeout.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/subsink/dist/es2015/subsink.js","./node_modules/zxcvbn/lib/adjacency_graphs.js","./node_modules/zxcvbn/lib/feedback.js","./node_modules/zxcvbn/lib/frequency_lists.js","./node_modules/zxcvbn/lib/main.js","./node_modules/zxcvbn/lib/matching.js","./node_modules/zxcvbn/lib/scoring.js","./node_modules/zxcvbn/lib/time_estimates.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/cdk/fesm2015/a11y.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/collections.mjs","./node_modules/@angular/cdk/fesm2015/keycodes.mjs","./node_modules/@angular/cdk/fesm2015/layout.mjs","./node_modules/@angular/cdk/fesm2015/observers.mjs","./node_modules/@angular/cdk/fesm2015/overlay.mjs","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/@angular/cdk/fesm2015/scrolling.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/material/fesm2015/button.mjs","./node_modules/@angular/material/fesm2015/card.mjs","./node_modules/@angular/material/fesm2015/core.mjs","./node_modules/@angular/material/fesm2015/divider.mjs","./node_modules/@angular/material/fesm2015/form-field.mjs","./node_modules/@angular/material/fesm2015/icon.mjs","./node_modules/@angular/material/fesm2015/list.mjs","./node_modules/@angular/material/fesm2015/progress-bar.mjs","./node_modules/@angular/material/fesm2015/select.mjs","./node_modules/@angular/material/fesm2015/slide-toggle.mjs","./node_modules/@angular/material/fesm2015/snack-bar.mjs","./node_modules/@angular/material/fesm2015/tabs.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@apollo/client/cache/inmemory/helpers.js","./node_modules/@apollo/client/cache/inmemory/object-canon.js","./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","./node_modules/@apollo/client/link/core/ApolloLink.js","./node_modules/@apollo/client/link/utils/createOperation.js","./node_modules/@apollo/client/link/utils/transformOperation.js","./node_modules/@apollo/client/link/utils/validateOperation.js","./node_modules/@apollo/client/node_modules/zen-observable-ts/module.js","./node_modules/@apollo/client/utilities/common/arrays.js","./node_modules/@apollo/client/utilities/common/canUse.js","./node_modules/@apollo/client/utilities/common/cloneDeep.js","./node_modules/@apollo/client/utilities/common/compact.js","./node_modules/@apollo/client/utilities/common/makeUniqueId.js","./node_modules/@apollo/client/utilities/common/mergeDeep.js","./node_modules/@apollo/client/utilities/common/objects.js","./node_modules/@apollo/client/node_modules/ts-invariant/lib/invariant.js","./node_modules/@apollo/client/utilities/globals/maybe.js","./node_modules/@apollo/client/utilities/globals/global.js","./node_modules/@apollo/client/utilities/globals/DEV.js","./node_modules/@apollo/client/node_modules/ts-invariant/process/index.js","./node_modules/@apollo/client/utilities/globals/fix-graphql.js","./node_modules/@apollo/client/utilities/globals/index.js","./node_modules/@apollo/client/utilities/graphql/directives.js","./node_modules/@apollo/client/utilities/graphql/fragments.js","./node_modules/@apollo/client/utilities/graphql/getFromAST.js","./node_modules/@apollo/client/utilities/graphql/storeUtils.js","./node_modules/@apollo/client/utilities/common/filterInPlace.js","./node_modules/@apollo/client/utilities/graphql/transform.js","./node_modules/@ng-dynamic-forms/core/fesm2015/core.mjs","./node_modules/ngx-bootstrap/rating/fesm2015/ngx-bootstrap-rating.mjs","./node_modules/@ng-dynamic-forms/ui-ngx-bootstrap/fesm2015/ui-ngx-bootstrap.mjs","./node_modules/@ng-select/ng-option-highlight/fesm2015/ng-select-ng-option-highlight.mjs","./node_modules/@ng-select/ng-select/fesm2015/ng-select-ng-select.mjs","./node_modules/@ngrx/entity/fesm2015/ngrx-entity.mjs","./node_modules/@ngrx/store-devtools/fesm2015/ngrx-store-devtools.mjs","./node_modules/@ngrx/store/fesm2015/ngrx-store.mjs","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./node_modules/angular-resize-event/fesm2015/angular-resize-event.mjs","./node_modules/@apollo/client/core/networkStatus.js","./node_modules/@apollo/client/link/core/execute.js","./node_modules/@apollo/client/link/http/serializeFetchParameter.js","./node_modules/@apollo/client/link/utils/throwServerError.js","./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","./node_modules/@apollo/client/link/utils/fromError.js","./node_modules/@apollo/client/link/http/createHttpLink.js","./node_modules/@apollo/client/link/http/checkFetcher.js","./node_modules/@apollo/client/link/http/selectURI.js","./node_modules/@apollo/client/link/http/createSignalIfSupported.js","./node_modules/@apollo/client/link/http/rewriteURIForGET.js","./node_modules/@apollo/client/link/http/HttpLink.js","./node_modules/@apollo/client/utilities/observables/asyncMap.js","./node_modules/@apollo/client/utilities/common/errorHandling.js","./node_modules/@apollo/client/utilities/observables/iteration.js","./node_modules/@apollo/client/utilities/observables/subclassing.js","./node_modules/@apollo/client/utilities/observables/Concast.js","./node_modules/@apollo/client/errors/index.js","./node_modules/@apollo/client/core/ObservableQuery.js","./node_modules/@apollo/client/core/LocalState.js","./node_modules/@apollo/client/core/QueryInfo.js","./node_modules/@apollo/client/core/QueryManager.js","./node_modules/@apollo/client/utilities/common/mergeOptions.js","./node_modules/@apollo/client/core/ApolloClient.js","./node_modules/@apollo/client/version.js","./node_modules/apollo-angular/fesm2015/ngApollo.mjs","./node_modules/graphql/jsutils/devAssert.mjs","./node_modules/graphql/jsutils/inspect.mjs","./node_modules/graphql/language/ast.mjs","./node_modules/graphql/language/blockString.mjs","./node_modules/graphql/language/characterClasses.mjs","./node_modules/graphql/language/kinds.mjs","./node_modules/graphql/language/printString.mjs","./node_modules/graphql/language/printer.mjs","./node_modules/graphql/language/source.mjs","./node_modules/graphql/language/visitor.mjs","./node_modules/keycloak-js/dist/keycloak.mjs","./node_modules/keycloak-angular/fesm2015/keycloak-angular.mjs","./node_modules/ngx-infinite-scroll/fesm2015/ngx-infinite-scroll.mjs","./node_modules/ng-select2-component/fesm2015/ng-select2-component.mjs","./node_modules/ngx-bootstrap/accordion/fesm2015/ngx-bootstrap-accordion.mjs","./node_modules/ngx-bootstrap/alert/fesm2015/ngx-bootstrap-alert.mjs","./node_modules/ngx-bootstrap/buttons/fesm2015/ngx-bootstrap-buttons.mjs","./node_modules/ngx-bootstrap/collapse/fesm2015/ngx-bootstrap-collapse.mjs","./node_modules/ngx-bootstrap/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs","./node_modules/ngx-bootstrap/chronos/fesm2015/ngx-bootstrap-chronos.mjs","./node_modules/ngx-bootstrap/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs","./node_modules/ngx-bootstrap/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs","./node_modules/ngx-bootstrap/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.mjs","./node_modules/ngx-bootstrap/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs","./node_modules/ngx-bootstrap/modal/fesm2015/ngx-bootstrap-modal.mjs","./node_modules/ngx-bootstrap/popover/fesm2015/ngx-bootstrap-popover.mjs","./node_modules/ngx-bootstrap/positioning/fesm2015/ngx-bootstrap-positioning.mjs","./node_modules/ngx-bootstrap/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs","./node_modules/ngx-bootstrap/tabs/fesm2015/ngx-bootstrap-tabs.mjs","./node_modules/ngx-bootstrap/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs","./node_modules/ngx-bootstrap/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs","./node_modules/ngx-bootstrap/utils/fesm2015/ngx-bootstrap-utils.mjs","./node_modules/ngx-gauge/fesm2015/ngx-gauge.mjs","./node_modules/vlq/dist/vlq.es.js","./node_modules/ngx-logger/fesm2015/ngx-logger.mjs","./node_modules/rxjs/dist/esm/internal/operators/retry.js","./node_modules/ngx-mask/fesm2015/ngx-mask.mjs","./node_modules/underscore/modules/_setup.js","./node_modules/underscore/modules/restArguments.js","./node_modules/underscore/modules/isObject.js","./node_modules/underscore/modules/isNull.js","./node_modules/underscore/modules/isUndefined.js","./node_modules/underscore/modules/isBoolean.js","./node_modules/underscore/modules/isElement.js","./node_modules/underscore/modules/_tagTester.js","./node_modules/underscore/modules/isString.js","./node_modules/underscore/modules/isNumber.js","./node_modules/underscore/modules/isDate.js","./node_modules/underscore/modules/isRegExp.js","./node_modules/underscore/modules/isError.js","./node_modules/underscore/modules/isSymbol.js","./node_modules/underscore/modules/isArrayBuffer.js","./node_modules/underscore/modules/isFunction.js","./node_modules/underscore/modules/_hasObjectTag.js","./node_modules/underscore/modules/_stringTagBug.js","./node_modules/underscore/modules/isDataView.js","./node_modules/underscore/modules/isArray.js","./node_modules/underscore/modules/_has.js","./node_modules/underscore/modules/isArguments.js","./node_modules/underscore/modules/isFinite.js","./node_modules/underscore/modules/isNaN.js","./node_modules/underscore/modules/constant.js","./node_modules/underscore/modules/_createSizePropertyCheck.js","./node_modules/underscore/modules/_shallowProperty.js","./node_modules/underscore/modules/_getByteLength.js","./node_modules/underscore/modules/_isBufferLike.js","./node_modules/underscore/modules/isTypedArray.js","./node_modules/underscore/modules/_getLength.js","./node_modules/underscore/modules/_collectNonEnumProps.js","./node_modules/underscore/modules/keys.js","./node_modules/underscore/modules/isEmpty.js","./node_modules/underscore/modules/isMatch.js","./node_modules/underscore/modules/underscore.js","./node_modules/underscore/modules/_toBufferView.js","./node_modules/underscore/modules/isEqual.js","./node_modules/underscore/modules/allKeys.js","./node_modules/underscore/modules/_methodFingerprint.js","./node_modules/underscore/modules/isMap.js","./node_modules/underscore/modules/isWeakMap.js","./node_modules/underscore/modules/isSet.js","./node_modules/underscore/modules/isWeakSet.js","./node_modules/underscore/modules/values.js","./node_modules/underscore/modules/pairs.js","./node_modules/underscore/modules/invert.js","./node_modules/underscore/modules/functions.js","./node_modules/underscore/modules/_createAssigner.js","./node_modules/underscore/modules/extend.js","./node_modules/underscore/modules/extendOwn.js","./node_modules/underscore/modules/defaults.js","./node_modules/underscore/modules/_baseCreate.js","./node_modules/underscore/modules/create.js","./node_modules/underscore/modules/clone.js","./node_modules/underscore/modules/tap.js","./node_modules/underscore/modules/toPath.js","./node_modules/underscore/modules/_toPath.js","./node_modules/underscore/modules/_deepGet.js","./node_modules/underscore/modules/get.js","./node_modules/underscore/modules/has.js","./node_modules/underscore/modules/identity.js","./node_modules/underscore/modules/matcher.js","./node_modules/underscore/modules/property.js","./node_modules/underscore/modules/_optimizeCb.js","./node_modules/underscore/modules/_baseIteratee.js","./node_modules/underscore/modules/iteratee.js","./node_modules/underscore/modules/_cb.js","./node_modules/underscore/modules/mapObject.js","./node_modules/underscore/modules/noop.js","./node_modules/underscore/modules/propertyOf.js","./node_modules/underscore/modules/times.js","./node_modules/underscore/modules/random.js","./node_modules/underscore/modules/now.js","./node_modules/underscore/modules/_createEscaper.js","./node_modules/underscore/modules/_escapeMap.js","./node_modules/underscore/modules/escape.js","./node_modules/underscore/modules/unescape.js","./node_modules/underscore/modules/_unescapeMap.js","./node_modules/underscore/modules/templateSettings.js","./node_modules/underscore/modules/template.js","./node_modules/underscore/modules/result.js","./node_modules/underscore/modules/uniqueId.js","./node_modules/underscore/modules/chain.js","./node_modules/underscore/modules/_executeBound.js","./node_modules/underscore/modules/partial.js","./node_modules/underscore/modules/bind.js","./node_modules/underscore/modules/_isArrayLike.js","./node_modules/underscore/modules/_flatten.js","./node_modules/underscore/modules/bindAll.js","./node_modules/underscore/modules/memoize.js","./node_modules/underscore/modules/delay.js","./node_modules/underscore/modules/defer.js","./node_modules/underscore/modules/throttle.js","./node_modules/underscore/modules/debounce.js","./node_modules/underscore/modules/wrap.js","./node_modules/underscore/modules/negate.js","./node_modules/underscore/modules/compose.js","./node_modules/underscore/modules/after.js","./node_modules/underscore/modules/before.js","./node_modules/underscore/modules/once.js","./node_modules/underscore/modules/findKey.js","./node_modules/underscore/modules/_createPredicateIndexFinder.js","./node_modules/underscore/modules/findIndex.js","./node_modules/underscore/modules/findLastIndex.js","./node_modules/underscore/modules/sortedIndex.js","./node_modules/underscore/modules/_createIndexFinder.js","./node_modules/underscore/modules/indexOf.js","./node_modules/underscore/modules/lastIndexOf.js","./node_modules/underscore/modules/find.js","./node_modules/underscore/modules/findWhere.js","./node_modules/underscore/modules/each.js","./node_modules/underscore/modules/map.js","./node_modules/underscore/modules/_createReduce.js","./node_modules/underscore/modules/reduce.js","./node_modules/underscore/modules/reduceRight.js","./node_modules/underscore/modules/filter.js","./node_modules/underscore/modules/reject.js","./node_modules/underscore/modules/every.js","./node_modules/underscore/modules/some.js","./node_modules/underscore/modules/contains.js","./node_modules/underscore/modules/invoke.js","./node_modules/underscore/modules/pluck.js","./node_modules/underscore/modules/where.js","./node_modules/underscore/modules/max.js","./node_modules/underscore/modules/min.js","./node_modules/underscore/modules/toArray.js","./node_modules/underscore/modules/sample.js","./node_modules/underscore/modules/shuffle.js","./node_modules/underscore/modules/sortBy.js","./node_modules/underscore/modules/_group.js","./node_modules/underscore/modules/groupBy.js","./node_modules/underscore/modules/indexBy.js","./node_modules/underscore/modules/countBy.js","./node_modules/underscore/modules/partition.js","./node_modules/underscore/modules/size.js","./node_modules/underscore/modules/_keyInObj.js","./node_modules/underscore/modules/pick.js","./node_modules/underscore/modules/omit.js","./node_modules/underscore/modules/initial.js","./node_modules/underscore/modules/first.js","./node_modules/underscore/modules/rest.js","./node_modules/underscore/modules/last.js","./node_modules/underscore/modules/compact.js","./node_modules/underscore/modules/flatten.js","./node_modules/underscore/modules/difference.js","./node_modules/underscore/modules/without.js","./node_modules/underscore/modules/uniq.js","./node_modules/underscore/modules/union.js","./node_modules/underscore/modules/intersection.js","./node_modules/underscore/modules/unzip.js","./node_modules/underscore/modules/zip.js","./node_modules/underscore/modules/object.js","./node_modules/underscore/modules/range.js","./node_modules/underscore/modules/chunk.js","./node_modules/underscore/modules/_chainResult.js","./node_modules/underscore/modules/mixin.js","./node_modules/underscore/modules/underscore-array-methods.js","./node_modules/underscore/modules/index-default.js"],"sourcesContent":["import { Environment } from '@app/core/_models';\r\n\r\nexport const APP_CONFIG = {\r\n\r\n app: 'Net3CustomerPortal',\r\n appName: 'PvDC Customer Portal',\r\n user: 'Net3',\r\n email: 'support@n3t.com',\r\n twitter: 'N3TTech',\r\n avatar: 'avatar-admin.png',\r\n version: '3.0.0',\r\n bs4v: '4.3',\r\n logo: 'logo-2022.png',\r\n logoM: 'logo.png',\r\n // tslint:disable-next-line:max-line-length\r\n copyright: '2023 © Net3 Technology by n3t.com',\r\n companyWebsite: 'https:///n3t.com',\r\n companyPhone: '888-499-0862',\r\n companyTwitter: 'N3TTech',\r\n companyFacebook: 'https://www.facebook.com/Net3Technology',\r\n companyLinkedIn: 'https://www.linkedin.com/company/net3-technology-inc',\r\n companyYouTube: 'https://www.youtube.com/channel/UCTHH9xjBJWKS7iJ0oR6WxxA',\r\n companySupport: 'support@n3t.com',\r\n environment: Environment.DEV,\r\n inactivityInterval: 3600,\r\n signoutTimeout: 120,\r\n datacenter: \"UAT\"\r\n};\r\n","import { NGXLogger } from 'ngx-logger';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class N3TLogger {\r\n constructor(private logger: NGXLogger) {}\r\n\r\n public trace(message: any, ...additional: any): void {\r\n this._log('trace', message, additional);\r\n }\r\n\r\n public debug(message: any, ...additional: any): void {\r\n this._log('debug', message, additional);\r\n }\r\n\r\n public info(message: any, ...additional: any): void {\r\n this._log('info', message, additional);\r\n }\r\n\r\n public log(message: any, ...additional: any): void {\r\n this._log('log', message, additional);\r\n }\r\n\r\n public warn(message: any, ...additional: any): void {\r\n this._log('warn', message, additional);\r\n }\r\n\r\n public error(message: any, ...additional: any): void {\r\n this._log('error', message, additional);\r\n }\r\n\r\n public fatal(message: any, ...additional: any): void {\r\n this._log('fatal', message, additional);\r\n }\r\n\r\n private _log(loglevel: string, message: any, additional: any) {\r\n\r\n if (additional.length === 0) {\r\n this.logger[loglevel](message);\r\n } else {\r\n this.logger[loglevel](message, additional);\r\n }\r\n }\r\n\r\n}\r\n","import { Guid } from 'guid-typescript';\r\n\r\nexport class datapoint {\r\n public id: Guid\r\n public userId: Guid\r\n public isPersistedToDb: boolean\r\n public correlationId: string\r\n public statNamespace: string\r\n public endTimeDuration: Date\r\n public nextPollingTime: Date\r\n public isTimeDuration: boolean\r\n public startTimeDuration: Date\r\n public datapointTimestamp: Date\r\n\r\n /* private members - only accessable using get and set to isolate responsibility of casting the datapoint */\r\n private datapoint: string // <-- keep datapoint private so casting to string is handled only by this class\r\n\r\n constructor(correlationId: Guid, userId: Guid, statNamespace: string) {\r\n this.userId = userId;\r\n this.id = Guid.create();\r\n this.correlationId = correlationId.toString();\r\n this.statNamespace = statNamespace;\r\n this.datapointTimestamp = new Date();\r\n }\r\n\r\n /***** public accessors for datapoint *****/\r\n public get() {\r\n return this.datapoint;\r\n }\r\n\r\n public set(value: any) {\r\n if (this.isTimeDuration) // <-- if stat is a time duration use \"setTimeDuration\" function not set.\r\n return;\r\n\r\n if (this.isDate(value)) {\r\n this.datapoint = value.toLocaleDateString() + ' ' + value.toLocaleTimeString();\r\n } \r\n else {\r\n this.datapoint = value.toString();\r\n } \r\n }\r\n\r\n public isDate(value: any): boolean {\r\n return Object.prototype.toString.call(value) === \"[object Date]\";\r\n }\r\n\r\n /***** calculate time duration *****/\r\n public setTimeDuration() {\r\n /*** missing time duration time stamps (do not calculate) ***/\r\n if (this.startTimeDuration == null || this.endTimeDuration == null)\r\n this.datapoint = String(0);\r\n\r\n /*** calculate time duration in seconds ***/\r\n this.datapoint = String((this.endTimeDuration.getTime() - this.startTimeDuration.getTime()) / 1000);\r\n }\r\n\r\n}","export class DropDownHelper {\r\n name: string;\r\n value: any;\r\n}","export enum DatacenterLocations {\r\n ACD,\r\n GMU,\r\n SPA,\r\n LAS,\r\n DEV,\r\n VCD,\r\n AWS,\r\n GCP,\r\n UAT,\r\n AZU,\r\n CNW,\r\n AUV,\r\n ATL\r\n }\r\n\r\nexport enum DatacenterLocationsString {\r\n ACD = 'ACD',\r\n GMU = 'GMU',\r\n SPA = 'SPA',\r\n LAS = 'LAS',\r\n DEV = 'DEV',\r\n VCD = 'VCD',\r\n AWS = 'AWS',\r\n GCP = 'GCP',\r\n UAT = 'UAT',\r\n AZU = 'AZU',\r\n CNW = 'CNW',\r\n AUV = 'AUV',\r\n ATL = 'ATL'\r\n}\r\n\r\nexport enum BackupFrequency {\r\n Unset = 0,\r\n Daily = 1,\r\n Hourly = 2,\r\n Weekly = 3,\r\n Monthly = 4,\r\n Yearly = 5,\r\n Continuous = 6\r\n}\r\n\r\nexport enum ProtectionProducts {\r\n Actifio = 1,\r\n Acronis = 2,\r\n Veeam = 3,\r\n Zerto = 4\r\n}\r\n\r\nexport enum Providers {\r\n vCloud = 0,\r\n AWS = 1,\r\n GCP = 2,\r\n Azure = 3,\r\n Actifio = 4,\r\n Zerto = 5,\r\n Veeam = 6,\r\n Acronis = 7,\r\n N3T = 8,\r\n Auvik = 9\r\n}\r\n\r\nexport enum App {\r\n Acronis = 'Acronis',\r\n Actifio = 'Actifio',\r\n AWSEC2 = 'AWSEC2',\r\n Billing = 'Billing',\r\n ChargebackManager = 'ChargebackManager',\r\n GoogleCloudPlatform = 'GoogleCloudPlatform',\r\n N3TLoginPortal = 'N3TLoginPortal',\r\n Onboarding = 'Onboarding',\r\n vCloudDirector = 'vCloudDirector',\r\n Zerto = 'Zerto',\r\n ZertoCloudManager = 'ZertoCloudManager',\r\n MicrosoftAzure = 'MicrosoftAzure',\r\n ConnectWise = 'ConnectWise',\r\n Auvik = 'Auvik',\r\n Veeam = 'Veeam',\r\n VROPSMetering = 'VROPSMetering'\r\n}\r\n\r\nexport enum entityType {\r\n VPG = 'VPG',\r\n VRA = 'VRA',\r\n Unknown = 'Unknown',\r\n Site = 'Site'\r\n}\r\n\r\nexport enum eventCategory {\r\n All = 'All',\r\n Events = 'Events',\r\n Alerts = 'Alerts'\r\n}\r\n\r\nexport enum eventType {\r\n Unknown = 'Unknown',\r\n CreateProtectionGroup = 'CreateProtectionGroup',\r\n RemoveProtectionGroup = 'RemoveProtectionGroup',\r\n FailOver = 'FailOver',\r\n FailOverTest = 'FailOverTest',\r\n StopFailOverTest = 'StopFailOverTest',\r\n Move = 'Move',\r\n ProtectVM = 'ProtectVM',\r\n UnprotectVM = 'UnprotectVM',\r\n InstallVra = 'InstallVra',\r\n UninstallVra = 'UninstallVra',\r\n UpdateProtectionGroup = 'UpdateProtectionGroup',\r\n InsertTaggedCP = 'InsertTaggedCP',\r\n HandleMirrorPromotion = 'HandleMirrorPromotion',\r\n ActivateAllMirrors = 'ActivateAllMirrors',\r\n LogCollection = 'LogCollection',\r\n ForceReconfigurationOfNewVM = 'ForceReconfigurationOfNewVM',\r\n ClearSite = 'ClearSite',\r\n ForceRemoveProtectionGroup = 'ForceRemoveProtectionGroup',\r\n ForceUpdateProtectionGroup = 'ForceUpdateProtectionGroup',\r\n ForceKillProtectionGroup = 'ForceKillProtectionGroup',\r\n PrePostScript = 'PrePostScript',\r\n InitFullSync = 'InitFullSync',\r\n Pair = 'Pair',\r\n Unpair = 'Unpair',\r\n InstallCloudConnector = 'InstallCloudConnector',\r\n UninstallCloudConnector = 'UninstallCloudConnector',\r\n RedeployCloudConnector = 'RedeployCloudConnector',\r\n ScriptExecutionFailure = 'ScriptExecutionFailure',\r\n SetAdvancedSiteSettings = 'SetAdvancedSiteSettings',\r\n Clone = 'Clone',\r\n KeepDisk = 'KeepDisk',\r\n FailoverBeforeCommit = 'FailoverBeforeCommit',\r\n FailoverCommit = 'FailoverCommit',\r\n FailoverRollback = 'FailoverRollback',\r\n MoveBeforeCommit = 'MoveBeforeCommit',\r\n MoveRollback = 'MoveRollback',\r\n MoveCommit = 'MoveCommit',\r\n MaintainHost = 'MaintainHost',\r\n UpgradeVra = 'UpgradeVra',\r\n MoveProtectionGroupToManualOperationNeeded = 'MoveProtectionGroupToManualOperationNeeded',\r\n PauseProtectionGroup = 'PauseProtectionGroup',\r\n ResumeProtectionGroup = 'ResumeProtectionGroup',\r\n UpgradeZVM = 'UpgradeZVM',\r\n BulkUpgradeVras = 'BulkUpgradeVras',\r\n BulkUninstallVras = 'BulkUninstallVras',\r\n AlertTurnedOn = 'AlertTurnedOn',\r\n AlertTurnedOff = 'AlertTurnedOff',\r\n ChangeRecoveryHost = 'ChangeRecoveryHost',\r\n BackupProtectionGroup = 'BackupProtectionGroup',\r\n CleanupProtectionGroupVipDiskbox = 'CleanupProtectionGroupVipDiskbox',\r\n RestoreProtectionGroup = 'RestoreProtectionGroup',\r\n PreScript = 'PreScript',\r\n PostScript = 'PostScript',\r\n RemoveVmFromVc = 'RemoveVmFromVc',\r\n ChangeVraPasswordIpSettings = 'ChangeVraPasswordIpSettings',\r\n FlrJournalMount = 'FlrJournalMount',\r\n FlrJournalUnmount = 'FlrJournalUnmount',\r\n Login = 'Login',\r\n StartVMsWithOrder = 'StartVMsWithOrder',\r\n HostEnteringMaintenanceMode = 'HostEnteringMaintenanceMode',\r\n HostExitingMaintenanceMode = 'HostExitingMaintenanceMode',\r\n VmRestoredToSnapshot = 'VmRestoredToSnapshot',\r\n ProtectedVmRemovedFromHypervisor = 'ProtectedVmRemovedFromHypervisor',\r\n ProtectedVmAddedToHypervisor = 'ProtectedVmAddedToHypervisor',\r\n PauseProtectionGroupForMissingVm = 'PauseProtectionGroupForMissingVm',\r\n ResumeProtectionGroupAfterUserRemovedMissingVm = 'ResumeProtectionGroupAfterUserRemovedMissingVm',\r\n ResumeProtectionGroupAfterVmReadded = 'ResumeProtectionGroupAfterVmReadded'\r\n}\r\n\r\nexport enum Environment {\r\n DEV = 'DEV',\r\n QA = 'QA',\r\n UAT = 'UAT',\r\n PROD = 'PROD',\r\n DEMO = 'DEMO'\r\n}\r\n\r\nexport enum TaskStatus {\r\n queued,\r\n preRunning,\r\n running,\r\n success,\r\n error,\r\n canceled,\r\n aborted\r\n}\r\n\r\nexport enum CloudRole {\r\n ConsoleAccessOnly = 'ConsoleAccessOnly',\r\n OrganizationAdministrator = 'OrganizationAdministrator',\r\n vAppAuthor = 'vAppAuthor',\r\n vAppUser = 'vAppUser'\r\n}\r\n\r\nexport enum ProductService {\r\n BRS = 2,\r\n DPS = 3,\r\n OnDemand = 5,\r\n Select = 6,\r\n Network = 7\r\n}\r\n\r\nexport enum ProductId {\r\n vRAM = 39, //\"vRAM (per GB)\";\r\n vCPU = 40, //\"vCPU (per GHz)\";\r\n StandardStorage = 41, //\"Standard Storage (per GB)\";\r\n SSDEnhancedStorage = 42, //\"SSD-Enhanced Storage (per GB)\"\r\n WindowsOS = 51, //\"Windows OS\";\r\n RedHatEnterprise = 52, //\"Red Hat Enterprise\"\r\n AcronisCloudStorage = 70, // \"Acronis Cloud Storage (per GB)\"\r\n Bandwidth = 164, // \"FW/VirtAppl Bandwidth\"\r\n AcronisCPServer = 175, // \"Acronis Cloud Protect Server\"\r\n AcronisCPVM = 176, // \"Acronis Cloud Protect VM\"\r\n AcronisCPWorkStation = 177, // \"Acronis Cloud Protect Server\"\r\n AcronisCPMicrosoftO365PerUser = 178, // \"Acronis Cloud Protect Office 365 (per user)\"\r\n AcronisCPFilesCloudPerUser = 179, // \"Acronis Cloud Protect Files (per user)\"\r\n AcronisCPWebServer = 240, // \"Acronis Cloud Protect Web Server\"\r\n AcronisCPStandardMSTeamsPerUser = 241, // \"Acronis Cloud Protect MS Teams (per user)\"\r\n AcronisCPGoogleWorkspacePerUser = 242, // \"Acronis Cloud Protect Google Workspace (per user)\"\r\n AcronisAdvancedBackupServerAddOn = 243, // \"Acronis Advanced Backup - Server (add-on)\"\r\n AcronisAdvancedBackupVMAddOn = 244, // \"Acronis Advanced Backup - VM (add-on)\"\r\n AcronisAdvancedBackupWorkstationAddOn = 245, // \"Acronis Advanced Backup - Workstation (add-on)\"\r\n AcronisAdvancedBackupWebServerAddOn = 246, // \"Acronis Advanced Backup - Web Server (add-on)\"\r\n AcronisAdvancedManagementAddOn = 252, // \"Acronis Advanced Management (add-on)\"\r\n AcronisAdvancedSecurityAddOn = 253, // \"Acronis Advanced Security (add-on)\"\r\n AcronisAdvancedEmailSecurityAddOn = 255, // \"Acronis Advanced Email Security (add-on)\" \r\n\r\n}","export class Alert {\r\n id: string;\r\n type: AlertType;\r\n message: string;\r\n autoClose: boolean;\r\n keepAfterRouteChange: boolean;\r\n fade: boolean;\r\n\r\n constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport enum AlertType {\r\n Success,\r\n Error,\r\n Info,\r\n Warning\r\n}\r\n","export class QuestionBase {\r\n value: T|undefined;\r\n key: string;\r\n label: string;\r\n required: boolean;\r\n order: number;\r\n controlType: string;\r\n type: string;\r\n options: {key: string, value: string}[];\r\n \r\n constructor(options: {\r\n value?: T;\r\n key?: string;\r\n label?: string;\r\n required?: boolean;\r\n order?: number;\r\n controlType?: string;\r\n type?: string;\r\n options?: {key: string, value: string}[];\r\n } = {}) {\r\n this.value = options.value;\r\n this.key = options.key || '';\r\n this.label = options.label || '';\r\n this.required = !!options.required;\r\n this.order = options.order === undefined ? 1 : options.order;\r\n this.controlType = options.controlType || '';\r\n this.type = options.type || '';\r\n this.options = options.options || [];\r\n }\r\n }","import { QuestionBase } from './question-base';\r\n\r\nexport class TextboxQuestion extends QuestionBase {\r\n controlType = 'textbox';\r\n}\r\n","import { QuestionBase } from './question-base';\r\n\r\nexport class DropdownQuestion extends QuestionBase {\r\n controlType = 'dropdown';\r\n}\r\n","import { QuestionBase } from './question-base';\r\n\r\nexport class CheckboxQuestion extends QuestionBase {\r\n controlType = 'checkbox';\r\n}\r\n","import { QuestionBase } from './question-base';\r\n\r\nexport class HRQuestion extends QuestionBase {\r\n controlType = 'hr';\r\n}","export enum NotificationType {\r\n success = 'is-success',\r\n danger = 'is-danger',\r\n warning = 'is-warning',\r\n }\r\n \r\n export interface N3tNotification {\r\n title: string;\r\n message: string;\r\n type: NotificationType;\r\n acknowledged: boolean;\r\n timestamp: string;\r\n }","export class N3TResult {\r\n isLoaded: boolean\r\n hasError: boolean\r\n callState: string\r\n error: string\r\n\r\n constructor() {\r\n this.isLoaded = false;\r\n this.hasError = false;\r\n this.callState = CallState.INIT;\r\n this.error = '';\r\n }\r\n}\r\n\r\nexport const enum CallState {\r\n INIT = 'INIT',\r\n PENDING = 'PENDING',\r\n COMPLETE = 'COMPLETE',\r\n FAILED = 'FAILED'\r\n}\r\n\r\nexport class n3TAsyncResult {\r\n public hasError : boolean\r\n public errorMessage : string\r\n public result : T\r\n}","import { TypeProvisionOrderResponseModel } from './../gql/graphql/products/schema/type/typeProvisionOrderResponseModel';\r\n\r\nexport class SelfServiceOrder {\r\n success: boolean;\r\n message: string;\r\n orders: TypeProvisionOrderResponseModel[];\r\n}","import { DatacenterLocations } from \"@app/core/gql/graphql/shared/schema/enums\";\r\n\r\nexport class UsageVDC {\r\n diskLimit: number;\r\n diskUsed: number;\r\n diskAlloc: number;\r\n cpuLimit: number;\r\n cpuUsed: number;\r\n cpuAlloc: number;\r\n ramLimit: number;\r\n ramUsed: number;\r\n ramAlloc: number;\r\n vmQuota: number;\r\n vmCount: number;\r\n networkQuota: number;\r\n usedNetworkQuota: number;\r\n allocationModel: string;\r\n vdcid: string;\r\n datacenterLocation: DatacenterLocations;\r\n}\r\n\r\nexport class UsageVDCs {\r\n usages: UsageVDC[];\r\n}","import { Guid } from 'guid-typescript';\r\nimport { MutationResponse } from '@app/core/gql/graphql/shared/schema/type';\r\nimport { DatacenterLocations, App } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { Role } from './role';\r\n\r\nexport class User {\r\n id: number;\r\n username: string;\r\n password: string;\r\n firstName: string;\r\n lastName: string;\r\n role: Role;\r\n token?: string;\r\n}\r\n\r\nexport class KeycloakUser {\r\n bearerToken: string;\r\n companyid: Guid;\r\n email: string;\r\n email_verified: boolean;\r\n family_name: string;\r\n given_name: string;\r\n groups: [];\r\n name: string;\r\n preferred_username: string;\r\n refreshToken: string;\r\n sub: string;\r\n userid: Guid;\r\n}\r\n\r\nexport class AuthUser {\r\n bearerToken: string;\r\n displayName: string;\r\n profileUrl: string;\r\n refreshToken: string;\r\n responseStatus: any;\r\n sessionId: string;\r\n userName: string;\r\n roles: string[];\r\n companyId: Guid;\r\n userId: Guid;\r\n firstName: string;\r\n lastName: string;\r\n companyName: string;\r\n}\r\n\r\nexport class Session {\r\n datacenterLocation: DatacenterLocations;\r\n application: App;\r\n sessionId: string;\r\n}\r\n\r\nexport class GetUserBackupAuthResponse implements MutationResponse {\r\n code: string;\r\n success: boolean;\r\n message: string;\r\n backupAuth: Session[];\r\n}\r\n\r\nexport class CheckUserPasscodeResponse {\r\n success: boolean;\r\n message: string;\r\n passcodeCheck: boolean;\r\n}\r\n\r\nexport class CheckUserPasscode {\r\n membershipId: number;\r\n passcode: string;\r\n}\r\n\r\nexport class GetAuthentication {\r\n UserName: string;\r\n Password: string;\r\n}\r\n\r\nexport class AuthenticationResponse2 {\r\n sessionId: string;\r\n userName: string;\r\n displayName: string;\r\n referrerUrl: string;\r\n bearerToken: string;\r\n refreshToken: string;\r\n profileUrl: string;\r\n roles: string[];\r\n }\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { Alert, AlertType } from '@app/core/_models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AlertService {\r\n private subject = new Subject();\r\n private defaultId = 'default-alert';\r\n\r\n // enable subscribing to alerts observable\r\n onAlert(id = this.defaultId): Observable {\r\n return this.subject.asObservable();\r\n }\r\n\r\n // convenience methods\r\n success(message: string, options?: any) {\r\n this.alert(new Alert({ ...options, type: AlertType.Success, message }));\r\n }\r\n\r\n error(message: string, options?: any) {\r\n this.alert(new Alert({ ...options, type: AlertType.Error, message }));\r\n }\r\n\r\n info(message: string, options?: any) {\r\n this.alert(new Alert({ ...options, type: AlertType.Info, message }));\r\n }\r\n\r\n warn(message: string, options?: any) {\r\n this.alert(new Alert({ ...options, type: AlertType.Warning, message }));\r\n }\r\n\r\n // main alert method\r\n alert(alert: Alert) {\r\n alert.id = alert.id || this.defaultId;\r\n this.subject.next(alert);\r\n }\r\n\r\n // clear alerts\r\n clear(id = this.defaultId) {\r\n this.subject.next(new Alert({ id }));\r\n }\r\n}\r\n","import { InjectionToken, Injectable, Inject, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { mergeMap } from 'rxjs/operators';\nimport { from } from 'rxjs';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport * as ɵngcc0 from '@angular/core';\nconst JWT_OPTIONS = new InjectionToken('JWT_OPTIONS');\n\n// tslint:disable:no-bitwise\nclass JwtHelperService {\n constructor(config = null) {\n this.tokenGetter = (config && config.tokenGetter) || function () { };\n }\n urlBase64Decode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0: {\n break;\n }\n case 2: {\n output += \"==\";\n break;\n }\n case 3: {\n output += \"=\";\n break;\n }\n default: {\n throw new Error(\"Illegal base64url string!\");\n }\n }\n return this.b64DecodeUnicode(output);\n }\n // credits for decoder goes to https://github.com/atk\n b64decode(str) {\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let output = \"\";\n str = String(str).replace(/=+$/, \"\");\n if (str.length % 4 === 1) {\n throw new Error(\"'atob' failed: The string to be decoded is not correctly encoded.\");\n }\n for (\n // initialize result and counters\n let bc = 0, bs, buffer, idx = 0; \n // get next character\n (buffer = str.charAt(idx++)); \n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n }\n b64DecodeUnicode(str) {\n return decodeURIComponent(Array.prototype.map\n .call(this.b64decode(str), (c) => {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\"));\n }\n decodeToken(token = this.tokenGetter()) {\n if (!token || token === \"\") {\n return null;\n }\n const parts = token.split(\".\");\n if (parts.length !== 3) {\n throw new Error(\"The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.\");\n }\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error(\"Cannot decode the token.\");\n }\n return JSON.parse(decoded);\n }\n getTokenExpirationDate(token = this.tokenGetter()) {\n let decoded;\n decoded = this.decodeToken(token);\n if (!decoded || !decoded.hasOwnProperty(\"exp\")) {\n return null;\n }\n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n isTokenExpired(token = this.tokenGetter(), offsetSeconds) {\n if (!token || token === \"\") {\n return true;\n }\n const date = this.getTokenExpirationDate(token);\n offsetSeconds = offsetSeconds || 0;\n if (date === null) {\n return false;\n }\n return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n }\n getAuthScheme(authScheme, request) {\n if (typeof authScheme === \"function\") {\n return authScheme(request);\n }\n return authScheme;\n }\n}\nJwtHelperService.ɵfac = function JwtHelperService_Factory(t) { return new (t || JwtHelperService)(ɵngcc0.ɵɵinject(JWT_OPTIONS)); };\nJwtHelperService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: JwtHelperService, factory: JwtHelperService.ɵfac });\nJwtHelperService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [JWT_OPTIONS,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(JwtHelperService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }]; }, null); })();\n\nclass JwtInterceptor {\n constructor(config, jwtHelper, document) {\n this.jwtHelper = jwtHelper;\n this.document = document;\n this.standardPorts = [\"80\", \"443\"];\n this.tokenGetter = config.tokenGetter;\n this.headerName = config.headerName || \"Authorization\";\n this.authScheme =\n config.authScheme || config.authScheme === \"\"\n ? config.authScheme\n : \"Bearer \";\n this.allowedDomains = config.allowedDomains || [];\n this.disallowedRoutes = config.disallowedRoutes || [];\n this.throwNoTokenError = config.throwNoTokenError || false;\n this.skipWhenExpired = config.skipWhenExpired;\n }\n isAllowedDomain(request) {\n const requestUrl = new URL(request.url, this.document.location.origin);\n // If the host equals the current window origin,\n // the domain is allowed by default\n if (requestUrl.host === this.document.location.host) {\n return true;\n }\n // If not the current domain, check the allowed list\n const hostName = `${requestUrl.hostname}${requestUrl.port && !this.standardPorts.includes(requestUrl.port)\n ? \":\" + requestUrl.port\n : \"\"}`;\n return (this.allowedDomains.findIndex((domain) => typeof domain === \"string\"\n ? domain === hostName\n : domain instanceof RegExp\n ? domain.test(hostName)\n : false) > -1);\n }\n isDisallowedRoute(request) {\n const requestedUrl = new URL(request.url, this.document.location.origin);\n return (this.disallowedRoutes.findIndex((route) => {\n if (typeof route === \"string\") {\n const parsedRoute = new URL(route, this.document.location.origin);\n return (parsedRoute.hostname === requestedUrl.hostname &&\n parsedRoute.pathname === requestedUrl.pathname);\n }\n if (route instanceof RegExp) {\n return route.test(request.url);\n }\n return false;\n }) > -1);\n }\n handleInterception(token, request, next) {\n const authScheme = this.jwtHelper.getAuthScheme(this.authScheme, request);\n let tokenIsExpired = false;\n if (!token && this.throwNoTokenError) {\n throw new Error(\"Could not get token from tokenGetter function.\");\n }\n if (this.skipWhenExpired) {\n tokenIsExpired = token ? this.jwtHelper.isTokenExpired(token) : true;\n }\n if (token && tokenIsExpired && this.skipWhenExpired) {\n request = request.clone();\n }\n else if (token) {\n request = request.clone({\n setHeaders: {\n [this.headerName]: `${authScheme}${token}`,\n },\n });\n }\n return next.handle(request);\n }\n intercept(request, next) {\n if (!this.isAllowedDomain(request) || this.isDisallowedRoute(request)) {\n return next.handle(request);\n }\n const token = this.tokenGetter(request);\n if (token instanceof Promise) {\n return from(token).pipe(mergeMap((asyncToken) => {\n return this.handleInterception(asyncToken, request, next);\n }));\n }\n else {\n return this.handleInterception(token, request, next);\n }\n }\n}\nJwtInterceptor.ɵfac = function JwtInterceptor_Factory(t) { return new (t || JwtInterceptor)(ɵngcc0.ɵɵinject(JWT_OPTIONS), ɵngcc0.ɵɵinject(JwtHelperService), ɵngcc0.ɵɵinject(DOCUMENT)); };\nJwtInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: JwtInterceptor, factory: JwtInterceptor.ɵfac });\nJwtInterceptor.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [JWT_OPTIONS,] }] },\n { type: JwtHelperService },\n { type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(JwtInterceptor, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }, { type: JwtHelperService }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass JwtModule {\n constructor(parentModule) {\n if (parentModule) {\n throw new Error(\"JwtModule is already loaded. It should only be imported in your application's main module.\");\n }\n }\n static forRoot(options) {\n return {\n ngModule: JwtModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true,\n },\n options.jwtOptionsProvider || {\n provide: JWT_OPTIONS,\n useValue: options.config,\n },\n JwtHelperService,\n ],\n };\n }\n}\nJwtModule.ɵfac = function JwtModule_Factory(t) { return new (t || JwtModule)(ɵngcc0.ɵɵinject(JwtModule, 12)); };\nJwtModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: JwtModule });\nJwtModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\nJwtModule.ctorParameters = () => [\n { type: JwtModule, decorators: [{ type: Optional }, { type: SkipSelf }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(JwtModule, [{\n type: NgModule\n }], function () { return [{ type: JwtModule, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }]; }, null); })();\n\n/*\n * Public API Surface of angular-jwt\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule };\n\n","import { Guid } from 'guid-typescript';\r\nimport { Router } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\nimport { N3TStore } from './n3tStore.service';\r\nimport { TasksService } from './tasks.service';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { AuthUser, datapoint, KeycloakUser } from '@app/core/_models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n\r\n constructor(private router: Router,\r\n private n3tStore: N3TStore,\r\n private tasksService: TasksService) {\r\n this.user = n3tStore.selectUser();\r\n this.user.subscribe(x => {\r\n this.userSubject.next(x);\r\n });\r\n }\r\n\r\n public user: Observable;\r\n private userSubject = new BehaviorSubject(new AuthUser());\r\n\r\n public get isAuthenticated(): boolean {\r\n return this?.userSubject?.value?.bearerToken && this.isValidToken;\r\n }\r\n\r\n public get userValue(): AuthUser {\r\n return this.userSubject.value;\r\n }\r\n\r\n public login(keycloakUser: KeycloakUser) { \r\n this.n3tStore.dispatchAuthUserByUserId(keycloakUser); // <-- keycloak user values are coalesced with auth user before being persisted\r\n this.user.subscribe(x => {\r\n this.userSubject.next(x);\r\n if (this.userValue.roles.includes(\"ChannelAdmin\")) {\r\n this.router.navigate(['account/channel']);\r\n }\r\n }\r\n );\r\n }\r\n\r\n public logout() {\r\n this.n3tStore.dispatchLogoutMetric();\r\n this.n3tStore.dispatchSessionLength();\r\n this.n3tStore.dispatchAppReset();\r\n this.userSubject.next(null); \r\n this.router.navigate(['/']); \r\n }\r\n\r\n public isAuthorized(allowedRoles: string[]): boolean {\r\n if (!allowedRoles) {\r\n return true;\r\n }\r\n\r\n return allowedRoles.some(role => this.hasRole(role));\r\n }\r\n\r\n private hasRole(role: string) {\r\n return this.userSubject.value.roles.some(usrRole => {\r\n if (usrRole.toLowerCase === role.toLowerCase) {\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n private get isValidToken(): boolean {\r\n const jwtHelper = new JwtHelperService();\r\n return !jwtHelper.isTokenExpired(this.userSubject.value.bearerToken);\r\n }\r\n\r\n private error(error: any) {\r\n console.error(error);\r\n }\r\n}\r\n","export class GetChannelCompanies {\r\n companyId: string;\r\n statusList: number[];\r\n}","import { DatacenterLocations } from '../enums/datacenterLocations';\r\n\r\nexport class Login {\r\n membershipId: number;\r\n userId: string;\r\n username: string;\r\n password: string;\r\n datacenterLocation: DatacenterLocations;\r\n applicationName: string;\r\n applicationId: string;\r\n applicationLocationId: string;\r\n companyName: string;\r\n companyId: string;\r\n status: number;\r\n roles: string[];\r\n useTwoFactorAuth: boolean;\r\n}\r\n","import { GqlService } from \"./gql.service\";\nimport { Injectable } from \"@angular/core\";\nimport { catchError, map } from \"rxjs/operators\";\nimport { BehaviorSubject, Observable, of, Subject } from \"rxjs\";\nimport { N3TStore } from \"./n3tStore.service\";\nimport { AuthenticationService } from \"./authentication.service\";\nimport { GetChannelCompanies } from \"./../gql/graphql/company/schema/input/getChannelCompanies\";\nimport { Company, GetCompanyChannelResponse } from \"../gql/graphql/company/schema/type\";\nimport { Login } from \"../gql/graphql/shared/schema/type\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ChannelService {\n\n private channelCompanyAdmin$ = this.n3tStore.selectChannelCompanyAdmin();\n private _isChannelMode$ = new BehaviorSubject(false);\n private _adminUser$ = new Subject();\n private _adminUser = new Login();\n\n constructor(\n private n3tStore: N3TStore,\n private gqlService: GqlService,\n private authService: AuthenticationService,\n\n ) {\n this.channelCompanyAdmin$.subscribe(data => {\n this._isChannelMode$.next(true);\n this._adminUser$.next(data);\n this._adminUser = data;\n this.n3tStore.dispatchAppChannelReset();\n this.n3tStore.dispatchGetChannelCompanyData(data.userId, data.companyId);\n });\n }\n\n public getIsChannelMode(): boolean {\n return this._isChannelMode$.value;\n }\n\n public getAdminUser(): Login {\n return this._adminUser;\n }\n\n public getChannelCompanies(): Observable {\n let companyChannels = new GetChannelCompanies();\n companyChannels.companyId = this.authService.userValue.companyId.toString();\n companyChannels.statusList = [1];\n\n return this.gqlService.gql.company.getCompanyChannel(companyChannels).pipe(\n map((companies) => {\n this.success.apply(this, [companies, self]);\n }),\n catchError((error) => of(error).pipe(map(this.error)))\n );\n }\n\n private success(companies: any): Observable {\n let response: GetCompanyChannelResponse = companies.data[\"Companies\"];\n\n // response.companyChannel.sort((a, b) => {\n // return a.companyName < b.companyName ? -1 : 1;\n // });\n\n this.n3tStore.setChannelCompanies(response.companyChannel);\n return of(response.companyChannel);\n }\n\n public getChannelCompanyAdmin(companyId: string): void {\n this.n3tStore.dispatchGetCompanyChannelAdminUser(companyId);\n }\n\n private error(error: any) {\n console.error(error);\n }\n}\n","import { SimpleMetricType } from \"./simpleMetricType\";\r\nimport { Disk } from \"./disk\";\r\nimport { Nic } from \"./nic\";\r\nimport { NetworkConnectionSection } from \"./networkConnectionSection\";\r\nimport { DatacenterLocations } from \"../../../shared/schema/enums/datacenterLocations\";\r\n\r\nexport class VMFlat {\r\n memoryMB: number;\r\n memoryMBSpecified: boolean;\r\n numberOfCpus: number;\r\n numberOfCpusSpecified: boolean;\r\n storageProfileName: string;\r\n vdc: string;\r\n hasDR: boolean;\r\n isDRActive: boolean;\r\n cpuHotAddEnabledSpecified: boolean;\r\n cpuHotAddEnabled: boolean;\r\n isVAppTemplateSpecified: boolean;\r\n memoryHotAddEnabledSpecified: boolean;\r\n vmToolsVersion: number;\r\n vmToolsVersionSpecified: boolean;\r\n vc: string;\r\n moref: string;\r\n hostName: string;\r\n vmHostType: string;\r\n networkInfoRaw: string;\r\n vmInstanceType: string;\r\n metric: SimpleMetricType[];\r\n disks: Disk[];\r\n memoryHotAddEnabled: boolean;\r\n isVAppTemplate: boolean;\r\n isPublishedSpecified: boolean;\r\n isPublished: boolean;\r\n name: string;\r\n nameLong: string;\r\n status: string;\r\n cpu: number;\r\n memory: number;\r\n diskSize: number[];\r\n href: string;\r\n id: string;\r\n diskCount: number;\r\n catalogName: string;\r\n container: string;\r\n containerName: string;\r\n guestOs: string;\r\n hardwareVersion: number;\r\n hardwareVersionSpecified: boolean;\r\n isBusy: boolean;\r\n isBusySpecified: boolean;\r\n isDeleted: boolean;\r\n isDeletedSpecified: boolean;\r\n isDeployed: boolean;\r\n isDeployedSpecified: boolean;\r\n isInMaintenanceMode: boolean;\r\n isInMaintenanceModeSpecified: boolean;\r\n nics: Nic[];\r\n networkConnectionSection: NetworkConnectionSection;\r\n vdcid: string;\r\n datacenterLocation: DatacenterLocations;\r\n allocationModel: string;\r\n orgName: string;\r\n type: string;\r\n region: string;\r\n vappName: string;\r\n vappid: string;\r\n}\r\n","import { TypeSnapshotSection } from './typeSnapshotSection';\r\n\r\nexport class TypeVMSnapshot {\r\n exists: boolean;\r\n createDate: string;\r\n snap: TypeSnapshotSection;\r\n content: string;\r\n errorMessage: string;\r\n errorCode: number;\r\n errorStatus: boolean;\r\n}\r\n","import { TypeSnapshotSectionSnapshot } from './typeSnapshotSectionSnapshot';\r\n\r\nexport class TypeSnapshotSection {\r\n info: string;\r\n snapshot: TypeSnapshotSectionSnapshot;\r\n type: string;\r\n href: string;\r\n required: boolean;\r\n}\r\n","export class TypeSnapshotSectionSnapshot {\r\n size: number;\r\n poweredOn: boolean;\r\n created: string;\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\r\n\r\nexport class ProviderLink {\r\n datacenterLocation: DatacenterLocations;\r\n link: SafeResourceUrl;\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\nimport { App } from '../../../shared/schema/enums/app';\r\n\r\nexport class GetVMScreenTicketInput {\r\n userId: string;\r\n app: App;\r\n datacenterLocation: DatacenterLocations;\r\n vmId: string;\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\nimport { App } from '../../../shared/schema/enums/app';\r\n\r\nexport class UpdatePowerStatusInput {\r\n userId: string;\r\n sessionId: string;\r\n datacenterLocation: DatacenterLocations;\r\n powerOn: boolean;\r\n org: string;\r\n vmNameOrId: string;\r\n proj: string;\r\n zone: string;\r\n app: App;\r\n}\r\n","import { ActifioCluster } from './../gql/graphql/backup/schema/type/actifioCluster';\r\nimport { GetNetworksByLocationInput } from './../gql/graphql/network/schema/input/getNetworksByLocationInput';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { App, DatacenterLocations } from '@app/core/_models/enums';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { Observable, BehaviorSubject, of } from 'rxjs';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { GqlService } from './gql.service';\r\nimport { ProviderLink, TypeSnapshotSection, TypeSnapshotSectionSnapshot, TypeToken, TypeVMSnapshot, VDC, VMFlat } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { GetVMScreenTicketInput, GetVMWareProviderTokensInput, UpdatePowerStatusInput, GetSnapProtectStatusInput } from '@app/core/gql/graphql/compute/schema/input';\r\nimport { Membership } from '@app/core/gql/graphql/login/schema/type';\r\nimport { map } from 'rxjs/operators';\r\nimport { AlertService } from './alert.service';\r\nimport { Org } from '../_models';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CloudmanageService implements OnDestroy {\r\n private sub = new SubSink();\r\n \r\n public getProviderLinksValue(): ProviderLink[] {\r\n return this.gqlService.gql.compute.getProviderLinksValue();\r\n }\r\n\r\n\tpublic getComputeValue(): VDC[] {\r\n\t return this.gqlService.gql.compute.getComputeValue();\r\n\t}\r\n\r\n\tpublic getComputeFlatValue(): VMFlat[] {\r\n\t return this.gqlService.gql.compute.getComputeFlatValue();\r\n\t}\r\n\r\n constructor (\r\n public sanitizer: DomSanitizer,\r\n private gqlService: GqlService,\r\n private n3tStore: N3TStore,\r\n private authService: AuthenticationService,\r\n private alertService: AlertService, \r\n ) \r\n { }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n getVMTicket(vmFlat: VMFlat, app: App) {\r\n let ticketInput = new GetVMScreenTicketInput();\r\n ticketInput.vmId = vmFlat.id;\r\n ticketInput.datacenterLocation = vmFlat.datacenterLocation;\r\n ticketInput.app = app;\r\n ticketInput.userId = this.authService.userValue.userId.toString();\r\n \r\n return this.gqlService.gql.compute.getVMScreenTicket(ticketInput);\r\n }\r\n\r\n //#region Base Data retrieval\r\n\r\n getCompanyData(userId: string, companyId: string): any {\r\n this.gqlService.gql.portal.getCompanyData(userId, companyId).subscribe();\r\n }\r\n\r\n public getDataForCompany(userId: string, companyId: string) {\r\n this.n3tStore.dispatchGetCompanyData(userId, companyId);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Compute Logic\r\n\r\n getCompute(): Observable {\r\n let vdcs = this.n3tStore.selectVDCs();\r\n vdcs.subscribe(x => { this.flattenCompute(x) });\r\n return vdcs;\r\n }\r\n\r\n flattenCompute(computeData: VDC[]): VMFlat[] {\r\n let computeDataFlat: VMFlat[] = new Array();\r\n \r\n if (computeData == null) {\r\n return computeDataFlat;\r\n }\r\n \r\n for (var i = 0; i < computeData.length; i++) {\r\n \r\n for (var j = 0; j < computeData[i].vAppsCount; j++) {\r\n \r\n for (var k = 0; k < computeData[i].vApps[j].vMsCount; k++) {\r\n // New object\r\n var tmpVMObj: VMFlat = new VMFlat();\r\n \r\n //VDC data\r\n tmpVMObj.vdcid = computeData[i].id;\r\n tmpVMObj.datacenterLocation = computeData[i].datacenterLocation;\r\n tmpVMObj.allocationModel = computeData[i].allocationModel;\r\n tmpVMObj.orgName = computeData[i].orgName;\r\n tmpVMObj.type = computeData[i].type;\r\n tmpVMObj.region = computeData[i].region;\r\n \r\n // VApp data\r\n tmpVMObj.vappName = computeData[i].vApps[j].name;\r\n tmpVMObj.vappid = computeData[i].vApps[j].id;\r\n \r\n // VM specific data\r\n tmpVMObj.cpu = computeData[i].vApps[j].vms[k].cpu;\r\n tmpVMObj.cpuHotAddEnabled = computeData[i].vApps[j].vms[k].cpuHotAddEnabled;\r\n tmpVMObj.cpuHotAddEnabledSpecified = computeData[i].vApps[j].vms[k].cpuHotAddEnabledSpecified;\r\n tmpVMObj.diskCount = computeData[i].vApps[j].vms[k].diskCount;\r\n tmpVMObj.diskSize = computeData[i].vApps[j].vms[k].diskSize;\r\n tmpVMObj.disks = computeData[i].vApps[j].vms[k].disks;\r\n // tmpVMObj.errorCode = computeData[i].vApps[j].vms[k].errorCode;\r\n // tmpVMObj.errorStatus = computeData[i].vApps[j].vms[k].errorStatus;\r\n if (computeData[i].vApps[j].vms[k].guestOs !== undefined) {\r\n tmpVMObj.guestOs = computeData[i].vApps[j].vms[k].guestOs;\r\n }\r\n else\r\n {\r\n tmpVMObj.guestOs = \"\";\r\n }\r\n tmpVMObj.hardwareVersion = computeData[i].vApps[j].vms[k].hardwareVersion;\r\n tmpVMObj.hardwareVersionSpecified = computeData[i].vApps[j].vms[k].hardwareVersionSpecified;\r\n tmpVMObj.hasDR = computeData[i].vApps[j].vms[k].hasDR;\r\n tmpVMObj.id = computeData[i].vApps[j].vms[k].id;\r\n tmpVMObj.isBusy = computeData[i].vApps[j].vms[k].isBusy;\r\n tmpVMObj.isBusySpecified = computeData[i].vApps[j].vms[k].isBusySpecified;\r\n tmpVMObj.isDRActive = computeData[i].vApps[j].vms[k].isDRActive;\r\n tmpVMObj.isDeleted = computeData[i].vApps[j].vms[k].isDeleted;\r\n tmpVMObj.isDeletedSpecified = computeData[i].vApps[j].vms[k].isDeletedSpecified;\r\n tmpVMObj.isDeployed = computeData[i].vApps[j].vms[k].isDeployed;\r\n tmpVMObj.isDeployedSpecified = computeData[i].vApps[j].vms[k].isDeployedSpecified;\r\n tmpVMObj.isInMaintenanceMode = computeData[i].vApps[j].vms[k].isInMaintenanceMode;\r\n tmpVMObj.isInMaintenanceModeSpecified = computeData[i].vApps[j].vms[k].isInMaintenanceModeSpecified;\r\n tmpVMObj.isPublished = computeData[i].vApps[j].vms[k].isPublished;\r\n tmpVMObj.isPublishedSpecified = computeData[i].vApps[j].vms[k].isPublishedSpecified;\r\n tmpVMObj.isVAppTemplate = computeData[i].vApps[j].vms[k].isVAppTemplate;\r\n tmpVMObj.isVAppTemplateSpecified = computeData[i].vApps[j].vms[k].isVAppTemplateSpecified;\r\n tmpVMObj.memory = computeData[i].vApps[j].vms[k].memory;\r\n tmpVMObj.memoryHotAddEnabled = computeData[i].vApps[j].vms[k].memoryHotAddEnabled;\r\n tmpVMObj.memoryHotAddEnabledSpecified = computeData[i].vApps[j].vms[k].memoryHotAddEnabledSpecified;\r\n tmpVMObj.memoryMB = computeData[i].vApps[j].vms[k].memoryMB;\r\n tmpVMObj.memoryMBSpecified = computeData[i].vApps[j].vms[k].memoryMBSpecified;\r\n if (computeData[i].vApps[j].vms[k].name !== undefined) {\r\n tmpVMObj.name = computeData[i].vApps[j].vms[k].name;\r\n }\r\n else {\r\n tmpVMObj.name = computeData[i].vApps[j].vms[k].id.split(\"virtualMachines/\")[1];\r\n }\r\n tmpVMObj.networkInfoRaw = computeData[i].vApps[j].vms[k].networkInfoRaw;\r\n tmpVMObj.nics = computeData[i].vApps[j].vms[k].nics;\r\n tmpVMObj.numberOfCpus = computeData[i].vApps[j].vms[k].numberOfCpus;\r\n tmpVMObj.numberOfCpusSpecified = computeData[i].vApps[j].vms[k].numberOfCpusSpecified;\r\n tmpVMObj.status = computeData[i].vApps[j].vms[k].status;\r\n tmpVMObj.vmHostType = computeData[i].vApps[j].vms[k].vmHostType;\r\n tmpVMObj.vmInstanceType = computeData[i].vApps[j].vms[k].vmInstanceType;\r\n tmpVMObj.vmToolsVersion = computeData[i].vApps[j].vms[k].vmToolsVersion;\r\n tmpVMObj.vmToolsVersionSpecified = computeData[i].vApps[j].vms[k].vmToolsVersionSpecified;\r\n \r\n computeDataFlat.push(tmpVMObj);\r\n }\r\n }\r\n }\r\n \r\n this.gqlService.gql.compute.computeFlatSubject = new BehaviorSubject(computeDataFlat);\r\n this.gqlService.gql.compute.computeFlat = this.gqlService.gql.compute.computeFlatSubject.asObservable();\r\n \r\n return computeDataFlat;\r\n }\r\n\r\n flattenArray(arr, result = []) {\r\n for (let i = 0, length = arr.length; i < length; i++) {\r\n const value = arr[i];\r\n if (Array.isArray(value)) {\r\n this.flattenArray(value, result);\r\n } else {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n getDatacenterTarget(datacenter: string): App {\r\n var target = App.vCloudDirector;\r\n \r\n switch (+datacenter) {\r\n case DatacenterLocations.GMU:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.SPA:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.DEV:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.UAT:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.LAS:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.ATL:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.VCD:\r\n target = App.vCloudDirector;\r\n break;\r\n case DatacenterLocations.GCP:\r\n target = App.GoogleCloudPlatform;\r\n break;\r\n case DatacenterLocations.AWS:\r\n target = App.AWSEC2;\r\n break;\r\n case DatacenterLocations.AZU:\r\n target = App.MicrosoftAzure;\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n return target;\r\n };\r\n\r\n getLocationColor(datacenter: string): string {\r\n let cssOut = \"location-unknown\";\r\n \r\n switch (+datacenter) {\r\n case DatacenterLocations.GMU:\r\n cssOut = \"location-unknown\";\r\n break;\r\n case DatacenterLocations.SPA:\r\n cssOut = \"location-spa\";\r\n break;\r\n case DatacenterLocations.DEV:\r\n cssOut = \"location-dev\";;\r\n break;\r\n case DatacenterLocations.UAT:\r\n cssOut = \"location-uat\";\r\n break;\r\n case DatacenterLocations.LAS:\r\n cssOut = \"location-las\";\r\n break;\r\n case DatacenterLocations.ATL:\r\n cssOut = \"location-atl\";\r\n break;\r\n case DatacenterLocations.VCD:\r\n cssOut = \"location-unknown\";\r\n break;\r\n case DatacenterLocations.GCP:\r\n cssOut = \"location-gcp\";\r\n break;\r\n case DatacenterLocations.AWS:\r\n cssOut = \"location-aws\";\r\n break;\r\n case DatacenterLocations.AZU:\r\n cssOut = \"location-azu\";\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n return cssOut;\r\n };\r\n\r\n getHealthStatus(status): string {\r\n /*\r\n FAILED_CREATION = -1,\r\n UNRESOLVED = 0,\r\n RESOLVED = 1,\r\n SUSPENDED = 3,\r\n POWERED_ON = 4,\r\n WAITING_FOR_INPUT = 5,\r\n UNKNOWN = 6,\r\n UNRECOGNIZED = 7,\r\n POWERED_OFF = 8,\r\n INCONSISTENT_STATE = 9,\r\n */\r\n\r\n var healthClass = \"white\";\r\n\r\n switch (status) {\r\n case \"POWERED_ON\":\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"4\":\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"running\": // AWS\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"RUNNING\": // GCP\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"RESOLVED\":\r\n healthClass = \"green\";\r\n break;\r\n \r\n case \"FAILED_CREATION\":\r\n healthClass = \"red\";\r\n break;\r\n\r\n case \"-1\":\r\n healthClass = \"red\";\r\n break;\r\n\r\n case \"UNRESOLVED\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"0\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"WAITING_FOR_INPUT\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"5\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"SUSPENDED\":\r\n healthClass = \"yellow\";\r\n break;\r\n \r\n case \"3\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"stopping\": // AWS\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"PROVISIONING\": // GCP\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"pending\": // AWS\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"stopped\": // AWS\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"UNKNOWN\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"6\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"UNRECOGNIZED\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"7\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"POWERED_OFF\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"8\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"INCONSISTENT_STATE\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"9\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"VM running\": // AZU\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"VM deallocated\": // AZU\r\n healthClass = \"white\";\r\n break;\r\n\r\n default:\r\n healthClass = \"white\";\r\n break;\r\n }\r\n\r\n return healthClass;\r\n };\r\n\r\n powerStatusIsOn(status: string): boolean {\r\n let isOn = false;\r\n \r\n /*\r\n FAILED_CREATION = -1,\r\n UNRESOLVED = 0,\r\n RESOLVED = 1,\r\n SUSPENDED = 3,\r\n POWERED_ON = 4,\r\n WAITING_FOR_INPUT = 5,\r\n UNKNOWN = 6,\r\n UNRECOGNIZED = 7,\r\n POWERED_OFF = 8,\r\n INCONSISTENT_STATE = 9,\r\n */\r\n \r\n switch(status.toUpperCase()) {\r\n case \"RUNNING\":\r\n isOn = true;\r\n break;\r\n case \"RESOLVED\":\r\n isOn = true;\r\n break;\r\n case \"POWERED_ON\":\r\n isOn = true;\r\n break;\r\n case \"VM RUNNING\":\r\n isOn = true;\r\n break;\r\n case \"POWERED_OFF\":\r\n isOn = false;\r\n break;\r\n case \"WAITING_FOR_INPUT\":\r\n isOn = true;\r\n break; \r\n case \"VM DEALLOCATED\":\r\n isOn = false;\r\n break;\r\n case \"TERMINATED\":\r\n isOn = false;\r\n break;\r\n case \"STOPPED\":\r\n isOn = false;\r\n break;\r\n case \"SUSPENDED\":\r\n isOn = false;\r\n break;\r\n case \"FAILED_CREATION\":\r\n isOn = false;\r\n break;\r\n case \"UNRESOLVED\":\r\n isOn = false;\r\n break;\r\n case \"UNKNOWN\":\r\n isOn = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n return isOn;\r\n };\r\n\r\n togglePowerStatus(vmFlat: VMFlat, input: UpdatePowerStatusInput) {\r\n // var tmp = this.gqlService.gql.compute.updatePowerStatus(input);\r\n // return tmp;\r\n\r\n this.n3tStore.dispatchTogglePowerStatus(vmFlat, input);\r\n\r\n }\r\n\r\n isOn(status: string): boolean {\r\n let isOn = false;\r\n \r\n switch (status.toUpperCase()) {\r\n case \"RUNNING\":\r\n isOn = true;\r\n break;\r\n case \"RESOLVED\":\r\n isOn = true;\r\n break;\r\n case \"POWERED_ON\":\r\n isOn = true;\r\n break;\r\n case \"VM RUNNING\":\r\n isOn = true;\r\n break;\r\n case \"WAITING_FOR_INPUT\":\r\n isOn = true;\r\n break; \r\n default:\r\n break;\r\n }\r\n \r\n return isOn;\r\n }\r\n \r\n isOff(status: string): boolean {\r\n let isOff = false;\r\n\r\n switch (status.toUpperCase()) {\r\n case \"POWERED_OFF\":\r\n isOff = true;\r\n break; \r\n case \"VM DEALLOCATED\":\r\n isOff = true;\r\n break;\r\n case \"TERMINATED\":\r\n isOff = true;\r\n break;\r\n case \"STOPPED\":\r\n isOff = true;\r\n break;\r\n case \"SUSPENDED\":\r\n isOff = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return isOff;\r\n }\r\n\r\n isWarning(status: string): boolean {\r\n let isWarning = false;\r\n\r\n switch (status.toUpperCase()) {\r\n case \"FAILED_CREATION\":\r\n isWarning = true;\r\n break;\r\n case \"UNRESOLVED\":\r\n isWarning = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return isWarning;\r\n }\r\n\r\n isUnknown(status: string): boolean {\r\n let isUnknown = false;\r\n \r\n switch (status.toUpperCase()) {\r\n case \"UNKNOWN\":\r\n isUnknown = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n \r\n return isUnknown;\r\n }\r\n \r\n // setComputeUsageStats() {\r\n // var computeUsageStats = [];\r\n\r\n // this.computeFlatSubject\r\n \r\n // angular.forEach($localStorage.ComputeData.result, function (vdc, key) {\r\n // var tmpStat = { vdc: {}, vapps: [], vms: [], stats: [] };\r\n // var vdcInfo = { name: vdc.name, id: vdc.id, allocationmodel: vdc.allocationModel, datacenter: vdc.datacenterLocation };\r\n // var statsTmp = [];\r\n\r\n // statsTmp.push({ stat: \"cpuLimit\", value: vdc.cpuLimitMhz });\r\n // statsTmp.push({ stat: \"cpuUsed\", value: vdc.cpuUsedMhz });\r\n // statsTmp.push({ stat: \"cpuAlloc\", value: vdc.cpuAllocationMhz });\r\n // statsTmp.push({ stat: \"ramLimit\", value: (vdc.memoryLimitMB / 1024).toFixed(2) });\r\n // statsTmp.push({ stat: \"ramUsed\", value: (vdc.memoryUsedMB / 1024).toFixed(2) });\r\n // statsTmp.push({ stat: \"ramAlloc\", value: (vdc.memoryAllocatedMB / 1024).toFixed(2) });\r\n // statsTmp.push({ stat: \"diskLimit\", value: (vdc.storageLimitMB / 1024).toFixed(2) });\r\n // statsTmp.push({ stat: \"diskUsed\", value: (vdc.storageUsedMB / 1024).toFixed(2) });\r\n // statsTmp.push({ stat: \"diskAlloc\", value: (vdc.storageAllocatedMB / 1024).toFixed(2) });\r\n // statsTmp.push({ stat: \"vmQuota\", value: vdc.vmQuota });\r\n // statsTmp.push({ stat: \"vmCount\", value: vdc.vmCount });\r\n // statsTmp.push({ stat: \"networkQuota\", value: vdc.networkQuota });\r\n // if (vdc.allocationModel === \"PAYGO\" || vdc.allocationModel === \"ALLOCATION\") {\r\n // statsTmp.push({ stat: \"usedNetworkCount\", value: vdc.networks.length });\r\n // }\r\n // else {\r\n // statsTmp.push({ stat: \"usedNetworkCount\", value: vdc.usedNetworkQuota });\r\n // }\r\n\r\n // tmpStat.vdc = vdcInfo;\r\n // tmpStat.stats = statsTmp;\r\n\r\n // var vappsTmp = [];\r\n // var vmsTmp = [];\r\n\r\n // angular.forEach(vdc.vApps, function (vapp, key2) {\r\n // this.push({ name: vapp.name, id: vapp.id, vdcid: vdc.id });\r\n\r\n // angular.forEach(vapp.vms, function (vm, key3) {\r\n // this.push({\r\n // name: vm.name,\r\n // id: vm.id,\r\n // cpu: vm.cpu,\r\n // cpuNumber: vm.numberOfCpus,\r\n // memory: vm.memory,\r\n // memoryMB: vm.memoryMB,\r\n // diskCount: vm.diskCount,\r\n // disks: vm.disks,\r\n // diskSize: vm.diskSize,\r\n // vdcid: vdc.id,\r\n // vappid: vapp.id,\r\n // vappname: vapp.name\r\n // });\r\n // }, vmsTmp);\r\n\r\n // }, vappsTmp);\r\n\r\n // tmpStat.vapps = vappsTmp;\r\n // tmpStat.vms = vmsTmp;\r\n\r\n // this.push(tmpStat);\r\n\r\n // }, computeUsageStats);\r\n\r\n // $localStorage.ComputeUsageStats = computeUsageStats;\r\n\r\n // };\r\n\r\n //#endregion\r\n\r\n //#region Snap Protect Logic\r\n\r\n getSnapProtectStatus(getSnapProtectStatusInput: GetSnapProtectStatusInput) {\r\n this.n3tStore.dispatchGetSnapProtectStatus(getSnapProtectStatusInput);\r\n }\r\n\r\n retrieveSnapProtect(getSnapProtectStatusInput: GetSnapProtectStatusInput): Observable {\r\n return this.gqlService.gql.compute.getSnapProtectStatus(getSnapProtectStatusInput);\r\n }\r\n\r\n checkHasSnapshot(vm: VMFlat, userId: string): Observable {\r\n let snap = new TypeVMSnapshot();\r\n snap.exists = false;\r\n snap.snap = new TypeSnapshotSection();\r\n snap.snap.snapshot = new TypeSnapshotSectionSnapshot();\r\n let input: GetSnapProtectStatusInput = new GetSnapProtectStatusInput();\r\n input.orgName = vm.orgName;\r\n input.datacenterLocation = vm.datacenterLocation;\r\n input.vmName = vm.name;\r\n input.vmOrVappId = \"vm-\" + vm.id;\r\n input.userId = userId;\r\n\r\n return this.retrieveSnapProtect(input).pipe(map(result => {\r\n let foo = result.data[\"getSnapProtectStatus\"];\r\n if (foo.success && foo[\"Snapshot\"].result !== null && foo[\"Snapshot\"].result?.size > 0) {\r\n snap.exists = true;\r\n // snap.snap.snapshot.created = foo[\"Snapshot\"].result.created;\r\n // snap.snap.snapshot.poweredOn = foo[\"Snapshot\"].result.poweredOn;\r\n // snap.snap.snapshot.size = foo[\"Snapshot\"].result.size;\r\n } else {\r\n snap.exists = false;\r\n }\r\n\r\n return snap.exists;\r\n }));\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Networks\r\n\r\n getNetworks(info: GetNetworksByLocationInput) {\r\n this.n3tStore.dispatchGetNetworkData(info);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Providers logic\r\n\r\n getProviderTokens(info: GetVMWareProviderTokensInput) { \r\n this.n3tStore.dispatchGetProviderTokens(info);\r\n }\r\n\r\n getVMScreenTicket(getVMScreenTicketInput: GetVMScreenTicketInput): Observable {\r\n return this.gqlService.gql.compute.getVMScreenTicket(getVMScreenTicketInput);\r\n }\r\n\r\n getVMWareProviderTokens(getVMWareProviderTokensInput: GetVMWareProviderTokensInput): Observable {\r\n return this.gqlService.gql.compute.getVMWareProviderTokens(getVMWareProviderTokensInput);\r\n }\r\n\r\n getProviderLink(vdcId: string) {\r\n let tokens$ = this.n3tStore.selectProviderTokens();\r\n let myVDC = _.findWhere(this.getComputeValue(), {id: vdcId});\r\n\r\n let gah: TypeToken[];\r\n\r\n tokens$.pipe(map(tokens => {\r\n gah = tokens.filter(t => t.datacenterLocation === myVDC.datacenterLocation.toString()); \r\n })).subscribe();\r\n\r\n return this.resolveProviderLink(gah[0], myVDC.datacenterLocation, myVDC.orgName, vdcId);\r\n }\r\n\r\n resolveProviderLink(token: TypeToken, location: DatacenterLocations, org: string, vdcid: string) {\r\n switch (location.toString().toLowerCase()) {\r\n case \"azu\":\r\n return this.sendToAzure();\r\n case \"aws\":\r\n return this.sendToAWS();\r\n case \"gcp\":\r\n return this.sendToGCP()\r\n default:\r\n return this.sendToVCloud(location.toString(), token.token, org, vdcid);\r\n }\r\n }\r\n \r\n resolveProviderLinks(tokens: TypeToken[]) {\r\n //this.providerLinks.. = new Observable;\r\n var linksList: ProviderLink[] = new Array();\r\n let orgList: Org[];\r\n this.n3tStore.selectOrgs().subscribe(\r\n orgs => orgList = orgs\r\n );\r\n\r\n if (orgList === undefined || orgList.length === 0)\r\n {\r\n //SweetAlert.swal(\"Uh Oh!\", \"Something has happened to your org list. Please log in again.\", \"error\");\r\n return;\r\n }\r\n\r\n let memberships: Membership[];\r\n this.n3tStore.selectMembeships().subscribe(data => {\r\n memberships = data;\r\n })\r\n\r\n for (var u = 0; u < memberships.length; u++) { //this.gqlService.gql.portal.getLoginsValue.length; u++) {\r\n var tmpLink = \"\";\r\n\r\n if (memberships[u].applicationName === \"N3TLoginPortal\") { // this.gqlService.gql.portal.getLoginsValue\r\n continue;\r\n }\r\n\r\n let vms: VMFlat[];\r\n this.n3tStore.selectVMsFlat().subscribe(data => {\r\n vms = data;\r\n })\r\n\r\n // Test for missing data, alert user but don't bomb whole process // localStorage.ComputeData.result\r\n if (_.findWhere(vms, { datacenterLocation: DatacenterLocations[memberships[u].datacenterCode] }) === undefined) {\r\n //SweetAlert.swal(\"Oh Man!\", \"Something has happened pulling data for: \" + $this.basedataService.getLoginsValue[u].datacenterLocation + \". Please reset the cache and refresh Compute to resolve.\", \"error\");\r\n //return;\r\n }\r\n\r\n // Here get the Token\r\n let tok = _.find(tokens, function(t){\r\n return t.datacenterLocation === memberships[u].datacenterCode\r\n });\r\n\r\n // Here we get the Org\r\n let org = _.find(orgList, function(org){\r\n return org.datacenterLocation.toString() === memberships[u].datacenterCode\r\n });\r\n\r\n // Here we get the VM\r\n let theVMs = _.find(vms, function(v){\r\n return v.datacenterLocation.toString() === memberships[u].datacenterCode\r\n });\r\n\r\n const loc: string = memberships[u].datacenterCode; // this.gqlService.gql.portal.getLoginsValue\r\n switch (loc) {\r\n case (\"SPA\"):\r\n try {\r\n if (memberships[u].applicationName === \"vCloudDirector\")\r\n tmpLink = this.sendToVCloud(memberships[u].datacenterCode,\r\n tok.token,\r\n org.name,\r\n theVMs.vdcid\r\n );\r\n }\r\n catch (err) {\r\n tmpLink = \"\";\r\n }\r\n\r\n break;\r\n case (\"LAS\"):\r\n try {\r\n if (memberships[u].applicationName === \"vCloudDirector\")\r\n tmpLink = this.sendToVCloud(memberships[u].datacenterCode,\r\n tok.token,\r\n org.name,\r\n theVMs.vdcid\r\n );\r\n }\r\n catch (err) {\r\n tmpLink = \"\";\r\n }\r\n\r\n break;\r\n case (\"ATL\"):\r\n try {\r\n if (memberships[u].applicationName === \"vCloudDirector\")\r\n tmpLink = this.sendToVCloud(memberships[u].datacenterCode,\r\n tok.token,\r\n org.name,\r\n theVMs.vdcid\r\n );\r\n }\r\n catch (err) {\r\n tmpLink = \"\";\r\n }\r\n \r\n break;\r\n case (\"UAT\"):\r\n try {\r\n if (memberships[u].applicationName === \"vCloudDirector\")\r\n tmpLink = this.sendToVCloud(memberships[u].datacenterCode,\r\n tok.token,\r\n org.name,\r\n theVMs.vdcid\r\n );\r\n }\r\n catch (err) {\r\n tmpLink = \"\";\r\n }\r\n \r\n break;\r\n case (\"DEV\"):\r\n try {\r\n if (memberships[u].applicationName === \"vCloudDirector\")\r\n tmpLink = this.sendToVCloud(memberships[u].datacenterCode,\r\n tok.token,\r\n org.name,\r\n theVMs.vdcid\r\n );\r\n }\r\n catch (err) {\r\n tmpLink = \"\";\r\n }\r\n\r\n break;\r\n case (\"AWS\"):\r\n tmpLink = this.sendToAWS();\r\n break;\r\n case (\"AZU\"):\r\n tmpLink = this.sendToAzure();\r\n break;\r\n case (\"GCP\"):\r\n tmpLink = this.sendToGCP();\r\n break;\r\n default:\r\n\r\n break;\r\n }\r\n\r\n if (tmpLink !== \"\") {\r\n let linkObj = new ProviderLink();\r\n linkObj.datacenterLocation = DatacenterLocations[memberships[u].datacenterCode];\r\n linkObj.link = this.trustLink(tmpLink);\r\n linkObj.link = (linkObj.link as any)?.changingThisBreaksApplicationSecurity;\r\n linksList.push(linkObj);\r\n }\r\n }\r\n this.gqlService.gql.compute.providerLinks = of(linksList);\r\n return this.gqlService.gql.compute.providerLinks;\r\n };\r\n\r\n sendToVCloud(datacenterLocation: string, sessionId: string, org: string, vdcid: string): string {\r\n var datacenter = \"\";\r\n\r\n sessionId = sessionId.replace(new RegExp('-', 'g'), '');//.replace(\"-\", \"\");\r\n\r\n switch (datacenterLocation.toLowerCase()) {\r\n case \"gmu\":\r\n datacenter = \"gmu\";\r\n break;\r\n case \"spa\":\r\n datacenter = \"spa\";\r\n break;\r\n case \"las\":\r\n datacenter = \"las\";\r\n break;\r\n case \"atl\":\r\n datacenter = \"atl\";\r\n break;\r\n case \"uat\":\r\n datacenter = \"uat\";\r\n break;\r\n case \"dev\":\r\n datacenter = \"dev\";\r\n break;\r\n case \"vdc\":\r\n return \"https://vchs.vmware.com/login\";\r\n default:\r\n datacenter = datacenterLocation.toLowerCase();\r\n break;\r\n }\r\n\r\n let output: string = \"\";\r\n\r\n // This is the format for vCloud to redirect: https://vcloud.com///>/\r\n \r\n if (datacenterLocation.toLowerCase() === \"spa\" || datacenterLocation.toLowerCase() === \"las\") {\r\n output = encodeURI(\"https://\" + datacenter + \"vcloud.palmettovdc.com/tenant/\" + org + \"/\");\r\n\r\n } else if (datacenterLocation.toLowerCase() !== \"uat\") {\r\n output = encodeURI(\"https://\" + datacenter + \"vcloud.palmettovdc.com/tenant/\" + org + \"/\");\r\n } else if (datacenterLocation.toLowerCase() === \"uat\") {\r\n //output = encodeURI(\"https://\" + datacenter + \"vcloud.palmettovdc.com/tenant/\" + org + \"/\");\r\n output = encodeURI(\"https://\" + datacenter + \"vcloud.palmettovdc.com/tenant/\" + org + \"/\");\r\n } else {\r\n output = encodeURI(\"https://\" + datacenter + \"vcloud.palmettovdc.com/login/tenant/test.htm?sessionid=\" + sessionId + \"&org=\" + org + \"&id=\" + vdcid);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n sendToGCP(): string {\r\n return \"https://console.cloud.google.com/\";\r\n };\r\n\r\n sendToAWS(): string {\r\n return \"https://console.aws.amazon.com/console/\";\r\n };\r\n\r\n sendToAzure(): string {\r\n return \"https://portal.azure.com/\";\r\n };\r\n\r\n //#endregion\r\n\r\n //#region Mappers\r\n\r\n mapVMFlatToUpdatePowerStatusInput(vm: VMFlat): UpdatePowerStatusInput {\r\n let userId = this.authService.userValue.userId.toString();\r\n\r\n let input = new UpdatePowerStatusInput();\r\n input.app = this.getDatacenterTarget(DatacenterLocations[vm.datacenterLocation]);\r\n input.datacenterLocation = vm.datacenterLocation;\r\n input.org = vm.orgName;\r\n input.powerOn = !this.powerStatusIsOn(vm.status);\r\n //input.proj = vm.\r\n\r\n let proj = \"\";\r\n let zone = \"\";\r\n let vmNameOrId = \"\";\r\n\r\n\r\n if (vm.datacenterLocation !== DatacenterLocations.AWS && vm.datacenterLocation !== DatacenterLocations.GCP && vm.datacenterLocation !== DatacenterLocations.AZU)\r\n {\r\n vmNameOrId = vm.id;\r\n }\r\n else if (vm.datacenterLocation === DatacenterLocations.AWS)\r\n {\r\n vmNameOrId = vm.id;\r\n }\r\n else if (vm.datacenterLocation === DatacenterLocations.GCP)\r\n {\r\n vmNameOrId = vm.name;\r\n\r\n proj = this.parseProjectZoneMachineGCP(vm.containerName, 'project');\r\n zone = this.parseProjectZoneMachineGCP(vm.containerName, 'zone');\r\n }\r\n else if (vm.datacenterLocation === DatacenterLocations.AZU)\r\n {\r\n vmNameOrId = vm.name;\r\n // org = vdcId;\r\n // sessionId = _.find($localStorage.UserLogins, function (obj) { return _.some(obj.attributes, { attributeValue: clientId }) }).sessionId;\r\n\r\n // proj = vappName;\r\n }\r\n\r\n input.proj = proj;\r\n input.zone = zone;\r\n input.vmNameOrId = vmNameOrId;\r\n input.userId = userId;\r\n\r\n return input;\r\n };\r\n\r\n mapPowerStatusFromTask(operationName: string): string {\r\n // Set up info for updating the VMFlat with new power status\r\n let newStatus = \"\";\r\n\r\n switch (operationName) {\r\n case \"vappUndeployPowerOff\":\r\n newStatus = \"POWERED_OFF\";\r\n break;\r\n case \"vappShutdownGuest\":\r\n newStatus = \"POWERED_OFF\";\r\n break;\r\n case \"vappPowerOff\":\r\n newStatus = \"POWERED_OFF\";\r\n break;\r\n case \"vappDeploy\":\r\n newStatus = \"POWERED_ON\";\r\n break;\r\n default:\r\n\r\n break;\r\n }\r\n\r\n return newStatus;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region GCP Helper methods\r\n\r\n parseProjectZoneMachineGCP(urlIn: string, whatOut: string): string {\r\n //var orig = \"https://www.googleapis.com/compute/v1/projects/devtest-1306/zones/us-central1-a/machineTypes/n1-standard-1\";\r\n\r\n let firstSplit = urlIn.split(\"/\");\r\n\r\n let project;\r\n let zone;\r\n let machineType;\r\n\r\n let step;\r\n for (step = 0; step < firstSplit.length; step++) {\r\n switch (firstSplit[step]) {\r\n case \"projects\":\r\n project = firstSplit[step + 1];\r\n break;\r\n case \"zones\":\r\n zone = firstSplit[step + 1];\r\n break;\r\n case \"machineTypes\":\r\n machineType = firstSplit[step + 1];\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n switch (whatOut.toLowerCase()) {\r\n case \"project\":\r\n return project;\r\n case \"zone\":\r\n return zone;\r\n case \"machinetype\":\r\n return machineType;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n //#endregion\r\n\r\n //#region DPS helper methods\r\n\r\n getFriendlyClusterName(clusterId: string): Observable {\r\n let clust: ActifioCluster[];\r\n let backupClusters$ = this.n3tStore.selectBackupClusters();\r\n backupClusters$.pipe(map(clusters => {\r\n clust = clusters.filter(c => c.clusterid === clusterId);\r\n })).subscribe();\r\n\r\n return of(clust[0]?.name);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Helper Methods\r\n\r\n formatBytesString(bytes: number, decimals: number = 2): string {\r\n if (bytes === 0) return '0 Bytes';\r\n \r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n \r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n \r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n trustLink(linkIn: string) {\r\n var linkScrub = this.replaceAll(linkIn, \"&\", \"&\");\r\n\r\n return this.getSafeUrl(linkScrub);\r\n };\r\n\r\n getSafeUrl(urlIn: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(urlIn);\r\n };\r\n\r\n escapeRegExp(str: string): string {\r\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\r\n };\r\n\r\n replaceAll(str: string, find: string, replace: string): string {\r\n return str.replace(new RegExp(this.escapeRegExp(find), 'g'), replace);\r\n };\r\n\r\n getDatacenterLocationFromUrl(href: string): string {\r\n if (!href.includes(\"//\")) {\r\n return null;\r\n }\r\n\r\n let big = href.split('//'); // This will split after the https://\r\n let little = big[1];\r\n let locationArray = little.split('.');\r\n let locationBig = locationArray[0];\r\n let location = locationBig.substr(0,3);\r\n\r\n return location.toUpperCase();\r\n };\r\n\r\n isPvDC(datacenter: any): boolean {\r\n let isPvDC = true;\r\n \r\n switch (datacenter) {\r\n case \"ATL\":\r\n isPvDC = true;\r\n break;\r\n case \"SPA\":\r\n isPvDC = true;\r\n break;\r\n case \"LAS\":\r\n isPvDC = true;\r\n break;\r\n case \"DEV\":\r\n isPvDC = true;\r\n break;\r\n case \"UAT\":\r\n isPvDC = true;\r\n break;\r\n case \"AWS\":\r\n isPvDC = false;\r\n break;\r\n case \"AZU\":\r\n isPvDC = false;\r\n break;\r\n case \"VCD\":\r\n isPvDC = false;\r\n break;\r\n case \"GCP\":\r\n isPvDC = false;\r\n break;\r\n case \"AUV\":\r\n isPvDC = false;\r\n break; \r\n default:\r\n isPvDC = false;\r\n break;\r\n }\r\n \r\n return isPvDC;\r\n };\r\n\r\n //#endregion\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\nimport { DatacenterLocations } from '../_models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommonService {\n\n constructor() { }\n\n public toDate(input: string): Date {\n let date = new Date(+input.replace(\"/Date(\",\"\").replace(\")/\", \"\").split(\"-\")[0]);\n return date;\n }\n\n public truncateOnWord(str: string, limit: number): string {\n if (str.length <= limit) {\n return str;\n }\n \n let trimmable = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u2028\\u2029\\u3000\\uFEFF';\n let reg = new RegExp('(?=[' + trimmable + '])');\n let words = str.split(reg);\n let count = 0;\n return words.filter(function(word) {\n count += word.length;\n return count <= limit;\n }).join('').concat('...');\n }\n\n public convertDiskSizeBytesToGB(bytes: number): number {\n const bytesInGB = 1073741824;\n return (bytes / bytesInGB);\n }\n\n public formatBytes(bytes: number, decimals: number = 2) {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n }\n\n public static deepCopy(source: T): T {\n return Array.isArray(source)\n ? source.map(item => this.deepCopy(item))\n : source instanceof Date\n ? new Date(source.getTime())\n : source && typeof source === 'object'\n ? Object.getOwnPropertyNames(source).reduce((o, prop) => {\n Object.defineProperty(o, prop, Object.getOwnPropertyDescriptor(source, prop)!);\n o[prop] = this.deepCopy((source as { [key: string]: any })[prop]);\n return o;\n }, Object.create(Object.getPrototypeOf(source)))\n : source as T;\n }\n\n public roundNearQtr(number: number): number {\n return +(Math.round(number * 4) / 4).toFixed(2);\n }\n\n public mapDatacenterToCloudLocation(datacenter: string): string {\n let cloudOut = \"\";\n\n switch (datacenter) {\n case \"GMU\":\n cloudOut = \"pvdc-east-1\";\n break;\n case \"SPA\":\n cloudOut = \"pvdc-east-1\";\n break;\n case \"DEV\":\n cloudOut = \"pvdc-east-1\";;\n break;\n case \"UAT\":\n cloudOut = \"pvdc-east-1\";\n break;\n case \"LAS\":\n cloudOut = \"pvdc-west-1\";\n break;\n case \"ATL\":\n cloudOut = \"pvdc-east-2\";\n break;\n case \"ACR\":\n cloudOut = \"acronis-native\";\n break;\n case \"EXT\":\n cloudOut = \"external-datacenter\";\n break;\n case \"VCD\":\n cloudOut = \"location-unknown\";\n break;\n case \"GCP\":\n cloudOut = \"google-cloud-compute\";\n break;\n case \"AWS\":\n cloudOut = \"aws\";\n break;\n case \"AZU\":\n cloudOut = \"azure\";\n break;\n default:\n break;\n }\n\n return cloudOut;\n }\n\n}\n","import { N3TStore } from '@app/core/_services/n3tStore.service';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Company } from '../gql/graphql/company/schema/type';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CompanyService {\n\n public company: Observable;\n private companySubject = new BehaviorSubject(new Company());\n\n public channelCompanies: Observable;\n private channelCompaniesSubject = new BehaviorSubject(new Array());\n\n constructor(\n private n3tStore: N3TStore\n ) {\n this.company = n3tStore.selectCompany();\n this.company.subscribe(x => this.companySubject.next(x));\n this.channelCompanies = n3tStore.selectChannelCompanies();\n this.channelCompanies.subscribe(x => this.channelCompaniesSubject.next(x));\n }\n\n public getCompany(): Company {\n return this.companySubject.value;\n }\n\n public getChannelCompanies(): Array {\n return this.channelCompaniesSubject.value;\n }\n\n}\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\n\r\nexport class CreateVMSnapInput {\r\n userId: string;\r\n vmname: string;\r\n orgname: string;\r\n datacenterLocation: DatacenterLocations;\r\n vmOrVappId: string;\r\n}\r\n","import { StorageProfile } from \"./storageProfile\";\r\nimport { EdgeGateway } from \"./edgeGateway\";\r\nimport { VApp } from \"./vApp\";\r\nimport { DatacenterLocations } from \"../../../shared/schema/enums/datacenterLocations\";\r\nimport { NetworkConfiguration } from \"./networkConfiguration\";\r\n\r\nexport class VDC {\r\n memoryLimitMB: number;\r\n memoryLimitMBSpecified: boolean;\r\n memoryUsedMB: number;\r\n memoryUsedMBSpecified: boolean;\r\n storageAllocationMB: number;\r\n storageAllocationMBSpecified: boolean;\r\n storageLimitMB: number;\r\n memoryAllocationMBSpecified: boolean;\r\n storageLimitMBSpecified: boolean;\r\n storageUsedMBSpecified: boolean;\r\n networkQuota: number;\r\n usedNetworkQuota: number;\r\n nicQuota: number;\r\n vmQuota: number;\r\n storageProfiles: StorageProfile[];\r\n networks: NetworkConfiguration[];\r\n storageUsedMB: number;\r\n edgeGateways: EdgeGateway[];\r\n memoryAllocationMB: number;\r\n cpuUsedMhz: number;\r\n name: string;\r\n allocationModel: string;\r\n href: string;\r\n id: string;\r\n type: string;\r\n datacenterLocation: DatacenterLocations;\r\n vApps: VApp[];\r\n cpuUsedMhzSpecified: boolean;\r\n vAppsCount: number;\r\n orgName: string;\r\n isEnabled: boolean;\r\n isEnabledSpecified: boolean;\r\n cpuAllocationMhz: number;\r\n cpuAllocationMhzSpecified: boolean;\r\n cpuLimitMhz: number;\r\n cpuLimitMhzSpecified: boolean;\r\n vmCount: number;\r\n region: string;\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\n\r\nexport class RemoveVMSnapInput {\r\n userId: string;\r\n vmname: string;\r\n orgname: string;\r\n datacenterLocation: DatacenterLocations;\r\n vmid: string;\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\n\r\nexport class RevertVMSnapInput {\r\n userId: string;\r\n vmname: string;\r\n orgname: string;\r\n datacenterLocation: DatacenterLocations;\r\n vmid: string;\r\n}\r\n","import { CreateVMSnapInput } from '@app/core/gql/graphql/compute/schema/input/createVMSnapInput';\r\nimport { GqlService } from './gql.service';\r\nimport { VMFlat, VDC } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { Observable, BehaviorSubject, of } from 'rxjs';\r\nimport { map, filter } from 'rxjs/operators';\r\nimport { N3TStore } from './n3tStore.service';\r\nimport { UsageVDC } from '../_models/stats/usageVDC';\r\nimport { Org } from '../gql/graphql/shared/schema/type';\r\nimport { AuthUser } from '../_models/user';\r\nimport { SubSink } from 'subsink';\r\nimport { Membership } from '../gql/graphql/login/schema/type';\r\nimport { RemoveVMSnapInput, RevertVMSnapInput } from '../gql/graphql/compute/schema/input';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ComputeService implements OnDestroy {\r\n private sub = new SubSink();\r\n\r\n runModels: any[];\r\n orgs$ = new BehaviorSubject(new Array());\r\n user$ = new BehaviorSubject(new AuthUser());\r\n memberships$ = new BehaviorSubject(new Array());\r\n\r\n constructor ( \r\n private n3tStore: N3TStore,\r\n private gqlService: GqlService\r\n ) {\r\n this.sub.sink = this.n3tStore.selectUser().subscribe(result => {\r\n this.user$.next(result);\r\n });\r\n\r\n this.sub.sink = this.n3tStore.selectMembeships().subscribe(result => {\r\n this.memberships$.next(result);\r\n });\r\n\r\n this.sub.sink = this.n3tStore.selectOrgs().subscribe(result => {\r\n this.orgs$.next(result);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n //this.stopComputePolling();\r\n }\r\n\r\n // //#region Handle polling\r\n // stopComputePolling() {\r\n // this._computeQueryRef.stopPolling()\r\n // }\r\n\r\n // //#endregion\r\n\r\n //#region VM Snapshot Calls\r\n\r\n createVMSnapshot(vmid: string, location: DatacenterLocations, vmname?: string): Observable {\r\n let input = new CreateVMSnapInput();\r\n input.datacenterLocation = location;\r\n input.orgname = this.getOrgForLocation(location);\r\n input.userId = this.user$.value.userId.toString();\r\n input.vmOrVappId = \"vm-\" + vmid;\r\n input.vmname = vmname;\r\n\r\n if (input.orgname !== \"\") {\r\n return this.gqlService.gql.compute.createVMSnap(input).pipe(map(result => {\r\n return result.data['createVMSnap'].success as boolean;\r\n }));\r\n } else {\r\n return of(false);\r\n }\r\n }\r\n\r\n deleteVMSnapshot(vmid: string, location: DatacenterLocations, vmname?: string): Observable {\r\n let input = new RemoveVMSnapInput();\r\n input.datacenterLocation = location;\r\n input.orgname = this.getOrgForLocation(location);\r\n input.userId = this.user$.value.userId.toString();\r\n input.vmid = \"vm-\" + vmid;\r\n input.vmname = vmname;\r\n\r\n if (input.orgname !== \"\") {\r\n \r\n return this.gqlService.gql.compute.removeVMSnap(input).pipe(map(result => {\r\n return result.data['removeVMSnap'].success as boolean;\r\n }));\r\n // this.gqlService.gql.compute.removeVMSnap(input).subscribe(result => {\r\n // return of(result.data['removeVMSnap'].success as boolean);\r\n // });\r\n } else {\r\n return of(false);\r\n }\r\n }\r\n\r\n revertVMSnapshot(vmid: string, location: DatacenterLocations, vmname?: string): Observable {\r\n let input = new RevertVMSnapInput();\r\n input.datacenterLocation = location;\r\n input.orgname = this.getOrgForLocation(location);\r\n input.userId = this.user$.value.userId.toString();\r\n input.vmid = \"vm-\" + vmid;\r\n input.vmname = vmname;\r\n\r\n if (input.orgname !== \"\") {\r\n return this.gqlService.gql.compute.revertVMSnap(input).pipe(map(result => {\r\n return result.data['revertVMSnap'].success as boolean;\r\n }));\r\n } else {\r\n return of(false);\r\n }\r\n }\r\n\r\n getOrgForLocation(location: DatacenterLocations): string {\r\n let theOrg = _.find(this.orgs$.value, function(o) {\r\n return o.datacenterLocation === location;\r\n });\r\n\r\n if (theOrg !== undefined) {\r\n return theOrg.name;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n updateVMFlat(vmId: string, changes: Partial) {\r\n //this.n3tStore.updateVMFlat(vm);\r\n\r\n // const changes = this.form.value;\r\n\r\n // this.coursesService\r\n // .saveCourse(this.courseId, changes)\r\n // .subscribe(\r\n // () => {\r\n\r\n // const course: Update = {\r\n // id: this.courseId,\r\n // changes\r\n // };\r\n\r\n // this.store.dispatch(new CourseSaved({course}));\r\n\r\n // this.dialogRef.close();\r\n // }\r\n // );\r\n\r\n\r\n }\r\n\r\n // getDRStatus(elem, sessionid, appid, orgName, datacenterLocation) {\r\n // var drLink = \"DR: N/A\";\r\n\r\n // if (datacenterLocation.toLowerCase() === \"aws\" || datacenterLocation.toLowerCase() === \"gcp\" || datacenterLocation.toLowerCase() === \"vcd\") {\r\n // elem.html(drLink);\r\n // return;\r\n // }\r\n\r\n // var sessionFiltered = this.parseDRSessionId(sessionid, datacenterLocation);\r\n\r\n // var urlBackupApp = apiBase + \"backupapp/\" + sessionFiltered + \"/\" + appid + \"/\" + datacenterLocation;\r\n\r\n // if (sessionFiltered === \"\" || sessionFiltered === null || sessionFiltered === undefined) {\r\n // elem.html(\"DR: N/A\");\r\n // }\r\n // else {\r\n // $.ajax({\r\n // url: urlBackupApp,\r\n // type: \"GET\",\r\n // dataType: \"json\"\r\n // , xhrFields: {\r\n // withCredentials: true\r\n // }\r\n // }).then(function (data) {\r\n // if (typeof data.result === \"undefined\" || data.result === null || data.result.id === 0) {\r\n // elem.html(drLink);\r\n // }\r\n // else {\r\n // //Check and see if this thing is actively covered with a SLA\r\n // if (data.result.sla.id !== 0) {\r\n // // Check for SLA status\r\n // if (data.result.sla.scheduleoff !== true) {\r\n // drLink = \"DR: ON\";\r\n // }\r\n // else {\r\n // drLink = \"DR: PRT\";\r\n // }\r\n // }\r\n // else {\r\n // drLink = \"DR: AVL\";\r\n // }\r\n\r\n\r\n // elem.html(drLink);\r\n\r\n // // Take the opportunity to set the appid value as well here\r\n // elem.parent().find(\".appid\").html(data.result.id);\r\n // }\r\n\r\n // // Fix Isotope\r\n // $('#vmBoxList').isotope('updateSortData').isotope();\r\n // });\r\n // }\r\n // };\r\n\r\n parseDRSessionId(sessions, location) {\r\n var mySession = _.findWhere(sessions, { datacenterLocation: location });\r\n if (mySession !== undefined) {\r\n return mySession.sessionId;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n };\r\n\r\n parseOrgByLocation(companyIdentifiers, loc) {\r\n // location: lasact01.palmettovdc.com/actifio/api/\r\n var orgs = _.filter(companyIdentifiers, function(ci) {\r\n return ci.applicationName === \"Actifio\" && ci.location.toLowerCase().startsWith(loc.toLowerCase())\r\n });\r\n\r\n if (orgs.length > 0) {\r\n return orgs[0].orgName;\r\n } else {\r\n return \"\";\r\n }\r\n };\r\n\r\n getIfRemoteDPSByLocation(companyIdentifiers, loc): boolean {\r\n // location: lasact01.palmettovdc.com/actifio/api/\r\n var remote = _.filter(companyIdentifiers, function(ci) {\r\n return ci.applicationName === \"Actifio\" && ci.location.toLowerCase().startsWith(loc.toLowerCase())\r\n });\r\n\r\n if (remote.length > 0) {\r\n return remote[0].isRemote;\r\n } else {\r\n return false;\r\n } \r\n };\r\n\r\n parseVDCIfFromFriendlyPath(path: string): string {\r\n let idsBig = path.split(\"(\");\r\n\r\n // There \"should\" be two \"(\" in the path, the first corresponding to Org Id and the second to VDC Id, or three \"(\"\" with the third being /vApp Name ()/:\r\n // LAS PvDC:/LASPVDC/net3 ()/LAS OnDemand ()/\r\n if (idsBig.length === 3 || idsBig.length === 4) {\r\n return idsBig[2].slice(0, 36);\r\n } else {\r\n return \"Unknown format for path, cannot parse VDC ID.\";\r\n }\r\n }\r\n\r\n parseProjectZoneMachineGCP(urlIn: string, whatOut: string): string {\r\n //var orig = \"https://www.googleapis.com/compute/v1/projects/devtest-1306/zones/us-central1-a/machineTypes/n1-standard-1\";\r\n\r\n var firstSplit = urlIn.split(\"/\");\r\n\r\n var project;\r\n var zone;\r\n var machineType;\r\n\r\n var step;\r\n for (step = 0; step < firstSplit.length; step++) {\r\n switch (firstSplit[step]) {\r\n case \"projects\":\r\n project = firstSplit[step + 1];\r\n break;\r\n case \"zones\":\r\n zone = firstSplit[step + 1];\r\n break;\r\n case \"machineTypes\":\r\n machineType = firstSplit[step + 1];\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n switch (whatOut.toLowerCase()) {\r\n case \"project\":\r\n return project;\r\n case \"zone\":\r\n return zone;\r\n case \"machinetype\":\r\n return machineType;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n getVDCUsageStats(vdcid: string): UsageVDC {\r\n // VDC properties to pull from:\r\n // allocationModel: string\r\n // memoryAllocationMB: number\r\n // memoryUsedMB: number\r\n // memoryLimitMB: number\r\n // storageAllocationMB: number\r\n // storageUsedMB: number\r\n // storageLimitMB: number\r\n // cpuAllocationMhz: number\r\n // cpuUsedMhz: number\r\n // cpuLimitMhz: number\r\n // networkQuota: number\r\n // usedNetworkQuota: number\r\n\r\n let usage = new UsageVDC();\r\n\r\n let vdc = new VDC();\r\n\r\n this.n3tStore.selectVDCs().subscribe(result => {\r\n vdc = _.findWhere(result, { 'id': vdcid });\r\n });\r\n\r\n if (vdc.name !== \"\") {\r\n usage.allocationModel = vdc.allocationModel;\r\n usage.datacenterLocation = vdc.datacenterLocation;\r\n usage.cpuAlloc = vdc.cpuAllocationMhz;\r\n usage.cpuLimit = vdc.cpuLimitMhz;\r\n usage.cpuUsed = vdc.cpuUsedMhz;\r\n usage.diskAlloc = vdc.storageAllocationMB;\r\n usage.diskLimit = vdc.storageLimitMB;\r\n usage.diskUsed = vdc.storageUsedMB;\r\n usage.networkQuota = vdc.networkQuota;\r\n usage.usedNetworkQuota = vdc.usedNetworkQuota;\r\n usage.ramAlloc = vdc.memoryAllocationMB;\r\n usage.ramLimit = vdc.memoryLimitMB;\r\n usage.ramUsed = vdc.memoryUsedMB;\r\n usage.vmCount = vdc.vmCount;\r\n }\r\n\r\n return usage;\r\n }\r\n\r\n checkAvailableDisk(neededDisk: number, usage: UsageVDC): boolean {\r\n let storageAvailable = 999999999999999999999;\r\n\r\n if (usage.diskLimit > 0) {\r\n storageAvailable = usage.diskLimit - usage.diskUsed;\r\n }\r\n\r\n if (usage.diskAlloc > 0) {\r\n storageAvailable = usage.diskAlloc - usage.diskUsed;\r\n }\r\n\r\n return Math.sign(storageAvailable - neededDisk) > 0 ? true : false;\r\n }\r\n\r\n checkAvailableCPU(neededCpu: number, usage: UsageVDC): boolean {\r\n let cpuAvailable = 999999999999999999999;\r\n\r\n if (usage.cpuLimit > 0) {\r\n cpuAvailable = usage.cpuLimit - usage.cpuUsed;\r\n }\r\n\r\n return Math.sign(cpuAvailable - neededCpu) > 0 ? true : false;\r\n }\r\n\r\n checkAvailableRAM = function (neededRam: number, usage: UsageVDC): boolean {\r\n let ramAvailable = 999999999999999999999;\r\n\r\n if (usage.ramLimit > 0) {\r\n ramAvailable = usage.ramLimit - usage.ramUsed;\r\n }\r\n\r\n if (usage.ramAlloc > 0) {\r\n ramAvailable = usage.ramAlloc - usage.ramUsed;\r\n }\r\n\r\n return Math.sign(ramAvailable - (neededRam / 1024)) > 0 ? true : false;\r\n }\r\n\r\n checkVMQuota(neededVM: number, usage: UsageVDC): boolean {\r\n var vmQuota = 1000; //HACK until get this info again... //_.findWhere(vdcStats, { 'stat': 'vmQuota' }).value;\r\n var vmCount = usage.vmCount;\r\n\r\n if (vmQuota === 0) {\r\n // Unlimited\r\n return true;\r\n }\r\n\r\n if (vmQuota - vmCount - neededVM >= 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n getVDCIdFromVMId(vmid: string): string {\r\n let vdcid: string = \"\";\r\n\r\n this.n3tStore.selectVMFlat(vmid).subscribe(result => {\r\n vdcid = result.vdcid;\r\n });\r\n\r\n return vdcid;\r\n }\r\n\r\n // setRunModels() {\r\n // this.runModels = Array();\r\n \r\n // this.runModels = _.chain(this.cloudmanageService.getComputeFlatValue().map(function (vm) { return this.getAllocationModel(vm.allocationModel) }).uniq().value();\r\n // }\r\n \r\n\r\n getHealthStatus(status: string): string {\r\n /*\r\n FAILED_CREATION = -1,\r\n UNRESOLVED = 0,\r\n RESOLVED = 1,\r\n SUSPENDED = 3,\r\n POWERED_ON = 4,\r\n WAITING_FOR_INPUT = 5,\r\n UNKNOWN = 6,\r\n UNRECOGNIZED = 7,\r\n POWERED_OFF = 8,\r\n INCONSISTENT_STATE = 9,\r\n */\r\n\r\n var healthClass = \"white\";\r\n\r\n switch (status) {\r\n case \"POWERED_ON\":\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"4\":\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"running\": // AWS\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"RUNNING\": // GCP\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"RESOLVED\":\r\n healthClass = \"green\";\r\n break;\r\n \r\n case \"FAILED_CREATION\":\r\n healthClass = \"red\";\r\n break;\r\n\r\n case \"-1\":\r\n healthClass = \"red\";\r\n break;\r\n\r\n case \"UNRESOLVED\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"0\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"WAITING_FOR_INPUT\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"5\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"SUSPENDED\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"3\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"stopping\": // AWS\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"PROVISIONING\": // GCP\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"pending\": // AWS\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"stopped\": // AWS\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"UNKNOWN\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"6\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"UNRECOGNIZED\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"7\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"POWERED_OFF\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"8\":\r\n healthClass = \"white\";\r\n break;\r\n\r\n case \"INCONSISTENT_STATE\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"9\":\r\n healthClass = \"yellow\";\r\n break;\r\n\r\n case \"VM running\": // AZU\r\n healthClass = \"green\";\r\n break;\r\n\r\n case \"VM deallocated\": // AZU\r\n healthClass = \"white\";\r\n break;\r\n\r\n default:\r\n healthClass = \"white\";\r\n break;\r\n }\r\n\r\n return healthClass;\r\n };\r\n\r\n getAllocationModel(name: string): string {\r\n var brandedName = \"\";\r\n\r\n switch (name) {\r\n case \"ALLOCATION\":\r\n brandedName = \"PvDC Select\";\r\n break;\r\n\r\n case \"PAYGO\":\r\n brandedName = \"PvDC On Demand\";\r\n break;\r\n\r\n case \"AWS EC2\":\r\n brandedName = \"AWS EC2\";\r\n break;\r\n\r\n case \"Google Cloud Platform\":\r\n brandedName = \"Google Cloud Platform\";\r\n break;\r\n\r\n case \"AllocationPool\":\r\n brandedName = \"vCloud Air Select\";\r\n break;\r\n\r\n case \"Azure\":\r\n brandedName = \"Microsoft Azure\";\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return brandedName;\r\n };\r\n\r\n vMStatus(status: string): string {\r\n var currentStatusSimple = \"\";\r\n\r\n switch (status) {\r\n case \"POWERED_ON\":\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"RESOLVED\":\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"running\": // AWS\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"stopping\": // AWS\r\n currentStatusSimple = \"INDETERMINATE\";\r\n break;\r\n\r\n case \"pending\": // AWS\r\n currentStatusSimple = \"INDETERMINATE\";\r\n break;\r\n\r\n case \"stopped\": // AWS\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"TERMINATED\": // GCP\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"RUNNING\": // GCP\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"SUSPENDED\":\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"FAILED_CREATION\":\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"UNRESOLVED\":\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"WAITING_FOR_INPUT\":\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"UNKNOWN\":\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"UNRECOGNIZED\":\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"POWERED_OFF\":\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n case \"INCONSISTENT_STATE\":\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"VM running\": // AZU\r\n currentStatusSimple = \"ON\";\r\n break;\r\n\r\n case \"VM deallocated\": // AZU\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n\r\n default:\r\n currentStatusSimple = \"OFF\";\r\n break;\r\n }\r\n\r\n return currentStatusSimple;\r\n };\r\n\r\n //#region Helper functions\r\n\r\n parseDate(dateIn): string {\r\n var parsedDate = new Date(parseInt(dateIn.substr(6)));\r\n return parsedDate.toDateString().substr(4) + \" \" + parsedDate.toTimeString().slice(0, 17);\r\n };\r\n\r\n shortenOS(origOS: string): string {\r\n if (origOS !== null && origOS !== undefined) {\r\n var shorterOS = origOS.replace(\"Microsoft\", \"MS\");\r\n return shorterOS;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n\r\n };\r\n\r\n getDatacenterIcon(datacenter: string): string {\r\n var iconPath = \"\";\r\n\r\n switch (datacenter) {\r\n case \"GMU\":\r\n iconPath = \"assets/img/logos/N3T-PvDC.png\";\r\n break;\r\n case \"SPA\":\r\n iconPath = \"assets/img/logos/N3T-PvDC.png\";\r\n break;\r\n case \"DEV\":\r\n iconPath = \"assets/img/logos/N3T-PvDC.png\";\r\n break;\r\n case \"UAT\":\r\n iconPath = \"assets/img/logos/N3T-PvDC.png\";\r\n break;\r\n case \"VCA\":\r\n iconPath = \"assets/img/logos/VCA-icon.png\";\r\n break;\r\n case \"GCP\":\r\n iconPath = \"assets/img/logos/Google-icon.png\";\r\n break;\r\n case \"AWS\":\r\n iconPath = \"assets/img/logos/AWS-icon.png\";\r\n break;\r\n case \"AZU\":\r\n iconPath = \"assets/img/logos/microsoft-azure-sm.png\";\r\n break;\r\n default:\r\n iconPath = \"assets/img/logos/N3T-PvDC.png\";\r\n break;\r\n }\r\n\r\n return iconPath;\r\n };\r\n\r\n getVMPowerStatus(status: string): string {\r\n var statusDisplay = \"\";\r\n var srcImgStart = ' \" + status;\r\n\r\n var srcGreen = \"green\"; //\"img/Health-Status-buttonG.png\";\r\n var srcRed = \"red\"; //\"img/Health-Status-buttonR.png\";\r\n var srcWhite = \"grey\"; // \"img/Health-Status-buttonW.png\";\r\n var srcYellow = \"yellow\"; // \"img/Health-Status-buttonY.png\";\r\n\r\n var returnVal = \"white\";\r\n\r\n switch (status) {\r\n case \"POWERED_ON\":\r\n //statusDisplay = srcImgStart + srcGreen + srcImgEnd;\r\n returnVal = srcGreen;\r\n break;\r\n\r\n case \"running\": // AWS\r\n //statusDisplay = srcImgStart + srcGreen + srcImgEnd;\r\n returnVal = srcGreen;\r\n break;\r\n\r\n case \"RESOLVED\":\r\n //statusDisplay = srcImgStart + srcGreen + srcImgEnd;\r\n returnVal = srcGreen;\r\n break;\r\n\r\n case \"FAILED_CREATION\":\r\n //statusDisplay = srcImgStart + srcRed + srcImgEnd;\r\n returnVal = srcRed;\r\n break;\r\n\r\n case \"UNRESOLVED\":\r\n //statusDisplay = srcImgStart + srcYellow + srcImgEnd;\r\n returnVal = srcYellow;\r\n break;\r\n\r\n case \"SUSPENDED\":\r\n returnVal = srcYellow;\r\n break;\r\n\r\n case \"WAITING_FOR_INPUT\":\r\n //statusDisplay = srcImgStart + srcYellow + srcImgEnd;\r\n returnVal = srcYellow;\r\n break;\r\n\r\n case \"stopping\": // AWS\r\n //statusDisplay = srcImgStart + srcYellow + srcImgEnd;\r\n returnVal = srcYellow;\r\n break;\r\n\r\n case \"pending\": // AWS\r\n //statusDisplay = srcImgStart + srcYellow + srcImgEnd;\r\n returnVal = srcYellow;\r\n break;\r\n\r\n case \"stopped\": // AWS\r\n //statusDisplay = srcImgStart + srcWhite + srcImgEnd;\r\n returnVal = srcWhite;\r\n break;\r\n\r\n case \"UNKNOWN\":\r\n //statusDisplay = srcImgStart + srcWhite + srcImgEnd;\r\n returnVal = srcWhite;\r\n break;\r\n\r\n case \"UNRECOGNIZED\":\r\n //statusDisplay = srcImgStart + srcWhite + srcImgEnd;\r\n returnVal = srcWhite;\r\n break;\r\n\r\n case \"POWERED_OFF\":\r\n //statusDisplay = srcImgStart + srcWhite + srcImgEnd;\r\n returnVal = srcWhite;\r\n break;\r\n\r\n case \"INCONSISTENT_STATE\":\r\n //statusDisplay = srcImgStart + srcYellow + srcImgEnd;\r\n returnVal = srcYellow;\r\n break;\r\n case \"VM running\":\r\n returnVal = srcGreen;\r\n break;\r\n\r\n case \"VM deallocated\":\r\n returnVal = srcWhite;\r\n break;\r\n\r\n default:\r\n //statusDisplay = srcImgStart + srcWhite + srcImgEnd;\r\n returnVal = srcWhite;\r\n break;\r\n }\r\n\r\n return returnVal;\r\n };\r\n\r\n isPvDC(datacenter: any): boolean {\r\n let isPvDC = true;\r\n\r\n switch (datacenter) {\r\n case \"ATL\":\r\n isPvDC = true;\r\n break;\r\n case \"SPA\":\r\n isPvDC = true;\r\n break;\r\n case \"LAS\":\r\n isPvDC = true;\r\n break;\r\n case \"DEV\":\r\n isPvDC = true;\r\n break;\r\n case \"UAT\":\r\n isPvDC = true;\r\n break;\r\n case \"AWS\":\r\n isPvDC = false;\r\n break;\r\n case \"AZU\":\r\n isPvDC = false;\r\n break;\r\n case \"VCD\":\r\n isPvDC = false;\r\n break;\r\n case \"GCP\":\r\n isPvDC = false;\r\n break;\r\n case \"AUV\":\r\n isPvDC = false;\r\n break; \r\n default:\r\n isPvDC = false;\r\n break;\r\n }\r\n\r\n return isPvDC;\r\n };\r\n\r\n getGuestOSImage(osName: string): string {\r\n var imgLink = \"\";\r\n var nameTmp = \"\";\r\n\r\n if (osName !== undefined) {\r\n nameTmp = osName.toLowerCase();\r\n }\r\n else {\r\n nameTmp = \"unknown\";\r\n }\r\n\r\n if (nameTmp.includes('suse')) {\r\n imgLink = '/assets/img/logos/opensuse-logo.png';\r\n }\r\n else if (nameTmp.includes('windows') || nameTmp.includes('w2k') || nameTmp.includes('microsoft') || nameTmp.includes('win')) {\r\n imgLink = \"/assets/img/logos/windows-logo-2012-2.png\";\r\n }\r\n else if (nameTmp.includes('red hat') || nameTmp.includes('rhel')) {\r\n imgLink = \"/assets/img/logos/red_hat-logo.png\";\r\n }\r\n else if (nameTmp.includes('ubuntu')) {\r\n imgLink = \"/assets/img/logos/ubuntu-logo.png\";\r\n }\r\n else if (nameTmp.includes('centos') || nameTmp.includes('cent')) {\r\n imgLink = \"/assets/img/logos/centos-logo.png\";\r\n }\r\n else {\r\n imgLink = \"/assets/img/logos/windows-logo-2012-2.png\";\r\n }\r\n\r\n return imgLink;\r\n };\r\n\r\n //#endregion\r\n\r\n\r\n}","import { DatacenterLocations } from '../../../shared/schema/enums'\r\n\r\nexport class SyncbackInput {\r\n appId: string;\r\n sessionId: string;\r\n datacenterLocation: DatacenterLocations;\r\n}","\r\n\r\nexport class FailbackInput {\r\n appId: string;\r\n sessionId: string;\r\n datacenterLocation: string;\r\n}","\r\n\r\nexport class RemoveTestFailoverInput {\r\n sessionId: string;\r\n datacenterLocation: string;\r\n image: string;\r\n}","\r\n\r\nexport class PerformFailoverInput {\r\n isTest: boolean;\r\n appId: string;\r\n hostId: string;\r\n sessionId: string;\r\n datacenterLocation: string;\r\n}","import { DatacenterLocations } from '../../../shared/schema/enums'\r\n\r\nexport class GetDPSJobStatusInput {\r\n sessionId: string;\r\n jobid: string;\r\n datacenterLocation: DatacenterLocations;\r\n}\r\n","\r\nexport class ProcessJobStatusInput {\r\n userId: string;\r\n processid: string;\r\n}","export class DoDPSRestoreInput {\r\n sessionId: string;\r\n backup: string;\r\n datacenterLocation: string;\r\n}\r\n","export class DoCloneProcessInput {\r\n sessionid: string;\r\n isRemote: boolean;\r\n orgName: string;\r\n image: string;\r\n datacenterLocation: string;\r\n clonename: string;\r\n userId: string;\r\n customerId: string;\r\n}\r\n","export class DoMountProcessInput {\r\n sessionid: string;\r\n isRemote: boolean;\r\n orgName: string;\r\n image: string;\r\n datacenterLocation: string;\r\n mountname: string;\r\n userId: string;\r\n customerId: string;\r\n}\r\n","export class TypeJob {\r\n targethost: string;\r\n sourceid: string;\r\n appname: string;\r\n sltname: string;\r\n retrycount: number;\r\n startdate: string;\r\n consistencydate: string;\r\n pid: number;\r\n hostname: string;\r\n status: string;\r\n relativesize: number;\r\n flags: number;\r\n jobclass: string;\r\n errorcode: string;\r\n jobtag: string;\r\n description: string;\r\n changerequest: string;\r\n priority: string;\r\n jobcount: number;\r\n id: number;\r\n policyname: string;\r\n parentid: number;\r\n appid: number;\r\n expirationdate: string;\r\n jobname: string;\r\n queuedate: string;\r\n virtualsize: number;\r\n progress: number;\r\n isscheduled: boolean;\r\n enddate: string;\r\n}\r\n","import { TypeBackup } from \"./\";\r\nexport class TypeBackups {\r\n result: TypeBackup[];\r\n}\r\n","import { SyncbackInput } from './../gql/graphql/dps/schema/input/syncbackInput';\r\nimport { FailbackInput } from './../gql/graphql/recovery/schema/input/failbackInput';\r\nimport { RemoveTestFailoverResponse } from './../gql/graphql/recovery/schema/type/removeTestFailoverResponse';\r\nimport { RemoveTestFailoverInput } from './../gql/graphql/recovery/schema/input/removeTestFailoverInput';\r\nimport { PerformFailoverResponse } from './../gql/graphql/recovery/schema/type/performFailoverResponse';\r\nimport { PerformFailoverInput } from './../gql/graphql/recovery/schema/input';\r\nimport { DoDPSRestoreResponse } from './../gql/graphql/dps/schema/type/doDPSRestoreResponse';\r\nimport { GetDPSJobStatusInput } from './../gql/graphql/dps/schema/input/getDPSJobStatusInput';\r\nimport { ProcessJobStatusInput } from './../gql/graphql/dps/schema/input/processJobStatusInput';\r\nimport { DoCloneProcessResponse } from './../gql/graphql/dps/schema/type/doCloneProcessResponse';\r\nimport { DoDPSRestoreInput, DoMountProcessInput, DoCloneProcessInput } from './../gql/graphql/dps/schema/input';\r\nimport { CommonService, GqlService, ComputeService, TimerService } from '@app/core/_services';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { catchError, map } from \"rxjs/operators\";\r\nimport { BehaviorSubject, Observable, of } from \"rxjs\";\r\nimport { N3TStore } from \"./n3tStore.service\";\r\nimport { DoMountProcessResponse, SyncbackResponse, TypeBackup, TypeBackups, TypeHost, TypeJob } from '@app/core/gql/graphql/dps/schema/type';\r\nimport * as _ from 'underscore';\r\nimport { Session } from '../gql/graphql/backup/schema/type';\r\nimport { UsageVDC } from '../_models/stats/usageVDC';\r\nimport { FailbackResponse } from '../gql/graphql/recovery/schema/type';\r\nimport { AuthUser } from '../_models';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class DPSService {\r\n \r\n theBackups$: Observable;\r\n backups: TypeBackup[];\r\n\r\n showBackupsProgress = new BehaviorSubject(false);\r\n\r\n constructor(\r\n private n3tStore: N3TStore,\r\n private commonService: CommonService,\r\n private gqlService: GqlService,\r\n private computeService: ComputeService,\r\n private jobsTimer: TimerService,\r\n ) { }\r\n\r\n doDRSAction(backup: TypeBackup, hostid: string = null) {\r\n\r\n //#region check for running job\r\n if (backup.jobid !== null) {\r\n // Shouldn't be trying to reprocess this one, get out of here\r\n return;\r\n } \r\n\r\n let backupJobs$ = this.n3tStore.selectBackupJobs();\r\n let proceed = true;\r\n backupJobs$.subscribe(jobs => {\r\n jobs.forEach(job => {\r\n if (job.sourceid === undefined || job.sourceid.includes(backup.backupname)) {\r\n // There is a Backup Job in place for this backup already, don't proceed any further\r\n proceed = false;\r\n\r\n // // Job exists, is it done?\r\n if (job.progress === 100) {\r\n let timerName = \"job\" + job.jobname;\r\n this.stopJobsTimer(timerName);\r\n\r\n let id = new Array();\r\n id.push(backup.id.toString());\r\n this.n3tStore.deleteBackups(id);\r\n\r\n // do cleanup if this is removing a \"testfailover\"\r\n if (backup.backupAction.action.toLowerCase() === \"rmfailovertest\") {\r\n this.cleanupTestFailover(backup);\r\n }\r\n }\r\n } \r\n })\r\n });\r\n if (!proceed) {\r\n return;\r\n }\r\n //#endregion\r\n\r\n this.showBackupsProgress.next(true);\r\n\r\n // Prepare for cleanup on aisle 3....\r\n //this.jobFinisher();\r\n\r\n let datacenterRemote = undefined;\r\n let targetsystem = \"\";\r\n let origAppId = \"\";\r\n let targethost = \"\";\r\n\r\n let action = backup.backupAction.action.toLowerCase();\r\n let isTest = true;\r\n if (action === \"testfailover\") {\r\n isTest = true;\r\n }\r\n else if (action === \"failover\") {\r\n isTest = false;\r\n }\r\n\r\n let vdcHostStats: UsageVDC;\r\n if (action === \"testfailover\" || action === \"failover\") {\r\n origAppId = backup.backupAction.origappid.toString();\r\n targetsystem = backup.backupAction.targetcluster;\r\n targethost = backup.backupAction.targethost;\r\n\r\n let vmidhost = targethost.split(\" (\")[1].split(\")\")[0];\r\n\r\n vdcHostStats = this.computeService.getVDCUsageStats(this.computeService.getVDCIdFromVMId(vmidhost));\r\n\r\n this.n3tStore.selectBackupClusters().subscribe(result => {\r\n datacenterRemote = _.findWhere(result, { clusterid: targetsystem.toString(), thisisme: true }).datacenterLocation;\r\n });\r\n }\r\n else if (action === \"rmfailovertest\" || action === \"failback\" || action === \"syncback\") {\r\n this.n3tStore.selectBackupClusters().subscribe(result => {\r\n datacenterRemote = _.findWhere(result, { clusterid: backup.targetuds, thisisme: true }).datacenterLocation;\r\n });\r\n }\r\n\r\n // New method of grabbing system state sizing\r\n let imageSize = this.parseSize(backup.virtualsize);\r\n let imageCpu = backup.systemstateCPU;\r\n let imageRam = backup.systemstateMemory;\r\n\r\n let vmid: string = \"\";\r\n let vdcStats: UsageVDC = new UsageVDC();\r\n\r\n if (backup.backuphost.indexOf(\"(\") !== -1) { // appname\r\n vmid = backup.backuphost.split(\" (\")[1].split(\")\")[0]; // appname\r\n\r\n vdcStats = this.computeService.getVDCUsageStats(this.computeService.getVDCIdFromVMId(vmid));\r\n } else if (backup.friendlypath.includes(\"(\")) {\r\n // Parse the VDC id from the folder path, which would look something like this:\r\n // LAS PvDC:/LASPVDC/net3 ()/LAS OnDemand ()/\r\n let vdcId = this.computeService.parseVDCIfFromFriendlyPath(backup.friendlypath);\r\n\r\n vdcStats = this.computeService.getVDCUsageStats(vdcId);\r\n\r\n } else {\r\n // This would appear to be a \"management\" workload and thus not available to restore into PvDC withouth some additional steps...\r\n }\r\n \r\n let image = backup.backupname;\r\n\r\n let session = new Array(); // undefined;// $localStorage.BackupAuth;\r\n\r\n this.n3tStore.selectBackupAuth().subscribe(result => {\r\n session = result;\r\n });\r\n\r\n let newName = backup.backupAction.newname;\r\n let origName = backup.hostname;\r\n\r\n let datacenter = undefined;\r\n if (action === \"failback\") {\r\n this.n3tStore.selectBackupClusters().subscribe(result => {\r\n datacenter = _.findWhere(result, { clusterid: backup.sourceuds.toString(), thisisme: true }).datacenterLocation;\r\n });\r\n }else if (action === \"failover\" || action === \"testfailover\") {\r\n this.n3tStore.selectBackupClusters().subscribe(result => {\r\n datacenter = _.findWhere(result, { clusterid: backup.sourceuds.toString() }).datacenterLocation;\r\n });\r\n }\r\n else {\r\n this.n3tStore.selectBackupClusters().subscribe(result => {\r\n datacenter = _.findWhere(result, { clusterid: backup.sourceuds.toString(), thisisme: true }).datacenterLocation;\r\n });\r\n }\r\n \r\n let orgName: string = \"\";\r\n let isRemote: boolean = false;\r\n\r\n this.n3tStore.selectCompanyIdentifiers().subscribe(result => {\r\n orgName = this.computeService.parseOrgByLocation(result, datacenter);\r\n isRemote = this.computeService.getIfRemoteDPSByLocation(result, datacenter);\r\n });\r\n\r\n let allowWork = true;\r\n let errorMsg = \"\";\r\n\r\n let loadingJob = true;\r\n\r\n let user = new AuthUser();\r\n this.n3tStore.selectUser().subscribe(result => {\r\n user = result;\r\n });\r\n\r\n switch (backup.backupAction.action.toLowerCase()) {\r\n case \"\":\r\n //SweetAlert.swal(\"Please select an option.\", \"warning\");\r\n break;\r\n case \"rmfailovertest\":\r\n //SweetAlert.swal(\"Ok\", \"Beginning TEST FAILOVER REMOVAL process.\", \"info\");\r\n\r\n let inputTFO = new RemoveTestFailoverInput();\r\n inputTFO.sessionId = this.computeService.parseDRSessionId(session, datacenterRemote);\r\n inputTFO.datacenterLocation = datacenterRemote;\r\n inputTFO.image = image;\r\n\r\n // Let's go ahead and set up a faux job for display purposes\r\n // Set up a jobid\r\n let tmpid = backup.id + 10000000000;\r\n\r\n // Update the Backup with the returned JobId\r\n backup.jobid = tmpid.toString();\r\n this.n3tStore.upsertBackup(backup);\r\n\r\n let tmpJob = new TypeJob();\r\n tmpJob.id = tmpid;\r\n tmpJob.jobname = \"Job_\" + tmpid.toString();\r\n tmpJob.status = \"In Process\";\r\n tmpJob.progress = 50;\r\n this.setBackupJob(tmpJob);\r\n\r\n this.gqlService.gql.recovery.removeTestFailover(inputTFO).subscribe(result => {\r\n // loadingJob = false;\r\n // backupStatus = response;\r\n \r\n let resp = result.data[\"removeTestFailover\"] as RemoveTestFailoverResponse;\r\n\r\n // The underlying call fails from the provider (timeout), and does not actually return a JobId either.\r\n // Therefore we will work on the assumption that the call will work, and will proceed accordingly.\r\n if (resp.code === \"0\") {\r\n let id = new Array();\r\n id.push(backup.id.toString());\r\n this.n3tStore.deleteBackups(id);\r\n\r\n tmpJob.status = \"Success\";\r\n tmpJob.progress = 100;\r\n this.setBackupJob(tmpJob);\r\n\r\n this.cleanupTestFailover(backup);\r\n }\r\n });\r\n \r\n break;\r\n case \"failback\":\r\n //SweetAlert.swal(\"Ok\", \"Beginning FAILBACK process. Only works when direct access to Host appliance is established!\", \"info\");\r\n\r\n let inputFB = new FailbackInput();\r\n inputFB.appId = backup.appid.toString();\r\n inputFB.datacenterLocation = datacenter;\r\n inputFB.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n\r\n this.gqlService.gql.recovery.failback(inputFB).subscribe(result => {\r\n // loadingJob = false;\r\n // $scope.backupStatus = response;\r\n\r\n let resp = result.data[\"performFailback\"] as FailbackResponse;\r\n\r\n let input = new GetDPSJobStatusInput();\r\n input.datacenterLocation = datacenter;\r\n input.jobid = resp.result.jobid;\r\n input.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n\r\n this.gqlService.gql.dps.getDPSJobStatus(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n });\r\n\r\n break;\r\n case \"syncback\":\r\n //SweetAlert.swal(\"Ok\", \"Beginning SYNCBACK process.\", \"info\");\r\n\r\n let inputSB = new SyncbackInput();\r\n inputSB.appId = backup.originalappid;\r\n inputSB.datacenterLocation = datacenterRemote;\r\n inputSB.sessionId = this.computeService.parseDRSessionId(session, datacenterRemote);\r\n\r\n this.gqlService.gql.dps.syncback(inputSB).subscribe(result => {\r\n // loadingJob = false;\r\n // $scope.backupStatus = response;\r\n\r\n let resp = result as SyncbackResponse;\r\n\r\n let input = new GetDPSJobStatusInput();\r\n input.datacenterLocation = datacenter;\r\n input.jobid = resp.Result.result.jobid;\r\n input.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n\r\n this.gqlService.gql.dps.getDPSJobStatus(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n });\r\n\r\n break;\r\n case \"testfailover\":\r\n\r\n if (!this.computeService.checkAvailableDisk(+imageSize, vdcHostStats)) {\r\n //SweetAlert.swal(\"Not enough storage resources available for Test Failover, please contact support@n3t.com for assistance.\", \"error\");\r\n //toastr[\"warning\"](\"Not enough storage resources available for Test Failover, please contact support@n3t.com for assistance.\");\r\n break;\r\n }\r\n\r\n //SweetAlert.swal(\"Ok\", \"Beginning TEST FAILOVER process.\", \"info\");\r\n\r\n let inputTestFO = new PerformFailoverInput();\r\n inputTestFO.appId = origAppId; \r\n inputTestFO.datacenterLocation = datacenterRemote;\r\n inputTestFO.hostId = backup.backupAction.hostid;\r\n inputTestFO.isTest = isTest;\r\n inputTestFO.sessionId = this.computeService.parseDRSessionId(session, datacenterRemote);\r\n\r\n this.gqlService.gql.recovery.performFailover(inputTestFO).subscribe(result => {\r\n // $scope.loadingJob = false;\r\n // $scope.backupStatus = response;\r\n\r\n let tmp = result.data[\"performFailover\"] as PerformFailoverResponse;\r\n\r\n // Update the Backup with the returned JobId\r\n backup.jobid = tmp.result.jobid;\r\n this.n3tStore.upsertBackup(backup);\r\n \r\n let input = new GetDPSJobStatusInput();\r\n input.datacenterLocation = datacenter;\r\n input.jobid = tmp.result.jobid;\r\n input.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n\r\n // this.gqlService.gql.dps.getDPSJobStatus(input).subscribe(result => {\r\n // let foo = result;\r\n // });\r\n\r\n let timerName = \"job\" + input.jobid;\r\n\r\n if (input.jobid !== null) {\r\n this.jobsTimer.createNewTimer(timerName, 30, ()=>this.onJobsTimer(input, 10000));\r\n }\r\n\r\n });\r\n\r\n break;\r\n case \"failover\":\r\n if (!this.computeService.checkAvailableDisk(+imageSize, vdcHostStats)) {\r\n //SweetAlert.swal(\"Not enough storage resources available for Failover, please contact support@n3t.com for assistance.\", \"error\");\r\n //toastr[\"warning\"](\"Not enough storage resources available for Test Failover, please contact support@n3t.com for assistance.\");\r\n break;\r\n }\r\n\r\n //SweetAlert.swal(\"Ok\", \"Beginning FAILOVER process.\", \"info\");\r\n\r\n // $scope.showDoBackup = false;\r\n // $scope.showDPSStatus = true;\r\n\r\n let input = new PerformFailoverInput();\r\n input.appId = origAppId;\r\n input.datacenterLocation = datacenterRemote;\r\n input.hostId = targethost;\r\n input.isTest = isTest;\r\n input.sessionId = this.computeService.parseDRSessionId(session, datacenterRemote);\r\n\r\n this.gqlService.gql.recovery.performFailover(input).subscribe(result => {\r\n // $scope.loadingJob = false;\r\n // $scope.backupStatus = response;\r\n\r\n let tmp = result.data[\"performFailover\"] as PerformFailoverResponse;\r\n \r\n let input = new GetDPSJobStatusInput();\r\n input.datacenterLocation = datacenter;\r\n input.jobid = tmp.result.jobid;\r\n input.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n\r\n this.gqlService.gql.dps.getDPSJobStatus(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n\r\n });\r\n \r\n break;\r\n case \"restore\":\r\n\r\n if (!this.computeService.checkAvailableDisk(+imageSize, vdcStats)) {\r\n //SweetAlert.swal(\"Not enough storage resources available, please contact support@n3t.com for assistance.\", \"error\");\r\n // toastr[\"warning\"](\"Not enough storage resources available, please contact support@n3t.com for assistance.\");\r\n break;\r\n }\r\n\r\n //SweetAlert.swal(\"Ok\", \"Beginning Restore process.\", \"info\");\r\n\r\n // $scope.showDoBackup = false;\r\n // $scope.showDPSStatus = true;\r\n\r\n let doDPSRestoreInput = new DoDPSRestoreInput();\r\n doDPSRestoreInput.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n doDPSRestoreInput.backup = image;\r\n doDPSRestoreInput.datacenterLocation = datacenter;\r\n\r\n this.gqlService.gql.dps.doDPSRestore(doDPSRestoreInput).subscribe(result => {\r\n let tmp = result.data[\"doDPSRestore\"];\r\n\r\n // Update the Backup with the returned JobId\r\n backup.jobid = tmp.backupResponse.jobid;\r\n this.n3tStore.upsertBackup(backup);\r\n \r\n let input = new GetDPSJobStatusInput();\r\n input.datacenterLocation = datacenter;\r\n input.jobid = tmp.backupResponse.jobid;\r\n input.sessionId = this.computeService.parseDRSessionId(session, datacenter);\r\n\r\n let timerName = \"job\" + input.jobid;\r\n\r\n // let timers = this.jobsTimer.getTimer();\r\n // if (!timers.includes(\"timerName\")) {\r\n if (input.jobid !== null) {\r\n this.jobsTimer.createNewTimer(timerName, 30, ()=>this.onJobsTimer(input, 10000));\r\n }\r\n //}\r\n\r\n \r\n\r\n // this.gqlService.gql.dps.getDPSJobStatus(input, 10000).subscribe(result => {\r\n // this.n3tStore.upsertBackupJob(result.data[\"getDPSJobStatus\"].dpsJobStatus);\r\n\r\n // // let input = new GetDPSJobStatusInput();\r\n // // input.sessionId = doDPSRestoreInput.sessionId;\r\n // // input.jobid = backup.jobid;\r\n // // input.datacenterLocation = datacenter;\r\n\r\n // // this.jobsTimer.createNewTimer(\"jobs\", 15, ()=>this.onJobsTimer(input, 10000));\r\n // });\r\n\r\n // $scope.loadingJob = false;\r\n // $scope.backupStatus = response;\r\n });\r\n\r\n break;\r\n case \"clone\":\r\n if (!this.computeService.checkVMQuota(1, vdcStats)) {\r\n errorMsg += \"This will exceed the VM Quota for this VDC. \";\r\n allowWork = false;\r\n }\r\n if (!this.computeService.checkAvailableCPU(+imageCpu, vdcStats)) {\r\n errorMsg += \"Not enough vCPU resources available. \";\r\n allowWork = false;\r\n }\r\n if (!this.computeService.checkAvailableRAM(+imageRam, vdcStats)) {\r\n errorMsg += \"Not enough vRAM resources available. \";\r\n allowWork = false;\r\n }\r\n if (!this.computeService.checkAvailableDisk(+imageSize, vdcStats)) {\r\n errorMsg += \"Not enough storage resources available. \";\r\n allowWork = false;\r\n }\r\n\r\n if (!allowWork) {\r\n //SweetAlert.swal(errorMsg + \" Please contact support@n3t.com for assistance.\", \"error\");\r\n //toastr[\"warning\"](errorMsg + \" Please contact support@n3t.com for assistance.\");\r\n break;\r\n }\r\n else {\r\n //SweetAlert.swal(\"Ok\", \"Beginning Clone process.\", \"info\");\r\n\r\n // $scope.showDoBackup = false;\r\n // $scope.showDPSStatus = true;\r\n\r\n let cloneInput = new DoCloneProcessInput();\r\n cloneInput.sessionid = this.computeService.parseDRSessionId(session, datacenter);\r\n cloneInput.isRemote = isRemote;\r\n cloneInput.orgName = orgName;\r\n cloneInput.image = image;\r\n cloneInput.datacenterLocation = datacenter;\r\n cloneInput.clonename = newName;\r\n cloneInput.customerId = user.companyId.toString();\r\n cloneInput.userId = user.userId.toString();\r\n\r\n this.gqlService.gql.dps.doCloneProcess(cloneInput).subscribe(result => {\r\n let tmp = result.data[\"doCloneProcess\"];\r\n\r\n if (tmp.cloneProcess[0].process_Id !== undefined && tmp.cloneProcess[0].process_Id !== \"\") {\r\n let input = new ProcessJobStatusInput();\r\n input.processid = tmp.cloneProcess[0].process_Id;\r\n\r\n this.gqlService.gql.dps.getProcessJobStatus(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n\r\n // $scope.loadingJob = false;\r\n // $scope.backupStatus = response;\r\n }\r\n })\r\n }\r\n\r\n break;\r\n case \"mount\":\r\n if (!this.computeService.checkVMQuota(1, vdcStats)) {\r\n errorMsg += \"This will exceed the VM Quota for this VDC. \";\r\n allowWork = false;\r\n }\r\n if (!this.computeService.checkAvailableCPU(+imageCpu, vdcStats)) {\r\n errorMsg += \"Not enough vCPU resources available. \";\r\n allowWork = false;\r\n }\r\n if (!this.computeService.checkAvailableRAM(+imageRam, vdcStats)) {\r\n errorMsg += \"Not enough vRAM resources available. \";\r\n allowWork = false;\r\n }\r\n if (!this.computeService.checkAvailableDisk(+imageSize, vdcStats)) {\r\n errorMsg += \"Not enough storage resources available. \";\r\n allowWork = false;\r\n }\r\n\r\n if (!allowWork) {\r\n //SweetAlert.swal(errorMsg + \" Please contact support@n3t.com for assistance.\", \"error\");\r\n //toastr[\"warning\"](errorMsg + \" Please contact support@n3t.com for assistance.\");\r\n break;\r\n }\r\n else {\r\n //SweetAlert.swal(\"Ok\", \"Beginning Mount process.\", \"info\");\r\n\r\n // $scope.showDoBackup = false;\r\n // $scope.showDPSStatus = true;\r\n\r\n let mountInput = new DoMountProcessInput();\r\n mountInput.sessionid = this.computeService.parseDRSessionId(session, datacenter);\r\n mountInput.isRemote = isRemote;\r\n mountInput.orgName = orgName;\r\n mountInput.image = image;\r\n mountInput.datacenterLocation = datacenter;\r\n mountInput.mountname = newName;\r\n\r\n this.gqlService.gql.dps.doMountProcess(mountInput).subscribe(result => {\r\n let tmp = result as DoMountProcessResponse;\r\n\r\n if (tmp.success && tmp.mountProcess[0].Process_Id !== undefined && tmp.mountProcess[0].Process_Id !== null) {\r\n let input = new ProcessJobStatusInput();\r\n input.processid = tmp.mountProcess[0].Process_Id.toString();\r\n input.userId = user.userId.toString();\r\n\r\n this.gqlService.gql.dps.getProcessJobStatus(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n }\r\n });\r\n }\r\n\r\n break;\r\n //case \"quick mount\":\r\n // if (!Compute.CheckAvailableDisk(imageSize, vdcStats)) {\r\n // //SweetAlert.swal(\"Error!\", \"Not enough storage resources available, please contact support@n3t.com for assistance.\", \"error\");\r\n // toastr[\"warning\"](\"Not enough storage resources available, please contact support@n3t.com for assistance.\");\r\n // break;\r\n // }\r\n\r\n // //SweetAlert.swal(\"Ok.\", \"Quick Mount Process started.\", \"info\");\r\n\r\n // $scope.showDoBackup = false;\r\n // $scope.showDPSStatus = true;\r\n\r\n // DPSDataFactory.doMountbackProcess(Compute.ParseDRSessionId($localStorage.BackupAuth, datacenter), image, vm.name + \" (\" + vm.id + \")\", datacenter, isRemote).then(function (response) {\r\n // $scope.getDPSJobStatus(Compute.ParseDRSessionId(session, datacenter), response.jobid, datacenter);\r\n // });\r\n\r\n // break;\r\n default:\r\n //SweetAlert.swal(\"Oops!\", \"Please select an option.\", \"warning\");\r\n break;\r\n }\r\n }\r\n\r\n //#region Jobs logic\r\n\r\n onJobsTimer(input: GetDPSJobStatusInput, pollingInterval: number = 0) {\r\n this.retrieveBackupJob(input, pollingInterval);\r\n }\r\n\r\n // jobFinisher() {\r\n // // Check to see if there is an active Job already in place, and if it is complete cancel it\r\n // let jobs$ = this.n3tStore.selectBackupJobs();\r\n\r\n // jobs$.pipe(map(jobs => {\r\n // jobs.forEach(job => {\r\n // // Job exists, is it done?\r\n // if (job.progress === 100) {\r\n // let timerName = \"job\" + job.jobname;\r\n // this.stopJobsTimer(timerName);\r\n // let id = new Array();\r\n // id.push(job.jobname);\r\n // this.n3tStore.deleteBackups(id);\r\n // //this.n3tStore.deleteBackupJobs(id);\r\n // }\r\n // });\r\n // })).subscribe();\r\n\r\n // // jobs$.subscribe(jobs => {\r\n // // jobs.forEach(job => {\r\n // // // Job exists, is it done?\r\n // // if (job.progress === 100) {\r\n // // let timerName = \"job\" + job.jobname;\r\n // // this.stopJobsTimer(timerName);\r\n // // let id = new Array();\r\n // // id.push(job.jobname);\r\n // // this.n3tStore.deleteBackups(id);\r\n // // //this.n3tStore.deleteBackupJobs(id);\r\n // // }\r\n // // });\r\n // // });\r\n // }\r\n\r\n retrieveBackupJob(getDPSJobStatusInput: GetDPSJobStatusInput, pollingInterval: number = 0) {\r\n this.n3tStore.dispatchGetBackupJobStatus(getDPSJobStatusInput, pollingInterval);\r\n }\r\n\r\n setBackupJob(job: TypeJob) {\r\n \r\n\r\n this.n3tStore.upsertBackupJob(job);\r\n }\r\n\r\n removeBackupJob(id: string) {\r\n let ids = new Array();\r\n ids.push(id);\r\n this.n3tStore.deleteBackupJobs(ids);\r\n }\r\n\r\n stopJobsTimer(timerName: string) {\r\n this.jobsTimer.delTimer(timerName);\r\n }\r\n\r\n onProcessJobsTimer() {\r\n\r\n }\r\n\r\n checkDPSExistsForHost(hostName: string): Observable {\r\n return this.n3tStore.selectDPS().pipe(map(result => {\r\n //result.forEach(host => return host.Content)\r\n let hostApps = _.pluck(result, 'hostApp');\r\n let matches = _.filter(hostApps, function(app){ return app.appname.includes(hostName)});\r\n if (matches !== undefined && matches.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }));\r\n }\r\n\r\n // getProcessJobStatus(processid) {\r\n // // If a timer is already defined we don't want a new one\r\n // if (this.jobsTimer.getTimer().includes(\"processJobs\")) return;\r\n\r\n // this.jobsTimer.createNewTimer(\"processJobs\", 15, ()=>this.onProcessJobsTimer(processid, 10000));\r\n\r\n // if (angular.isDefined(stopProcessJob)) return;\r\n\r\n\r\n // $scope.showBackupsProgress = true;\r\n\r\n // stopProcessJob = $interval(function () {\r\n // DPSDataFactory.getProcessJobStatus(processid).then(function (data) {\r\n // // Make sure we have some job(s) that came back, and if so then we will figure out an overall % complete\r\n // // Note: The % complete within an individual job is weighted relative to 100%, but between jobs there is \r\n // // no relative weighting at this time. But seeing something move is better than nothing.\r\n // if (data.Result.length > 0) {\r\n // var totalComplete = 0;\r\n // $.each(data.Result, function (j, job) {\r\n // totalComplete += job.JobStatus_Percentage;\r\n // });\r\n\r\n // var totalPercent = totalComplete / (data.Result.length);\r\n\r\n // $scope.dpsStatus = totalPercent;\r\n\r\n // $scope.updateJob(processid, totalPercent);\r\n\r\n // if (totalPercent === 100) {\r\n // $scope.stopProcessJob();\r\n\r\n // //SweetAlert.swal(\"Success!\", \"Job completed successfully.\", \"success\");\r\n // }\r\n // }\r\n // else {\r\n // //SweetAlert.swal(\"Error!\", \"No Jobs created for requested operation\", \"error\");\r\n // }\r\n // });\r\n\r\n // }, 5000);\r\n // };\r\n\r\n // updateJob = function (jobname, jobpercent) {\r\n // // If this doesn't have a jobname then break out\r\n // if (jobname === undefined) {\r\n // return;\r\n // }\r\n // // Test to see if this jobname is in the collection, if not then add it\r\n // var job = _.findWhere($scope.backupJobs, { name: jobname });\r\n // if (job === undefined) {\r\n // $scope.backupJobs.push({ name: jobname, jobpercent: jobpercent });\r\n // } else {\r\n // _.map($scope.backupJobs, function (obj) {\r\n // if (obj.name === jobname) {\r\n // obj.jobpercent = jobpercent;\r\n // }\r\n // });\r\n // }\r\n // };\r\n\r\n //#endregion\r\n\r\n //#region DPS Helpers\r\n\r\n\r\n cleanupTestFailover(backup: TypeBackup) {\r\n // Host name: backup.backuphost ==> TypeHost.hostApp.appname\r\n // Backup id: backup.id == TypeHost.hostBackups[].id\r\n\r\n this.n3tStore.selectDPS().subscribe(hosts => {\r\n let hostTmp = hosts.find(host => host.id === backup.hostid); //host.hostApp.appname === backup.backuphost);\r\n\r\n if (hostTmp !== undefined) {\r\n let b = hostTmp.hostBackups.result.find(bu => bu.id === backup.id);\r\n\r\n if (b !== undefined) {\r\n // found the Backup for the Host, remove it and then we will upsert the Host back into the store\r\n let tmpBackups = hostTmp.hostBackups.result.filter(bu => bu.id !== backup.id);\r\n hostTmp.hostBackups = new TypeBackups;\r\n hostTmp.hostBackups.result = new Array();\r\n\r\n tmpBackups.forEach(backup => {\r\n hostTmp.hostBackups.result.push(backup);\r\n });\r\n \r\n this.n3tStore.upsertDPSSingle(hostTmp);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n //#endregion\r\n\r\n //#region Helper methods\r\n\r\n parseSize(sizeIn: number) {\r\n return this.commonService.convertDiskSizeBytesToGB(sizeIn).toFixed(2);\r\n }\r\n\r\n getFriendlyDate(dateIn: string): Date {\r\n return this.commonService.toDate(dateIn);\r\n }\r\n\r\n //#endregion\r\n}\r\n","import { gql } from '../gql/graphql';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class GqlService {\r\n public gql: gql;\r\n constructor(graphql: gql) {\r\n this.gql = graphql;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { environment } from '@environments/environment';\r\nimport { User } from '@app/core/_models';\r\n\r\nimport { LoginFactory } from '@app/core/gql/login.factory';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AccountService {\r\n private userSubject: BehaviorSubject;\r\n public user: Observable;\r\n\r\n constructor(\r\n private router: Router,\r\n private http: HttpClient\r\n ) {\r\n this.userSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('user')));\r\n this.user = this.userSubject.asObservable();\r\n }\r\n\r\n public get userValue(): User {\r\n return this.userSubject.value;\r\n }\r\n\r\n // login(username, password) {\r\n // return this.http.post(`${environment.apiUrl}/users/authenticate`, { username, password })\r\n // .pipe(map(user => {\r\n // // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n // localStorage.setItem('user', JSON.stringify(user));\r\n // this.userSubject.next(user);\r\n // return user;\r\n // }));\r\n // }\r\n\r\n login(UserName: string, Password: string) {\r\n\r\n\r\n\r\n // return this.http.post(`${environment.apiUrl}/auth`, { UserName, Password })\r\n // .pipe(map(user => {\r\n // // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n // localStorage.setItem('user', JSON.stringify(user));\r\n // this.userSubject.next(user);\r\n // return user;\r\n // }));\r\n }\r\n\r\n logout() {\r\n // remove user from local storage and set current user to null\r\n localStorage.removeItem('user');\r\n this.userSubject.next(null);\r\n this.router.navigate(['/account/login']);\r\n }\r\n\r\n register(user: User) {\r\n return this.http.post(`${environment.apiUrl}/users/register`, user);\r\n }\r\n\r\n getAll() {\r\n return this.http.get(`${environment.apiUrl}/users`);\r\n }\r\n\r\n getById(id: string) {\r\n return this.http.get(`${environment.apiUrl}/users/${id}`);\r\n }\r\n\r\n update(id, params) {\r\n return this.http.put(`${environment.apiUrl}/users/${id}`, params)\r\n .pipe(map(x => {\r\n // update stored user if the logged in user updated their own record\r\n if (id === this.userValue.id) {\r\n // update local storage\r\n const user = { ...this.userValue, ...params };\r\n localStorage.setItem('user', JSON.stringify(user));\r\n\r\n // publish updated user to subscribers\r\n this.userSubject.next(user);\r\n }\r\n return x;\r\n }));\r\n }\r\n\r\n delete(id: string) {\r\n return this.http.delete(`${environment.apiUrl}/users/${id}`)\r\n .pipe(map(x => {\r\n // auto logout if the logged in user deleted their own record\r\n if (id === this.userValue.id.toString()) {\r\n this.logout();\r\n }\r\n return x;\r\n }));\r\n }\r\n}\r\n","import { DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport * as zxcvbn from 'zxcvbn';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PasswordService {\r\n\r\n getPolicy() {\r\n var policy = {\r\n minLength: 12,\r\n validationErrors: [],\r\n validatorCallbacks: validatorCallbacks(),\r\n isValid: isValid\r\n }\r\n return policy;\r\n\r\n /* implementation */\r\n\t\tfunction isValid(password) {\r\n\t\t\tvar context = this;\r\n\r\n context.validationErrors = [];\r\n\r\n\t\t\t//angular.forEach(context.validatorCallbacks, validator);\r\n \r\n context.validatorCallbacks.forEach(validator);\r\n\r\n\t\t\tfunction validator(fn, key) {\r\n\t\t\t\tfn(password, context); // <-- run validator\r\n\t\t\t}\r\n\r\n\t\t\treturn context.validationErrors.length == 0;\r\n\t\t}\r\n\r\n\t\tfunction validatorCallbacks() {\r\n\t\t\treturn [ascii(), whitespace(), complexity()]\r\n\t\t}\r\n\r\n\t\t/* ascii validator */\r\n\t\tfunction ascii() {\r\n\t\t\tvar regex = /^[ -~]+$/;\r\n\t\t\tvar error = 'ascii characters are not permitted';\r\n\r\n\t\t\tfunction isValid(password) {\r\n\t\t\t\treturn regex.test(password);\r\n\t\t\t}\r\n\r\n\t\t\t// return higher order function\r\n\t\t\treturn validatorfn('ascii', isValid, error);\r\n\t\t}\r\n\r\n\t\t/* whitespace validator */\r\n\t\tfunction whitespace() {\r\n\t\t\tvar regex = /\\s/;\r\n\t\t\tvar error = 'white space characters are not permitted';\r\n\r\n\t\t\tfunction isValid(password) {\r\n\t\t\t\treturn !regex.test(password);\r\n\t\t\t}\r\n\r\n\t\t\t// return higher order function\r\n\t\t\treturn validatorfn('whitespace', isValid, error);\r\n\t\t}\r\n\r\n\t\t/* complexity validator */\r\n\t\tfunction complexity() {\r\n\t\t\tvar error = 'password complexity is too low';\r\n\r\n\t\t\tfunction isValid(password) {\r\n\t\t\t\tvar score = zxcvbn(password).score;\r\n\r\n\t\t\t\tif (score < 3) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\telse if (score >= 3) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// return higher order function\r\n\t\t\treturn validatorfn('complexity', isValid, error);\r\n\t\t}\r\n\r\n\t\t/* validator callback */\r\n\t\tfunction validatorfn(name, isValidFn, error) {\r\n\t\t\treturn function (password, context) {\r\n\t\t\t\tvar validator = name;\r\n\t\t\t\tvar passed = true;\r\n\r\n\t\t\t\tif (!isValidFn(password)) {\r\n\t\t\t\t\tcontext.validationErrors.push(error);\r\n\t\t\t\t\tpassed = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn passed;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n}","export enum RunMode {\r\n OnDemand = 5,\r\n Select = 6,\r\n }\r\n","import { RunMode } from './../enums/runMode';\r\nimport { DatacenterLocations } from '../enums/datacenterLocations';\r\nimport { TypeNetwork } from './index';\r\nimport { TypeVM } from './index';\r\n\r\nexport class TypeComputeTemplate {\r\n id: string;\r\n datacenter: DatacenterLocations;\r\n orgTemplateCreatorHref: string;\r\n orgTemplateCreator: string;\r\n orgName: string;\r\n vdcName: string;\r\n vdcNetworks: TypeNetwork[];\r\n catalogName: string;\r\n vAppTemplateName: string;\r\n newvAppName: string;\r\n newvAppDescription: string;\r\n vms: TypeVM[]\r\n errorCode: number;\r\n errorStatus: string;\r\n runMode: RunMode;\r\n}","import { SimpleMetricType } from './simpleMetricType';\r\nimport { TypeDisk } from './typeDisk';\r\nimport { TypeNic } from './typeNic';\r\n\r\nexport class TypeVM {\r\n\tcontent: string;\r\n\terrorMessage: string;\r\n\terrorCode: number;\r\n\terrorStatus: boolean;\r\n\tisVAppTemplateSpecified: boolean;\r\n\tmemoryMB: number;\r\n\tmemoryMBSpecified: boolean;\r\n\tnumberOfCpus: number;\r\n\tnumberOfCpusSpecified: boolean;\r\n\tstorageProfileName: string;\r\n\tvdc: string;\r\n\thasDR: boolean;\r\n\tisDRActive: boolean;\r\n\tcpuHotAddEnabledSpecified: boolean;\r\n\tisVAppTemplate: boolean;\r\n\tcpuHotAddEnabled: boolean;\r\n\tmemoryHotAddEnabled: boolean;\r\n\tvmToolsVersion: number;\r\n\tvmToolsVersionSpecified: boolean;\r\n\tvc: string;\r\n\tmoref: string;\r\n\thostName: string;\r\n\tvmHostType: string;\r\n\tnetworkInfoRaw: string;\r\n\tvmInstanceType: string;\r\n\tmetric: SimpleMetricType[];\r\n\tmemoryHotAddEnabledSpecified: boolean;\r\n\tdisks: TypeDisk[];\r\n\tisPublishedSpecified: boolean;\r\n\tisInMaintenanceModeSpecified: boolean;\r\n\tname: string;\r\n\tnameLong: string;\r\n\tstatus: string;\r\n\tcpu: number;\r\n\tmemory: number;\r\n\tdiskSize: number[];\r\n\thref: string;\r\n\tid: string;\r\n\tdiskCount: number;\r\n\tcatalogName: string;\r\n\tisPublished: boolean;\r\n\tcontainer: string;\r\n\tguestOs: string;\r\n\thardwareVersion: number;\r\n\thardwareVersionSpecified: boolean;\r\n\tisBusy: boolean;\r\n\tisBusySpecified: boolean;\r\n\tisDeleted: boolean;\r\n\tisDeletedSpecified: boolean;\r\n\tisDeployed: boolean;\r\n\tisDeployedSpecified: boolean;\r\n\tisInMaintenanceMode: boolean;\r\n\tcontainerName: string;\r\n\tnics: TypeNic[]\r\n}","export class TypeDisk {\r\n content: string;\r\n\terrorMessage: string;\r\n\terrorCode: number;\r\n\terrorStatus: string;\r\n autoDelete: string;\r\n boot: string;\r\n deviceName: string;\r\n index: number;\r\n interface__: string;\r\n kind: string;\r\n licenses: string[];\r\n mode: string;\r\n source: string;\r\n type: string;\r\n size: number;\r\n}\r\n","import { Network, StorageProfile } from './../types/compute.types';\nimport { N3TStore } from './n3tStore.service';\nimport { DatacenterLocations, RunMode } from '@app/core/gql/graphql/shared/schema/enums';\nimport { Injectable } from '@angular/core';\n\nimport { QuestionBase, DropdownQuestion, TextboxQuestion, CheckboxQuestion, HRQuestion } from '@app/core/_models';\nimport { Observable, of } from 'rxjs';\nimport { NetworkData } from '../gql/graphql/network/schema/type';\nimport { TypeComputeTemplate, TypeDisk, TypeVM } from '@app/core/gql/graphql/shared/schema/type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QuestionService {\n\n constructor(\n private n3tStore: N3TStore\n ) { }\n\n // TODO: get from a remote source of question metadata\n getQuestions() {\n\n const questions: QuestionBase[] = [\n\n new DropdownQuestion({\n key: 'brave',\n label: 'Bravery Rating',\n options: [\n {key: 'solid', value: 'Solid'},\n {key: 'great', value: 'Great'},\n {key: 'good', value: 'Good'},\n {key: 'unproven', value: 'Unproven'}\n ],\n order: 3\n }),\n\n new TextboxQuestion({\n key: 'firstName',\n label: 'First name',\n value: 'Bombasto',\n required: true,\n order: 1\n }),\n\n new TextboxQuestion({\n key: 'emailAddress',\n label: 'Email',\n type: 'email',\n order: 2\n })\n ];\n\n return of(questions.sort((a, b) => a.order - b.order));\n }\n\n getTemplatequestions() {\n const questions: QuestionBase[] = [\n new TextboxQuestion({\n key: 'newVAppName',\n label: 'New vApp Name',\n value: '',\n required: true,\n order: 1\n }),\n new DropdownQuestion({\n key: 'runmode',\n label: 'Run Mode',\n options: [\n {key: 'ondemand', value: 'On Demand'},\n {key: 'select', value: 'Select'}\n ],\n order: 2\n }),\n new DropdownQuestion({\n key: 'network',\n label: 'Network to Attach',\n options: [\n {key: 'network1', value: 'Network 1'},\n {key: 'network2', value: 'Network 2'}\n ],\n order: 3\n }),\n ];\n\n return of(questions.sort((a, b) => a.order - b.order));\n }\n\n getQuestionsFromTemplate(templates: TypeComputeTemplate[]): Observable[]> {\n let questions: QuestionBase[] = new Array>(); \n let order = 0;\n let templateCount = 1;\n\n templates.forEach(template => {\n questions.push(new TextboxQuestion({\n key: 'newVAppLoc' + templateCount.toString(),\n label: 'New vApp Datacenter',\n value: DatacenterLocations[template.datacenter],\n required: true,\n order: order += 1\n }));\n \n questions.push(new TextboxQuestion({\n key: 'newVAppName' + templateCount.toString(),\n label: 'New vApp Name',\n value: template.vAppTemplateName,\n required: true,\n order: order += 1\n }));\n \n questions.push(new DropdownQuestion({\n key: 'runmode' + templateCount.toString(),\n label: 'Run Mode',\n required: true,\n options: [\n {key: 'ondemand', value: 'On Demand'},\n {key: 'select', value: 'Select'}\n ],\n order: order += 1\n }));\n \n let networks = this.getNetworksForTemplateLocation(template.datacenter);\n\n questions.push(new DropdownQuestion({\n key: 'network' + templateCount.toString(),\n label: 'Network to Attach',\n required: true,\n options: this.getNetworksForTemplateLocation(template.datacenter), \n order: order += 1\n }));\n \n questions.push(new HRQuestion({\n key: 'hr',\n order: order += 1\n })); \n \n // Handle each VM in Template\n let vmCount = 1;\n\n template.vms.forEach(vm => {\n \n questions.push(new TextboxQuestion({\n key: 'newVMName' + templateCount.toString() + vmCount.toString(),\n label: 'New VM Name',\n value: vm.name,\n required: true,\n order: order += 1\n }));\n \n questions.push(new TextboxQuestion({\n key: 'newVMMemory' + templateCount.toString() + vmCount.toString(),\n label: 'Memory (GB)',\n value: (vm.memoryMB / 1024).toString(),\n required: true,\n order: order += 1\n }));\n \n questions.push(new TextboxQuestion({\n key: 'newVMvCPU' + templateCount.toString() + vmCount.toString(),\n label: 'vCPU',\n value: vm.numberOfCpus.toString(),\n required: true,\n order: order += 1\n }));\n\n questions.push(new TextboxQuestion({\n key: 'newVMOS' + templateCount.toString() + vmCount.toString(),\n label: 'Operating System',\n value: vm.guestOs,\n required: true,\n order: order += 1\n }));\n \n // Handle Disk collection\n let diskCount = 1;\n\n vm.disks.forEach(disk => {\n questions.push(new TextboxQuestion({\n key: 'diskSize' + templateCount.toString() + vmCount.toString() + diskCount.toString(),\n label: 'Size (GB)',\n value: Math.round((disk.size / 1073741274)).toString(),\n required: true,\n order: order += 1\n }));\n questions.push(new TextboxQuestion({\n key: 'diskIndex' + templateCount.toString() + vmCount.toString() + diskCount.toString(),\n label: 'Index',\n value: disk.index.toString(),\n required: true,\n order: order += 1\n }));\n questions.push(new DropdownQuestion({\n key: 'diskProfile' + templateCount.toString() + vmCount.toString() + diskCount.toString(),\n label: 'Storage Class',\n value: disk.type,\n required: true,\n options: [\n {key: 'Silver', value: 'Silver'},\n {key: 'Gold', value: 'Gold'}\n ],\n order: order += 1\n }));\n questions.push(new CheckboxQuestion({\n key: 'diskIsBoot' + templateCount.toString() + vmCount.toString() + diskCount.toString(),\n value: disk.boot,\n label: 'Is Boot Disk',\n required: true,\n order: order += 1,\n type: 'checkbox'\n }));\n\n diskCount += 1;\n });\n \n questions.push(new HRQuestion({\n key: 'hr',\n order: order += 1\n })); \n\n vmCount += 1;\n });\n \n templateCount += 1;\n });\n\n return of(questions.sort((a, b) => a.order - b.order));\n }\n\n getNetworksForTemplateLocation(location: DatacenterLocations): Array<{key: string, value: string}> {\n let networkMap = new Map();\n \n this.n3tStore.selectNetworkData().subscribe(networks => {\n let nwFiltered = networks.filter(function(nw) {\n return nw.datacenterLocation == location;\n })\n \n nwFiltered.forEach(network =>{\n networkMap.set(network.id, network.name);\n });\n });\n\n let arrayOut = new Array<{key: string, value: string}>();\n\n for (let [key, value] of networkMap) {\n arrayOut.push({key: key, value: value});\n } \n\n return arrayOut;\n }\n\n setTemplatesFromAnswers(answers: any): TypeComputeTemplate[] {\n let objStr = JSON.stringify(answers);\n let obj = JSON.parse(objStr);\n\n let vAppCounter: number = 1;\n let hasVApp: boolean = true;\n\n let template: TypeComputeTemplate = new TypeComputeTemplate();\n let templates: Array = new Array();\n\n while (hasVApp === true) {\n let count: string = vAppCounter.toString();\n\n if (obj.hasOwnProperty(\"newVAppName\" + count)) {\n template.datacenter = obj[\"newVAppLoc\" + count];\n template.newvAppName = obj[\"newVAppName\" + count];\n if (obj[\"runmode\" + count] === \"ondemand\") {\n template.runMode = RunMode.OnDemand;\n } else if (obj[\"runmode\" + count] === \"select\") {\n template.runMode = RunMode.Select;\n }\n \n template.runMode = obj[\"runmode\" + count];\n //template.vdcNetworks = \n\n let hasVM: boolean = true;\n let vmCounter: number = 1;\n let vms: Array = new Array();\n\n while (hasVM === true) {\n let vmCount: string = vmCounter.toString();\n let vm: TypeVM = new TypeVM();\n \n if (obj.hasOwnProperty(\"newVMName\" + count + vmCount)) {\n vm.guestOs = obj[\"newVMOS\" + count + vmCount];\n vm.name = obj[\"newVMName\" + count + vmCount];\n vm.memoryMB = obj[\"newVMMemory\" + count + vmCount];\n vm.cpu = obj[\"newVMvCPU\" + count + vmCount];\n\n let hasDisk: boolean = true;\n let diskCounter: number = 1;\n let disks: Array = new Array();\n\n while (hasDisk === true) {\n let diskCount: string = diskCounter.toString();\n let disk: TypeDisk = new TypeDisk();\n\n if (obj.hasOwnProperty(\"diskSize\" + count + vmCount + diskCount)) {\n disk.size = obj[\"diskSize\" + count + vmCount + diskCount];\n disk.index = obj[\"diskIndex\" + count + vmCount + diskCount];\n disk.mode = obj[\"diskProfile\" + count + vmCount + diskCount];\n disk.boot = obj[\"diskIsBoot\" + count + vmCount + diskCount];\n\n disks.push(disk);\n } else {\n hasDisk = false;\n }\n\n \n diskCounter += 1;\n }\n vm.disks = disks;\n vms.push(vm);\n } else {\n hasVM = false;\n }\n\n vmCounter += 1;\n }\n\n template.vms = vms;\n\n } else {\n templates.push(template);\n hasVApp = false;\n }\n \n vAppCounter += 1;\n }\n\n return templates;\n }\n\n}","import { Injectable } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { QuestionBase } from '@app/core/_models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QuestionControlService {\n constructor() { }\n\n toFormGroup(questions: QuestionBase[] ) {\n const group: any = {};\n\n questions.forEach(question => {\n group[question.key] = question.required ? new FormControl(question.value || '', Validators.required)\n : new FormControl(question.value || '');\n });\n return new FormGroup(group);\n }\n}\n\n","import { SendNotifierMessageInput } from '@app/core/gql/graphql/notifier/schema/input';\r\nimport { N3tNotification, NotificationType } from './../_models';\r\nimport { CommonService } from './common.service';\r\nimport { GqlService } from './gql.service';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { N3TStore } from './n3tStore.service';\r\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport * as _ from 'underscore';\r\nimport { NotifierMessageResponse } from '../gql/graphql/notifier/schema/type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageService implements OnDestroy {\r\n private sub = new SubSink();\r\n\r\n private messages = new ReplaySubject();\r\n messages$ = this.messages.asObservable();\r\n\r\n constructor(\r\n private n3tstore: N3TStore,\r\n private gqlService: GqlService,\r\n private commonService: CommonService,\r\n ) { \r\n\r\n // this.sub.sink = this.n3tstore.selectProducts().subscribe(products => {\r\n \r\n // });\r\n this.fakeMessages();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n public acknowledgeMessage() {\r\n\r\n }\r\n\r\n messageMe(notification: N3tNotification) {\r\n let msgs = new Array();\r\n msgs.push(notification);\r\n this.messages.next(msgs);\r\n }\r\n\r\n fakeMessages() {\r\n let msgs = new Array();\r\n\r\n for (var i = 0; i < Math.floor(Math.random() * 10); i++) {\r\n const notification: N3tNotification = {\r\n title: 'This is title for message: ' + i.toString(),\r\n type: NotificationType.success,\r\n message: 'This is a message for you. There are ' + i.toString() + ' things to see.',\r\n acknowledged: false,\r\n timestamp: new Date().toDateString()\r\n };\r\n\r\n msgs.push(notification);\r\n }\r\n\r\n this.messages.next(msgs);\r\n }\r\n\r\n //#region Email message service calls\r\n\r\n public sendNotifierMessage(input: SendNotifierMessageInput) {\r\n this.sub.sink = this.gqlService.gql.notifier.sendNotifierMessage(input).subscribe(); \r\n // result => {\r\n // let foo = result.data[\"sendNotifierMessage\"];\r\n // let didItWork = foo.success;\r\n // });\r\n }\r\n \r\n \r\n //#endregion\r\n\r\n}","/* .net generic list equivalent in typescript */\r\nexport class List {\r\n private items : Array;\r\n\r\n constructor(n? : number, defaultValue? : T){\r\n if ( n === undefined) {\r\n this.items = [];\r\n } else {\r\n if ( n && defaultValue){\r\n this.items = Array(n).fill(defaultValue);\r\n } else {\r\n this.items = Array(n);\r\n }\r\n }\r\n }\r\n\r\n push(item : T){\r\n this.items.push(item);\r\n }\r\n\r\n pop(){\r\n return this.items.pop();\r\n }\r\n\r\n get(index : number) : T | undefined {\r\n return this.items[index];\r\n }\r\n\r\n set( index : number, item : T){\r\n this.items[index] = item;\r\n }\r\n\r\n getItems() : Array {\r\n return this.items;\r\n }\r\n\r\n}\r\n","// <-- centralize all references to stat names so they are only changed here\r\nexport class metricsStats {\r\n /*** auth stats ***/\r\n public authLogout: string = \"N3TLoginPortal.Auth.Logout\";\r\n public authSessionTimeout: string = \"N3TLoginPortal.Auth.Session.Timeout\"\r\n public authSessionLength: string = \"N3TLoginPortal.Auth.Session.Length.Seconds\"\r\n\r\n /** session stats ***/\r\n public browser: string = \"N3TLoginPortal.Browser\";\r\n public ipAddress: string = \"N3TLoginPortal.IpAddress\";\r\n public state: string = \"N3TLoginPortal.State\";\r\n public latitude: string = \"N3TLoginPortal.Latitude\";\r\n public longitude: string = \"N3TLoginPortal.Longitude\";\r\n public country: string = \"N3TLoginPortal.Country\";\r\n public city: string = \"N3TLoginPortal.City\";\r\n public isp: string = \"N3TLoginPortal.ISP\";\r\n public datacenter: string = \"N3TLoginPortal.Datacenter\";\r\n\r\n /*** page load stats ***/\r\n public pageLoadVmSeconds: string = \"N3TLoginPortal.PageLoad.VM.Seconds\";\r\n public pageLoadDpsSeconds: string = \"N3TLoginPortal.PageLoad.DPS.Seconds\";\r\n public pageLoadMonitorAudiSeconds: string = \"N3TLoginPortal.Pageload.Monitor.Audit.Seconds\";\r\n\r\n /*** brs page load stats ***/\r\n public pageLoadBrsAtlSeconds: string = \"N3TLoginPortal.PageLoad.BRS.ATL.Seconds\";\r\n public pageLoadBrsDevSeconds: string = \"N3TLoginPortal.PageLoad.BRS.DEV.Seconds\";\r\n public pageLoadBrsLasSeconds: string = \"N3TLoginPortal.PageLoad.BRS.LAS.Seconds\";\r\n public pageLoadBrsSpaSeconds: string = \"N3TLoginPortal.PageLoad.BRS.SPA.Seconds\";\r\n public pageLoadBrsUatSeconds: string = \"N3TLoginPortal.PageLoad.BRS.UAT.Seconds\";\r\n\r\n /*** date load stats (background prefetch) ***/\r\n public dataLoadCompany: string = \"N3TLoginPortal.DataLoad.Company.Seconds\";\r\n public dataLoadCompute: string = \"N3TLoginPortal.DataLoad.Compute.Seconds\";\r\n public dataLoadTemplates: string = \"N3TLoginPortal.DataLoad.Templates.Seconds\";\r\n public dataLoadProviderTokens: string = \"N3TLoginPortal.DataLoad.ProviderTokens.Seconds\";\r\n}","import { Guid } from 'guid-typescript';\r\n\r\nexport class addDatapointAndTimestampInput {\r\n correlationId: string\r\n statNamespace: string\r\n datapoint: string\r\n datapointTimestamp: Date\r\n}","import { Guid } from 'guid-typescript';\r\n\r\nexport class addCorrelationByIdInput {\r\n userId: string;\r\n correlationId: string;\r\n}","import { Subject } from 'rxjs';\r\nimport { Guid } from \"guid-typescript\";\r\nimport { List } from \"../_models/list\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { GqlService } from \"./gql.service\";\r\nimport { N3TLogger } from \"../_helpers/n3tlogger\";\r\nimport { datapoint } from \"../_models/datapoint\";\r\nimport { n3TAsyncResult } from \"../_models/n3tResult\";\r\nimport { metricsStats } from \"../_models/metrics-stats\";\r\nimport { AuthenticationService } from \"./authentication.service\";\r\nimport * as input from '@app/core/gql/graphql/metrics/schema/input';\r\nimport { addDatapointResp } from \"../gql/graphql/metrics/schema/type\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n })\r\n\r\n export class MetricsService {\r\n public userId?: Guid\r\n public correlationId: Guid\r\n public sessionStartTime: Date\r\n public correlationPersisted: boolean\r\n \r\n constructor(\r\n private logger: N3TLogger,\r\n private gqlService: GqlService,\r\n private authService: AuthenticationService,\r\n ) {\r\n this.correlationId = Guid.create();\r\n this.sessionStartTime = new Date(Date.now());\r\n this.stats = new metricsStats();\r\n this.errors = new List>();\r\n this.errorsSubject$ = new Subject>();\r\n this.authService.user.subscribe(x => {\r\n this.userId = x.userId; // <-- subscribe to the auth service to get the userid of the logged on user\r\n this.persistCorrelation();\r\n });\r\n }\r\n\r\n public stats: metricsStats;\r\n public errors: List>;\r\n private errorsSubject$ = new Subject>();\r\n\r\n /***** authorization stats *****/\r\n public getAuthLogout(): datapoint {\r\n return this.getDataPoint(this.stats.authLogout);\r\n }\r\n\r\n public getAuthSessionTimeout(): datapoint {\r\n return this.getDataPoint(this.stats.authSessionTimeout);\r\n }\r\n\r\n public getAuthSessionLength(): datapoint {\r\n let dp = this.getDataPoint(this.stats.authSessionLength);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n /*******************************/\r\n\r\n /***** date load stats *****/ \r\n public getDataLoadTimeCompany(): datapoint {\r\n let dp = this.getDataPoint(this.stats.dataLoadCompany);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeCompute(): datapoint {\r\n let dp = this.getDataPoint(this.stats.dataLoadCompute);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeProviderTokens(): datapoint {\r\n let dp = this.getDataPoint(this.stats.dataLoadProviderTokens);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeTemplates(): datapoint {\r\n let dp = this.getDataPoint(this.stats.dataLoadTemplates);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n /***** page load stats *****/ \r\n public getPageLoadTimeVm(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadVmSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getPageLoadTimeMonitorAudit(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadMonitorAudiSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeDps(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadDpsSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeBrsAtl(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadBrsAtlSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeBrsDev(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadBrsDevSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeBrsLas(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadBrsLasSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeBrsSpa(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadBrsSpaSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n public getDataLoadTimeBrsUat(): datapoint {\r\n let dp = this.getDataPoint(this.stats.pageLoadBrsUatSeconds);\r\n dp.isTimeDuration = true;\r\n return dp;\r\n }\r\n\r\n /*** session stats ***/\r\n public getBrowser(): datapoint {\r\n let dp = this.getDataPoint(this.stats.browser);\r\n return dp;\r\n }\r\n\r\n public getIpAddress(): datapoint {\r\n let dp = this.getDataPoint(this.stats.ipAddress);\r\n return dp;\r\n }\r\n\r\n public getState(): datapoint {\r\n let dp = this.getDataPoint(this.stats.state);\r\n return dp;\r\n }\r\n\r\n public getLatitude(): datapoint {\r\n let dp = this.getDataPoint(this.stats.latitude);\r\n return dp;\r\n }\r\n\r\n public getLongitude(): datapoint {\r\n let dp = this.getDataPoint(this.stats.longitude);\r\n return dp;\r\n }\r\n\r\n public getCountry(): datapoint {\r\n let dp = this.getDataPoint(this.stats.country);\r\n return dp;\r\n }\r\n\r\n public getCity(): datapoint {\r\n let dp = this.getDataPoint(this.stats.city);\r\n return dp;\r\n }\r\n\r\n public getIsp(): datapoint {\r\n let dp = this.getDataPoint(this.stats.isp);\r\n return dp;\r\n }\r\n\r\n public getDatacenter(): datapoint {\r\n let dp = this.getDataPoint(this.stats.datacenter);\r\n return dp;\r\n }\r\n /***************************/\r\n\r\n /***** datapoint logic *****/\r\n private getDataPoint(statNamespace: string) : datapoint {\r\n return new datapoint(this.correlationId, this.userId, statNamespace);\r\n }\r\n\r\n public add(datapointModel : datapoint) {\r\n if (datapointModel == null)\r\n return;\r\n \r\n var datapoint = this.mapDatapoint(datapointModel);\r\n this.gqlService.gql.metrics.addDatapointAndTimestamp(datapoint).subscribe(result => {\r\n this.processResponse(datapointModel, result.data[\"addDatapointAndTimestamp\"]);\r\n }) \r\n }\r\n\r\n private processResponse(datapointModel : datapoint, gqlResp : addDatapointResp) {\r\n if (gqlResp.success)\r\n return;\r\n\r\n let error = this.getErrorResult(gqlResp, datapointModel);\r\n this.logger.error('metrics.service, error: ' + error.errorMessage);\r\n this.errors.push(error);\r\n this.errorsSubject$.next(error);\r\n }\r\n\r\n private mapDatapoint(model: datapoint) : input.addDatapointAndTimestampInput {\r\n var datapoint : input.addDatapointAndTimestampInput;\r\n datapoint = new input.addDatapointAndTimestampInput();\r\n datapoint.datapoint = model.get();\r\n datapoint.correlationId = model.correlationId.toString();\r\n datapoint.statNamespace = model.statNamespace;\r\n datapoint.datapointTimestamp = model.datapointTimestamp;\r\n return datapoint;\r\n }\r\n /***************************/\r\n\r\n /***** correlation logic (correlates a userid to a unique id for all related process in the api layer) *****/\r\n private persistCorrelation() {\r\n this.gqlService.gql.metrics.addCorrelationById(this.getCorrelationByIdInput()).subscribe();\r\n }\r\n\r\n private getCorrelationByIdInput() : input.addCorrelationByIdInput {\r\n var correlation = new input.addCorrelationByIdInput();\r\n correlation.userId = this.userId.toString();\r\n correlation.correlationId = this.correlationId.toString();\r\n return correlation;\r\n }\r\n /****************************/\r\n\r\n /***** errors include the id and stat namespace of the datapoint that failed to persist *****/\r\n private getErrorResult (response : addDatapointResp, datapointModel : datapoint) : n3TAsyncResult {\r\n var errorResult = new n3TAsyncResult();\r\n datapointModel.isPersistedToDb = false;\r\n errorResult.result = datapointModel;\r\n errorResult.hasError = true;\r\n errorResult.errorMessage = response.message;\r\n return errorResult;\r\n }\r\n }","export class AddUserGroupInput {\r\n SessionId: string;\r\n UserId: string;\r\n GroupId: string;\r\n}","export class UserActionsInput {\r\n SessionId: string;\r\n UserId: string;\r\n Lifespan: number;\r\n Client_Id: string;\r\n Redirect_Uri: string;\r\n RequiredActions: string[];\r\n}","/*****************************************\r\n The AddUserInput is the object utilized to create a new Keycloak user.\r\n - SessionId: Keycloack session Id\r\n - Groups: This is a comma-delimeted string of groups the user will be added to.\r\n - ex: \"/provisiontest/Portal/User,/provisiontest/Portal/Admin,/provisiontest/VCD/ATL/OrganizationAdministrator\"\r\n - UserId: This is the UserId from Logins database\r\n - RequiredActions: string array of actions new user will be required to perform.\r\n - ex: [\r\n \"VERIFY_EMAIL\",\r\n \"CONFIGURE_TOTP\",\r\n \"UPDATE_PASSWORD\"\r\n ]\r\n - CompanyId: This is the CompanyId the User is associated with in Logins database.\r\n*****************************************/\r\nexport class AddUserInput {\r\n SessionId: string;\r\n Groups: string;\r\n Username: string;\r\n Email: string;\r\n LastName: string;\r\n FirstName: string;\r\n UserId: string;\r\n RequiredActions: string[];\r\n Enabled: boolean;\r\n CompanyId: string;\r\n}","export class GetKeycloakSessionInput {\r\n datacenterLocation: string\r\n}","export class GetUserByEmailInput {\r\n SessionId: string;\r\n Email: string;\r\n Checker: string;\r\n}","export class GetUserGroupsInput {\r\n SessionId: string;\r\n UserId: string;\r\n}","export class DeleteUserInput {\r\n sessionId: string;\r\n id: string;\r\n}","export enum DatacenterLocationsString {\r\n ACD = 'ACD',\r\n GMU = 'GMU',\r\n SPA = 'SPA',\r\n LAS = 'LAS',\r\n DEV = 'DEV',\r\n VCD = 'VCD',\r\n AWS = 'AWS',\r\n GCP = 'GCP',\r\n UAT = 'UAT',\r\n AZU = 'AZU',\r\n CNW = 'CNW',\r\n AUV = 'AUV',\r\n ATL = 'ATL'\r\n}","import { AddUserGroupInput } from './../gql/graphql/keycloak/schema/input/addUserGroupInput';\r\nimport { GetUserByEmailResponse } from './../gql/graphql/keycloak/schema/type/getUserByEmailResponse';\r\nimport { UserRepresentation } from './../gql/graphql/keycloak/schema/type/userRepresentation';\r\nimport { UserActionsInput } from './../gql/graphql/keycloak/schema/input/userActionsInput';\r\nimport { CloudPermission } from '@app/core/gql/graphql/keycloak/schema/type/cloudPermission';\r\nimport { AddUserInput } from './../gql/graphql/keycloak/schema/input/addUserInput';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { N3TStore } from \"./n3tStore.service\";\r\nimport { KeycloakUser } from \"../_models/user\";\r\nimport { environment } from '@environments/environment';\r\nimport { AuthenticationService } from \"./authentication.service\";\r\nimport { KeycloakEvent, KeycloakService } from 'keycloak-angular';\r\nimport { Router } from \"@angular/router\";\r\nimport { GqlService } from '.';\r\nimport { DeleteUserInput, GetKeycloakSessionInput, GetUserByEmailInput, GetUserGroupsInput } from '../gql/graphql/keycloak/schema/input';\r\nimport { CloudRole, DatacenterLocations } from '@app/core/_models/enums';\r\nimport { SubSink } from 'subsink';\r\nimport { Roles, TypeUser } from '../gql/graphql/permissions/schema/type';\r\nimport { App, DatacenterLocationsString } from '../gql/graphql/shared/schema/enums';\r\nimport { tap } from 'rxjs/operators';\r\nimport { GetUserGroupsResponse } from '../gql/graphql/keycloak/schema/type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n/*\r\n n3t keycloak service wrapper. centralize all keycloak logic in this class!!!!\r\n\r\n keyclock-angular related security exports:\r\n * AppModule (src/app/app/app.module.ts) - angular provider module\r\n * N3TKeycloakService (src/app/core/services/n3tKeyclock.service.ts) - keycloak-angular n3t service wrapper (bootstraps keycloak angular)\r\n * AuthGuard (src/app/core/_helpers/auth.guard.ts) - roles based route authorization guard\r\n * JwtInterceptor (src/app/core/_helpers/jwt.interceptor.ts) - https interceptor for adding keycloak authorization header to each http request\r\n\r\n Related Keycloak Server Settings:\r\n * SSO Session Idle (Realm Settings / Tokens) - the time the session is allowed to be idle before it expires. Works in conjunction with \"Client Session Max\" setting\r\n * SSO Session Max (Realm Settings / Tokens) - max time before a client session expires. Works in conjunction with \"Client Session Max\" setting\r\n * Client Session Idle (Realm Settings / Tokens) - the time the session is allowed to be idle before it expires.\r\n * Client Session Max (Realm Settings / Tokens) - max time before a client session expires.\r\n * Standard Flow (Clients / Account) - auth2 authentication flow https://usmanshahid.medium.com/levels-of-access-control-through-keycloak-part-2-authentication-flows-8ac3591984\r\n * Direct Access Grants Enabled (Clients / Account) - enabled to allow postman to log into keycloak in test tokens \r\n \r\n Related Keyclock Server User Settings:\r\n * companyid (Users/%user%/Attributes) - the user's company id from the n3tlogins database which is returned in the token payload as \"preferred_username\"\r\n * userid (Users/%user%/Attributes) - the user's id from n3tlogins database which is returned in the token payload as \"preferred_username\"\r\n * username (Users/%user%/Details) - the user's username which is returned in the token payload as \"preferred_username\" (username is used to pull the user's login from cache in n3tapi after a successful login)\r\n \r\n Authentication flow:\r\n * browser --> Authenticate --> keycloak (sends token) --> browser (use token) --> graphql (use token) --> n3tapi (validate token signature and cache user login for duration of the token lifetime for usersession state)\r\n*/\r\nexport class N3TKeycloakService implements OnDestroy {\r\n\r\n private sub = new SubSink();\r\n keycloakSession = new BehaviorSubject(\"\"); \r\n\r\n constructor(private gqlService: GqlService,\r\n private keycloak: KeycloakService,\r\n private authService: AuthenticationService) {}\r\n/*\r\n keycloack povider initial state is injected into angular app.module with two dependancies (keycloak and n3tstore) \r\n the APP_INITIALIZER inject token automatically loads keycloak login screen first via iframe as part of the \"angular-keycloak\" library\r\n*/\r\n public static initializeKeycloak(keycloak: KeycloakService, authService: AuthenticationService) {\r\n keycloak.keycloakEvents$.subscribe(event => N3TKeycloakService.dispatchHandler(keycloak, event, authService)); // <-- keycloak events are fired here\r\n return () => \r\n keycloak.init({\r\n config: {\r\n url: environment.keycloackUrl,\r\n realm: 'pvdc',\r\n clientId: 'account',\r\n },\r\n initOptions: {\r\n flow: 'standard',\r\n onLoad: 'login-required',\r\n silentCheckSsoRedirectUri:\r\n window.location.origin + '/features/silent-check-sso.html',\r\n checkLoginIframe: false\r\n },\r\n /* \r\n cross-origin resource sharing (CORS) is automatically triggered if an authorization token is present in the header for any request.\r\n Any xhr requests will automatically get an authorization header from the angular keycloak library. In order to by-pass this behavior do the following\r\n \r\n 1. update the \"setExcludedUrls\" function in the jwt.interceptor file and add the site that should not have an authorization header to the \"excludedUrls\" array.\r\n 2. add the site to this function's \"bearerExcludedUrls\" array.\r\n */\r\n bearerExcludedUrls: ['/alive', '/alive/check', 'https://api.ipify.org', 'https://dnschecker.org']\r\n });\r\n }\r\n\r\n /***** KEYCLOAK EVENT HANDLING *****/\r\n private static onAuthSuccess(keycloak: KeycloakService, authService: AuthenticationService) { \r\n let promise = N3TKeycloakService.getUserInfo(keycloak); // <-- keycloak libarary is async and is programmed using promises \r\n promise.then(userInfo => {\r\n authService.login(userInfo);\r\n }).catch(() => {\r\n authService.logout(); // <-- keycloak server server \"Client Session Max\" and \"SSO Session Max\" (Realm Settings / Tokens ) setting reached (no more refreshes)\r\n keycloak.logout();\r\n })\r\n }\r\n\r\n private static onTokenExpired(keycloak: KeycloakService) {\r\n console.log(\"Keycloak token expired \" + new Date().toString());\r\n }\r\n\r\n // Token refreshes are handled automatically by the keycloak angular library\r\n private static onAuthRefreshSuccess(keycloak: KeycloakService) {\r\n console.log(\"Keycloak token refreshed \" + new Date().toString()); // <-- keycloak server setting \"Access Token Lifespan\" (Realm Settings / Tokens)\r\n }\r\n\r\n /*\r\n assigns events from keycloack to given handlers for async operations like store dispatches\r\n --> extend dispatches for keycloak events here <--\r\n */\r\n private static dispatchHandler(keycloak: KeycloakService, keycloakEvent: KeycloakEvent, authService: AuthenticationService) {\r\n switch(keycloakEvent.type) { \r\n case 4: { // <-- auth success event\r\n N3TKeycloakService.onAuthSuccess(keycloak, authService); \r\n break;\r\n }\r\n case 3: { // <-- token refresh event. \r\n N3TKeycloakService.onAuthRefreshSuccess(keycloak);\r\n break;\r\n }\r\n case 6: { // <-- token expired event\r\n N3TKeycloakService.onTokenExpired(keycloak);\r\n break;\r\n }\r\n } \r\n }\r\n /***********************************/\r\n\r\n /*\r\n get keycloack user attributes companyid and userid and user detail preferred_username to use\r\n them in the calls to n3tapi so the user session can be cached in n3tapi\r\n */\r\n public static async getUserInfo(keycloak: KeycloakService) : Promise {\r\n\r\n return new Promise(async(resolve, reject) => {\r\n let instance = keycloak.getKeycloakInstance()\r\n let user: KeycloakUser = new KeycloakUser();\r\n \r\n await instance.loadUserInfo()\r\n .then(userInfo => {\r\n if (userInfo != undefined) {\r\n user.companyid = userInfo['companyid'];\r\n user.email = userInfo['email'];\r\n user.email_verified = userInfo['email_verified'];\r\n user.family_name = userInfo['family_name'];\r\n user.given_name = userInfo['given_name'];\r\n user.groups = userInfo['groups'];\r\n user.name = userInfo['name'];\r\n user.preferred_username = userInfo['preferred_username'];\r\n user.sub = userInfo['sub'];\r\n user.userid = userInfo['userid'];\r\n resolve(user); \r\n }\r\n }).catch(x => {\r\n reject(); // <-- the request to get user info from keycloak was rejected (token epxired) \r\n });\r\n });\r\n }\r\n\r\n public logout() {\r\n this.authService.logout();\r\n setTimeout(() => {\r\n this.keycloak.logout(environment.myUrl);\r\n }, 100);\r\n }\r\n\r\n public login() {\r\n this.keycloak.login();\r\n }\r\n\r\n /******************************************\r\n get the Keycloak session id for use in making calls into Keycloak via API\r\n ******************************************/\r\n\r\n public getKeycloakSession() {\r\n let input = new GetKeycloakSessionInput();\r\n if (environment.production) {\r\n input.datacenterLocation = \"ATL\";\r\n } else {\r\n input.datacenterLocation = \"DEV\";\r\n }\r\n this.sub.sink = this.gqlService.gql.keycloak.getKeycloakSession(input).subscribe(data => {\r\n this.keycloakSession.next(data.data[\"getKeycloakSession\"].session.sessionId!);\r\n //console.log(\"Keycloak sessionID: \" + data.data[\"getKeycloakSession\"].session.sessionId!)\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n /********************************************\r\n create the object for a new Keycloak User\r\n ********************************************/\r\n createKeycloakUserObject(user: TypeUser, companyNameShort: string, portalRoles: Roles[], computeLocations: CloudPermission[]): AddUserInput\r\n {\r\n let userInput = new AddUserInput();\r\n userInput.SessionId = this.keycloakSession.value;\r\n userInput.FirstName = user.firstName;\r\n userInput.LastName = user.lastName;\r\n userInput.Email = user.email;\r\n userInput.Username = user.email;\r\n userInput.UserId = user.userId;\r\n userInput.CompanyId = user.companyId;\r\n userInput.RequiredActions = new Array();\r\n userInput.RequiredActions.push(\"VERIFY_EMAIL\");\r\n userInput.RequiredActions.push(\"CONFIGURE_TOTP\");\r\n userInput.RequiredActions.push(\"UPDATE_PASSWORD\");\r\n userInput.Enabled = true;\r\n userInput.Groups = this.createGroupsString(companyNameShort, portalRoles, computeLocations);\r\n\r\n return userInput;\r\n }\r\n\r\n /*******************************************\r\n Create the Groups string for a Keycloak User. This is a comma-delimited string with following format:\r\n - ex: \"//Portal/User,//Portal/Admin,//VCD//OrganizationAdministrator\"\r\n - where: => the company short name value and is the string value of the associated Datacenter (ATL, SPA, LAS, etc.) \r\n *******************************************/\r\n createGroupsString(companyNameShort: string, portalRoles: Roles[], computeLocations: CloudPermission[]): string {\r\n let groups = \"\" ; \"/\" + companyNameShort + \"/Portal/User,\";\r\n\r\n if (portalRoles.length > 0) {\r\n portalRoles.forEach(role => {\r\n groups += \"/\" + companyNameShort + \"/Portal/\" + role.role + \",\";\r\n });\r\n }\r\n\r\n if (computeLocations.length > 0) {\r\n computeLocations.forEach(location => {\r\n groups += \"/\" + companyNameShort + \"/VCD/\" + location.datacenterLocation + \"/\" + CloudRole[location.cloudRole].toString() + \",\"; // \"/OrganizationAdministrator,\";\r\n })\r\n }\r\n\r\n if (groups.length > 0) {\r\n // remove trailing comma\r\n groups = groups.substring(0, groups.length - 1);\r\n } \r\n\r\n return groups;\r\n } \r\n\r\n /*******************************************\r\n * Get the Keycloak User information\r\n *******************************************/\r\n getSSOUser(userEmail: string): Observable {\r\n let input = new GetUserByEmailInput();\r\n input.Email = userEmail;\r\n input.SessionId = this.keycloakSession.value;\r\n input.Checker = new Date().getMilliseconds().toString();\r\n\r\n return this.gqlService.gql.keycloak.getUserByEmail(input).pipe(tap(result => {\r\n console.log(result[\"data\"][\"getUserByEmail\"].getUser);\r\n }));\r\n }\r\n\r\n sendSSOUserEmail(userEmail: string, permissions: CloudPermission[]) {\r\n this.sub.sink = this.getSSOUser(userEmail).subscribe(result => {\r\n if (result[\"data\"][\"getUserByEmail\"].getUser === null || result[\"data\"][\"getUserByEmail\"].getUser === undefined || result[\"data\"][\"getUserByEmail\"].success === false) { return; }\r\n\r\n let input = new UserActionsInput();\r\n input.SessionId = this.keycloakSession.value;\r\n input.RequiredActions = new Array();\r\n input.RequiredActions.push(\"VERIFY_EMAIL\"); // User required to verify email address\r\n input.RequiredActions.push(\"CONFIGURE_TOTP\"); // Set up 2 Factor Auth\r\n input.RequiredActions.push(\"UPDATE_PASSWORD\"); // Set/Update initial password\r\n input.UserId = result[\"data\"][\"getUserByEmail\"].getUser.id; // User Id from SSO\r\n input.Client_Id = \"account\";\r\n input.Redirect_Uri = this.determinePortalRedirect(permissions);\r\n \r\n this.sub.sink = this.gqlService.gql.keycloak.userActions(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n });\r\n\r\n }\r\n\r\n determinePortalRedirect(permissions: CloudPermission[]): string {\r\n let isDev = false;\r\n let isUAT = false;\r\n let isPROD = false;\r\n\r\n let vcdPerms = permissions.filter(p => p.app === App.vCloudDirector);\r\n\r\n if (vcdPerms.length > 0) {\r\n let permDev = vcdPerms.find(p => p.datacenterLocation === DatacenterLocationsString.DEV);\r\n if (permDev !== undefined) {\r\n isDev = true;\r\n }\r\n\r\n let permUAT = vcdPerms.find(p => p.datacenterLocation === DatacenterLocationsString.UAT);\r\n if (permUAT !== undefined) {\r\n isUAT = true;\r\n }\r\n\r\n let permProd = vcdPerms.find(p => p.datacenterLocation !== DatacenterLocationsString.DEV && p.datacenterLocation !== DatacenterLocationsString.UAT);\r\n if (permProd !== undefined) {\r\n isPROD = true;\r\n }\r\n }\r\n\r\n if (isDev) {\r\n return \"https://devportal2.palmettovdc.com\";\r\n }\r\n\r\n if (isUAT) {\r\n return \"https://uatportal2.palmettovdc.com\";\r\n }\r\n\r\n return environment.myUrl; // \"https://portal.palmettovdc.com\";\r\n\r\n }\r\n\r\n getUserGroups(userId: string): Observable {\r\n let input = new GetUserGroupsInput();\r\n input.SessionId = this.keycloakSession.value;\r\n input.UserId = userId;\r\n\r\n return this.gqlService.gql.keycloak.getUserGroups(input);\r\n }\r\n\r\n /*******************************************\r\n * Set Keycloak User information\r\n *******************************************/\r\n addUserToGroups(userId: string, groupIds: string[]) {\r\n groupIds.forEach(groupId => {\r\n let input = new AddUserGroupInput();\r\n input.GroupId = groupId;\r\n input.SessionId = this.keycloakSession.value;\r\n input.UserId = userId;\r\n\r\n this.sub.sink = this.gqlService.gql.keycloak.addUserToGroup(input).subscribe(result => {\r\n let resp = result;\r\n });\r\n })\r\n }\r\n\r\n send2FAReset(userId: string) {\r\n let input = new UserActionsInput();\r\n input.SessionId = this.keycloakSession.value;\r\n input.RequiredActions = new Array();\r\n input.RequiredActions.push(\"CONFIGURE_TOTP\"); // Set up 2 Factor Auth\r\n input.UserId = userId; // User Id from SSO\r\n input.Client_Id = \"account\";\r\n input.Redirect_Uri = environment.myUrl;\r\n\r\n this.sub.sink = this.gqlService.gql.keycloak.userActions(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n }\r\n\r\n\r\n /********************************************\r\n * Keycloak user cleanup/deprovisioning\r\n *******************************************/\r\n removeKeycloakUser(userEmail: string) {\r\n // Get the User\r\n this.sub.sink = this.getSSOUser(userEmail).subscribe(result => {\r\n let id = result[\"data\"][\"getUserByEmail\"].getUser.id;\r\n let input = new DeleteUserInput();\r\n input.sessionId = this.keycloakSession.value;\r\n input.id = id;\r\n\r\n this.sub.sink = this.gqlService.gql.keycloak.deleteKeycloakUser(input).subscribe(result => {\r\n let foo = result;\r\n });\r\n });\r\n }\r\n}","import { addTenantUsagesResult } from './../../store/tenantUsages/tenant-usages.actions';\r\nimport { getTenantOfferingItemsByEdition } from './../../store/tenantOfferingItems/tenant-offering-items.actions';\r\nimport { ActifioCluster } from './../gql/graphql/backup/schema/type/actifioCluster';\r\nimport { GetBackupClusterInfoInput } from './../gql/graphql/backup/schema/input/getBackupClusterInfoInput';\r\nimport { getBackupClustersInfoData } from './../../store/backupClusterInfo/backup-cluster-info.actions';\r\nimport { setBackupAuthResults } from './../../store/backupAuth/backup-auth.actions';\r\nimport { GetProductsInput } from './../gql/graphql/products/schema/input/getProductsInput';\r\nimport { DatacenterLocation } from './../gql/graphql/shared/schema/enums/datacenterLocation';\r\nimport { Observable } from 'rxjs';\r\nimport { Store } from '@ngrx/store';\r\nimport { filter } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/* store entity models */\r\nimport { AuthUser, KeycloakUser } from '../_models/user';\r\nimport { datapoint } from '../_models/datapoint';\r\nimport { BRSLink } from '../gql/graphql/brs/schema/type';\r\nimport { Company } from '../gql/graphql/company/schema/type/company';\r\nimport { CompanyIdentifier } from '../gql/graphql/company/schema/type';\r\nimport { Login, TypeComputeTemplate } from '../gql/graphql/shared/schema/type';\r\nimport { Membership } from '../gql/graphql/login/schema/type';\r\nimport { N3TResult } from '../_models/n3tResult';\r\nimport { NetworkData } from '../gql/graphql/network/schema/type';\r\nimport { Org } from '../_models/org';\r\nimport { Recovery } from '../gql/graphql/brs/schema/input';\r\nimport { Roles } from '../gql/graphql/permissions/schema/type';\r\nimport { GetCompanyUsersInput, RolesInput } from '@app/core/gql/graphql/permissions/schema/input';\r\nimport { Task } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { TypeToken } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { VDC, VMFlat } from '../gql/graphql/compute/schema/type';\r\nimport { SnapProtectStatusResponse, TypeVMSnapshot, TypeSnapshotSection, TypeSnapshotSectionSnapshot } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { GetNetworksByLocationInput } from '../gql/graphql/network/schema/input';\r\nimport { GetTasksInput,GetAllTasksInput, GetVMWareProviderTokensInput, UpdatePowerStatusInput, GetSnapProtectStatusInput, GetComputeTemplatesInput } from '../gql/graphql/compute/schema/input';\r\nimport { GetTemplatesInput } from '../gql/graphql/templates/schema/input';\r\nimport { TypeProductModel, TypeProductPriceModel } from '../gql/graphql/products/schema/type';\r\nimport { Session } from '../gql/graphql/backup/schema/type';\r\nimport { TypeHost, TypeBackup, TypeJob, TypeProcessJob } from '../gql/graphql/dps/schema/type';\r\nimport { TypeUser } from '../gql/graphql/permissions/schema/type';\r\nimport { GetOfferingItem, TenantResources } from '../gql/graphql/backup/schema/type';\r\n\r\n/* store selectors */\r\nimport * as AppSelectors from '../../store/app/app.selectors';\r\nimport * as AdminUserSelectors from '../../store/adminUser/admin-user.selectors';\r\nimport * as AuthUserSelectors from '../../store/authUser/auth-user.selectors';\r\nimport * as MetricsSelectors from '../../store/metrics/metrics.selectors';\r\nimport * as BRSLinkSelectors from '../../store/brsLink/brs-link.selectors';\r\nimport * as ChannelCompanySelectors from '../../store/channelCompany/channel-company.selectors';\r\nimport * as CompanySelectors from '../../store/company/company.selectors';\r\nimport * as CompanyIdentifierSelectors from '../../store/companyIdentifier/company-identifier.selectors';\r\nimport * as GQLSelectors from 'src/app/store/gql/gql.selectors';\r\nimport * as MembershipSelectors from '../../store/membership/membership.selectors';\r\nimport * as NetworkSelectors from '../../store/network/network.selectors';\r\nimport * as OrgSelectors from '../../store/org/org.selectors';\r\nimport * as ProviderTokenSelectors from '../../store/providerToken/provider-token.selectors';\r\nimport * as RoleSelectors from '../../store/role/role.selectors';\r\nimport * as TaskSelectors from '../../store/task/task.selectors';\r\nimport * as UserLoginSelectors from '../../store/userLogin/user-login.selectors';\r\nimport * as VDCSelectors from '../../store/vdc/vdc.selectors';\r\nimport * as VMFlatSelectors from '../../store/vmFlat/vm-flat.selectors';\r\nimport * as SnapshotSelectors from '../../store/snapshot/snapshot.selectors';\r\nimport * as TemplatesSelectors from '../../store/templates/templates.selectors';\r\nimport * as SelectedTemplatesSelectors from '../../store/selectedTemplates/selected-templates.selectors';\r\nimport * as ProductSelectors from '../../store/product/product.selectors';\r\nimport * as BackupAuthSelectors from '../../store/backupAuth/backup-auth.selectors';\r\nimport * as DPSSelectors from '../../store/dps/dps.selectors';\r\nimport * as BackupClusterSelectors from '../../store/backupClusterInfo/backup-cluster-info.selectors';\r\nimport * as BackupSelectors from '../../store/backup/backup.selectors';\r\nimport * as BackupJobSelectors from '../../store/backupJob/backup-job.selectors';\r\nimport * as ProcessJobSelectors from '../../store/processJob/process-job.selectors';\r\nimport * as CompanyUserSelectors from '../../store/companyUser/company-user.selectors';\r\nimport * as TenantOfferingItemsSelectors from '../../store/tenantOfferingItems/tenant-offering-items.selectors';\r\nimport * as TenantUsagesSelectors from '../../store/tenantUsages/tenant-usages.selectors';\r\n\r\n/* store actions */\r\nimport * as AdminUserActions from '../../store/adminUser/admin-user.actions';\r\nimport * as AppActions from '../../store/app/app.actions';\r\nimport * as AuthUserActions from '../../store/authUser/auth-user.actions';\r\nimport * as BRSLinkActions from '../../store/brsLink/brs-link.actions';\r\nimport * as ChannelCompanyActions from '../../store/channelCompany/channel-company.actions';\r\nimport * as CompanyActions from '../../store/company/company.actions';\r\nimport * as CompanyIdentifierActions from '../../store/companyIdentifier/company-identifier.actions';\r\nimport * as GQLActions from 'src/app/store/gql/gql.actions';\r\nimport * as MetricsActions from 'src/app/store/metrics/metrics.actions';\r\nimport * as MembershipActionss from '../../store/membership/membership.actions';\r\nimport * as NetworkActions from '../../store/network/network.actions';\r\nimport * as OrgActions from '../../store/org/org.actions';\r\nimport * as ProviderTokenActions from '../../store/providerToken/provider-token.actions';\r\nimport * as RoleActions from '../../store/role/role.actions';\r\nimport * as TaskActions from '../../store/task/task.actions';\r\nimport * as UserLoginActions from '../../store/userLogin/user-login.actions';\r\nimport * as VDCActions from '../../store/vdc/vdc.actions';\r\nimport * as VMFlatActions from '../../store/vmFlat/vm-flat.actions';\r\nimport * as SnapshotActions from '../../store/snapshot/snapshot.actions';\r\nimport * as TemplatesActions from '../../store/templates/templates.actions';\r\nimport * as SelectedTemplatesActions from '../../store/selectedTemplates/selected-templates.actions';\r\nimport * as ProductActions from '../../store/product/product.actions';\r\nimport * as BackupAuthActions from '../../store/backupAuth/backup-auth.actions';\r\nimport * as DPSActions from '../../store/dps/dps.actions';\r\nimport * as BackupClusterActions from '../../store/backupClusterInfo/backup-cluster-info.actions';\r\nimport * as BackupActions from '../../store/backup/backup.actions';\r\nimport * as BackupJobActions from '../../store/backupJob/backup-job.actions'; \r\nimport * as ProcessJobActions from '../../store/processJob/process-job.actions'; \r\nimport * as CompanyUserActions from '../../store/companyUser/company-user.actions';\r\nimport * as TenantOfferingItemsActions from '../../store/tenantOfferingItems/tenant-offering-items.actions';\r\nimport * as TenantUsagesActions from '../../store/tenantUsages/tenant-usages.actions';\r\n\r\nimport { Update } from '@ngrx/entity';\r\nimport { GetBackupsAllInput, GetDPSJobStatusInput, ProcessJobStatusInput } from '../gql/graphql/dps/schema/input';\r\nimport { CloudPermission } from '../gql/graphql/keycloak/schema/type/cloudPermission';\r\nimport { GetProductSelfServiceInput } from '../gql/graphql/products/schema/input';\r\nimport { GetTenantOfferingItemsByEditionInput, GetTenantUsagesInput } from '../gql/graphql/backup/schema/input';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class N3TStore {\r\n constructor(private store: Store) {}\r\n\r\n\r\n\r\n //#region Selectors\r\n /*** selectors ***/\r\n \r\n public selectBrsLinks(): Observable {\r\n return this.store.select(BRSLinkSelectors.selectAllBrsLinks)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectAuthUsers(): Observable {\r\n return this.store.select(AuthUserSelectors.selectAuthUser)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectMetrics(): Observable {\r\n return this.store.select(MetricsSelectors.selectMetrics)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectMetric(id: string): Observable {\r\n return this.store.select(MetricsSelectors.selectMetricById(id))\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectChannelCompanies(): Observable {\r\n return this.store.select(ChannelCompanySelectors.selectAllChannelCompanies)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectChannelCompanyAdmin(): Observable {\r\n return this.store.select(AdminUserSelectors.selectAdminUser)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectCompany(): Observable {\r\n return this.store.select(CompanySelectors.selectCompany)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectCompanyIdentifiers(): Observable {\r\n return this.store.select(CompanyIdentifierSelectors.selectAllCompanyIdentifiers)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectMembeships(): Observable {\r\n return this.store.select(MembershipSelectors.selectAllMemberships)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectNetworkData(): Observable {\r\n return this.store.select(NetworkSelectors.selectAllNetworks)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectOrgs(): Observable {\r\n return this.store.select(OrgSelectors.selectAllOrgs)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectProviderTokens(): Observable {\r\n return this.store.select(ProviderTokenSelectors.selectAllProviderTokens)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectRoles(): Observable {\r\n return this.store.select(RoleSelectors.selectAllRoles)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectTasks(): Observable {\r\n return this.store.select(TaskSelectors.selectAllTasks)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectUser(): Observable {\r\n return this.store.select(AuthUserSelectors.selectAuthUser)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectAdminUser(): Observable {\r\n return this.store.select(AdminUserSelectors.selectAdminUser)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n } \r\n\r\n public selectUserLogins(): Observable {\r\n return this.store.select(UserLoginSelectors.selectAllUserLogins)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectVDCs(): Observable {\r\n return this.store.select(VDCSelectors.selectAllVdcs)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectVDCById(id: string): Observable {\r\n return this.store.select(VDCSelectors.selectVdcById(id))\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectVMsFlat(): Observable {\r\n return this.store.select(VMFlatSelectors.selectAllVmFlats)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectVMFlat(id: string): Observable {\r\n return this.store.select(VMFlatSelectors.selectVmFlatById(id))\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectTemplates(): Observable {\r\n return this.store.select(TemplatesSelectors.selectAllTemplates)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectSelectedTemplates(): Observable {\r\n return this.store.select(SelectedTemplatesSelectors.selectAllSelectedTemplates)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectJobById(id: string): Observable {\r\n return this.store.select(ProcessJobSelectors.selectBackupProcessJobById(id))\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectSelectedTemplate(templateId: string): Observable {\r\n return this.store.select(SelectedTemplatesSelectors.selectSelectedTemplateById(templateId))\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectProducts(): Observable {\r\n return this.store.select(ProductSelectors.selectAllProducts)\r\n .pipe(filter(val => (val != null || (val != undefined))));\r\n }\r\n\r\n public selectProductById(id: string): Observable {\r\n return this.store.select(ProductSelectors.selectproductById(id))\r\n .pipe(filter(val => (val != null || (val != undefined))));\r\n }\r\n\r\n public selectBackupAuth(): Observable {\r\n return this.store.select(BackupAuthSelectors.selectAllBackupAuth)\r\n .pipe(filter(val => (val != null || (val != undefined))));\r\n }\r\n\r\n public selectBackupClusters(): Observable {\r\n return this.store.select(BackupClusterSelectors.selectAllBackupClusterInfo)\r\n .pipe(filter(val => (val != null || (val != undefined))));\r\n }\r\n\r\n public selectDPS(): Observable {\r\n return this.store.select(DPSSelectors.selectAllDPS)\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectBackups(): Observable {\r\n return this.store.select(BackupSelectors.selectAllBackup)\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectBackup(id: string): Observable {\r\n return this.store.select(BackupSelectors.selectBackupById(id))\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectBackupByJobId(jobid: string): Observable {\r\n return this.store.select(BackupSelectors.selectBackupByJobId(jobid))\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectBackupJobs(): Observable {\r\n return this.store.select(BackupJobSelectors.selectAllBackupJobs)\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectBackupJob(id: string): Observable {\r\n return this.store.select(BackupJobSelectors.selectBackupJobById(id))\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectCompanyUser(id: string): Observable {\r\n return this.store.select(CompanyUserSelectors.selectCompanyUserById(id))\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectCompanyUsers(): Observable {\r\n return this.store.select(CompanyUserSelectors.selectAllCompanyUsers)\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectTenantOfferingItems(): Observable {\r\n return this.store.select(TenantOfferingItemsSelectors.selectAllOfferingItems)\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n public selectTenantUsages(): Observable {\r\n return this.store.select(TenantUsagesSelectors.selectAllUsages)\r\n .pipe(filter(val => (val != null || (val != undefined))))\r\n }\r\n\r\n //#endregion\r\n\r\n //#region store result state selectors\r\n /* store result state selectors */\r\n public selectAuthUserResult(): Observable {\r\n return this.store.select(GQLSelectors.authUserResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectAdminUserResult(): Observable {\r\n return this.store.select(AdminUserSelectors.adminUserResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectBRSLinksResult(): Observable {\r\n return this.store.select(GQLSelectors.brsLinksResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectCompanyDataResult(): Observable {\r\n return this.store.select(GQLSelectors.companyDataResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectNetworkDataResult(): Observable {\r\n return this.store.select(GQLSelectors.networkDataResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectProviderTokensResult(): Observable {\r\n return this.store.select(GQLSelectors.providerTokensResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectPVDCsResult(): Observable {\r\n return this.store.select(GQLSelectors.vdcsResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectTasksResult(): Observable {\r\n return this.store.select(TaskSelectors.tasksResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectVMsFlatResult(): Observable {\r\n return this.store.select(VMFlatSelectors.vmsFlatResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectTemplatesResult(): Observable {\r\n return this.store.select(TemplatesSelectors.templatesResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectSelectedTemplatesResult(): Observable {\r\n return this.store.select(SelectedTemplatesSelectors.selectedTemplatesResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectProductsResult(): Observable {\r\n return this.store.select(ProductSelectors.productResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectBackupAuthResult(): Observable {\r\n return this.store.select(BackupAuthSelectors.backupAuthResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectDPSResult(): Observable {\r\n return this.store.select(DPSSelectors.dpsResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectBackupClusterInfoResult(): Observable {\r\n return this.store.select(BackupClusterSelectors.backupClusterInfoResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectBackupResult(): Observable {\r\n return this.store.select(BackupSelectors.backupResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n } \r\n\r\n public selectBackupJobResult(): Observable {\r\n return this.store.select(BackupJobSelectors.backupJobResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n } \r\n\r\n public selectCompanyUserResult(): Observable {\r\n return this.store.select(CompanyUserSelectors.companyUsersJobResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectTenantOfferingItemsResult(): Observable {\r\n return this.store.select(TenantOfferingItemsSelectors.offeringItemsResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n public selectTenantUsagesResult(): Observable {\r\n return this.store.select(TenantUsagesSelectors.tenantUsagesResult)\r\n .pipe(filter(val => (val != null) || (val != undefined)));\r\n }\r\n\r\n //#endregion\r\n\r\n //#region store load state selectors\r\n /* store load state selectors */\r\n\r\n //#endregion\r\n\r\n //#region store dispatches set actions\r\n /*** store dispatches set actions ***/\r\n public setBRSLinks(brsLinks: BRSLink[]) {\r\n this.store.dispatch(BRSLinkActions.setBrsLinks( { brsLinks }));\r\n }\r\n\r\n public setChannelCompanies(channelCompanies: Company[]) {\r\n this.store.dispatch(ChannelCompanyActions.setChannelCompanys( { channelCompanys: channelCompanies }));\r\n }\r\n\r\n public setChannelCompanyAdmin(channelAdmin: Login) {\r\n this.store.dispatch(AdminUserActions.setAdminUsers( { adminUsers: [channelAdmin] }));\r\n }\r\n\r\n public setNetworksState(networks: NetworkData[]) {\r\n this.store.dispatch(NetworkActions.setNetworks( { networks }));\r\n }\r\n\r\n public setProviderTokens(providerTokens: TypeToken[]) {\r\n this.store.dispatch(ProviderTokenActions.setProviderTokens({ providerTokens }));\r\n }\r\n\r\n public setRoles(roles: Roles[]) {\r\n this.store.dispatch(RoleActions.setRoles( { roles }));\r\n }\r\n\r\n public setTasks(tasks: Task[]) {\r\n this.store.dispatch(TaskActions.setTasks( { tasks: tasks }));\r\n }\r\n\r\n public setTask(task: Task) {\r\n this.store.dispatch(TaskActions.addTask({ task: task }));\r\n }\r\n\r\n public setProducts(products: TypeProductPriceModel[]) {\r\n this.store.dispatch(ProductActions.setProducts({ products: products }));\r\n }\r\n\r\n public setBackupAuth(backupAuth: Session[]) {\r\n this.store.dispatch(BackupAuthActions.setBackupAuthResults({ backupAuthResults: backupAuth }));\r\n }\r\n\r\n public setBackupClusters(backupClusters: ActifioCluster[]) {\r\n this.store.dispatch(BackupClusterActions.setBackupClusterInfoResults({ backupClusterInfoResults: backupClusters }));\r\n }\r\n\r\n public setDPS(dpsResults: TypeHost[]) {\r\n this.store.dispatch(DPSActions.setDPSResults({ dpsResults: dpsResults }));\r\n }\r\n\r\n public setBackups(backups: TypeBackup[]) {\r\n this.store.dispatch(BackupActions.addBackupResults({ backupResults: backups }));\r\n }\r\n\r\n public setBackup(backup: TypeBackup) {\r\n this.store.dispatch(BackupActions.addBackupResult({ backupResult: backup }));\r\n }\r\n\r\n public setBackupJobs(backupJobs: TypeJob[]) {\r\n this.store.dispatch(BackupJobActions.addBackupJobResults({ backupJobResults: backupJobs }));\r\n }\r\n\r\n public setBackupJob(backupJob: TypeJob) {\r\n this.store.dispatch(BackupJobActions.addBackupJobResult({ backupJobResult: backupJob }));\r\n }\r\n\r\n public setCompanyUser(user: TypeUser) {\r\n this.store.dispatch(CompanyUserActions.addCompanyUser({ companyUser: user }));\r\n }\r\n\r\n public setCompanyUsers(users: TypeUser[]) {\r\n this.store.dispatch(CompanyUserActions.addCompanyUsers({ companyUsers: users }));\r\n }\r\n\r\n public setTenantOfferingItems(items: GetOfferingItem[]) {\r\n this.store.dispatch(TenantOfferingItemsActions.addTenantOfferingItemsByEditionResults({ getTenantOfferingItemsByEditionInput: items }));\r\n }\r\n\r\n public setTenantUsage(item: TenantResources) {\r\n this.store.dispatch(TenantUsagesActions.addTenantUsagesResult({ getTenantUsagesInput: item }));\r\n }\r\n\r\n public setTenantUsages(items: TenantResources[]) {\r\n this.store.dispatch(TenantUsagesActions.addTenantUsagesResults({ getTenantUsagesInput: items }));\r\n }\r\n\r\n //#endregion\r\n\r\n //#region store dispatch insert/upsert calls\r\n /*** store dispatch insert/upsert calls ***/\r\n public upsertTask(task: Task) {\r\n this.store.dispatch(TaskActions.upsertTask({ task: task }));\r\n }\r\n\r\n public upsertVMFlat(vm: VMFlat) {\r\n this.store.dispatch(VMFlatActions.upsertVmFlat({ vmFlat: vm }));\r\n }\r\n\r\n public upsertSelectedTemplate(template: TypeComputeTemplate) {\r\n this.store.dispatch(SelectedTemplatesActions.upsertSelectedTemplate({ template: template }));\r\n this.store.dispatch(SelectedTemplatesActions.setSelectedTemplatesLoaded());\r\n }\r\n\r\n public upsertSelectedTemplates(templates: Array) {\r\n this.store.dispatch(SelectedTemplatesActions.upsertSelectedTemplates({ templates: templates }));\r\n this.store.dispatch(SelectedTemplatesActions.setSelectedTemplatesLoaded());\r\n }\r\n\r\n public upsertProducts(products: TypeProductPriceModel[]) {\r\n this.store.dispatch(ProductActions.upsertProducts({ products: products }));\r\n }\r\n\r\n public upsertBackupAuth(backupAuth: Session[]) {\r\n this.store.dispatch(BackupAuthActions.upsertBackupAuthResults({ backupAuthResults: backupAuth }));\r\n }\r\n\r\n public upsertBackupCluster(backupCluster: ActifioCluster) {\r\n this.store.dispatch(BackupClusterActions.upsertBackupClusterInfoResult({ backupClusterInfoResult: backupCluster }));\r\n }\r\n\r\n public upsertBackupClusters(backupClusters: ActifioCluster[]) {\r\n this.store.dispatch(BackupClusterActions.upsertBackupClusterInfoResults({ backupClusterInfoResults: backupClusters }));\r\n }\r\n\r\n public upsertDPS(dpsResults: TypeHost[]) {\r\n this.store.dispatch(DPSActions.upsertDPSResults({ dpsResults: dpsResults }));\r\n }\r\n\r\n public upsertDPSSingle(dpsResult: TypeHost) {\r\n this.store.dispatch(DPSActions.upsertDPSResult({ dpsResult: dpsResult }));\r\n }\r\n\r\n public upsertBackups(backups: TypeBackup[]) {\r\n this.store.dispatch(BackupActions.upsertBackupResults({ backupResults: backups }));\r\n }\r\n\r\n public upsertBackup(backup: TypeBackup) {\r\n this.store.dispatch(BackupActions.upsertBackupResult({ backupResult: backup }));\r\n }\r\n\r\n public upsertBackupJobs(backupJobs: TypeJob[]) {\r\n this.store.dispatch(BackupJobActions.upsertBackupJobResults({ backupJobResults: backupJobs }));\r\n }\r\n\r\n public upsertBackupJob(backupJob: TypeJob) {\r\n this.store.dispatch(BackupJobActions.upsertBackupJobResult({ backupJobResult: backupJob }));\r\n }\r\n\r\n public upsertCompanyUser(user: TypeUser, companyNameShort?: string, rolesPortal?: Roles[], cloudPermissions?: CloudPermission[]) {\r\n this.store.dispatch(CompanyUserActions.upsertCompanyUser({ companyUser: user, companyNameShort: companyNameShort, rolesPortal: rolesPortal, cloudPermissions: cloudPermissions }));\r\n }\r\n\r\n public upsertCompanyUsers(users: TypeUser[]) {\r\n this.store.dispatch(CompanyUserActions.upsertCompanyUsers({ companyUsers: users }));\r\n }\r\n\r\n public upsertCompanyUserRoles(user: TypeUser, roles: Roles[]) {\r\n this.store.dispatch(CompanyUserActions.upsertCompanyUserRoles({ companyUser: user, roles: roles }));\r\n }\r\n\r\n public upsertTenantOfferingItems(items: GetOfferingItem[]) {\r\n this.store.dispatch(TenantOfferingItemsActions.upsertTenantOfferingItemsByEditionResults({ getTenantOfferingItemsByEditionInput: items }));\r\n }\r\n\r\n public upsertTenantUsages(items: TenantResources[]) {\r\n this.store.dispatch(TenantUsagesActions.upsertTenantUsagesResults({ getTenantUsagesInput: items }));\r\n }\r\n\r\n //#endregion\r\n\r\n //#region store dispatch delete calls\r\n /*** store dispatch delete calls ***/\r\n\r\n public deleteSelectedTemplate(templateId: string) {\r\n this.store.dispatch(SelectedTemplatesActions.deleteSelectedTemplate({ id: templateId }));\r\n }\r\n\r\n public deleteSelectedTemplates(templateIds: Array) {\r\n this.store.dispatch(SelectedTemplatesActions.deleteSelectedTemplates({ ids: templateIds }));\r\n }\r\n\r\n public deleteProducts(productIds: Array) {\r\n this.store.dispatch(ProductActions.deleteProducts({ ids: productIds }));\r\n }\r\n\r\n public deleteBackupAuth(authIds: Array) {\r\n this.store.dispatch(BackupAuthActions.deleteBackupAuthResults({ ids: authIds }));\r\n }\r\n\r\n public deleteBackupCluster(backupClusterIds: Array) {\r\n this.store.dispatch(BackupClusterActions.deleteBackupClusterInfoResults({ ids: backupClusterIds }));\r\n }\r\n\r\n public deleteDPS(dpsIds: Array) {\r\n this.store.dispatch(DPSActions.deleteDPSResults({ ids: dpsIds }));\r\n }\r\n\r\n public deleteBackups(backupIds: Array) {\r\n this.store.dispatch(BackupActions.deleteBackupResults({ ids: backupIds }));\r\n }\r\n\r\n public deleteBackupJobs(backupJobIds: Array) {\r\n this.store.dispatch(BackupJobActions.deleteBackupJobResults({ ids: backupJobIds }));\r\n }\r\n\r\n public deleteCompanyUser(userIds: Array) {\r\n this.store.dispatch(CompanyUserActions.deleteCompanyUsers({ ids: userIds }));\r\n }\r\n\r\n public deleteCompanyUserAndMemberships(userId: string, userEmail: string) {\r\n this.store.dispatch(CompanyUserActions.deleteCompanyUser({ userId: userId, userEmail: userEmail }));\r\n }\r\n\r\n public deleteBRSLinks() {\r\n this.store.dispatch(BRSLinkActions.clearBrsLinks());\r\n }\r\n\r\n public deleteTenantOfferingItems() {\r\n this.store.dispatch(TenantOfferingItemsActions.clearTenantOfferingItemsByEdition());\r\n }\r\n\r\n public deleteTenantUsages() {\r\n this.store.dispatch(TenantUsagesActions.clearTenantUsages());\r\n }\r\n\r\n //#endregion\r\n\r\n //#region store dispatch gql calls\r\n /*** store dispatch gql calls ***/\r\n public dispatchAppReset() {\r\n this.store.dispatch(AppActions.appReset());\r\n }\r\n\r\n public dispatchAppChannelReset() {\r\n this.store.dispatch(AppActions.appResetChannel());\r\n }\r\n\r\n public dispatchAdminUser(adminUser: Login) {\r\n this.store.dispatch(GQLActions.getGqlAdminUser({ adminUser: adminUser }));\r\n }\r\n\r\n public dispatchAuthUser(user: string, password: string) {\r\n this.store.dispatch(GQLActions.getGqlAuthUser({ user: user, password: password }));\r\n }\r\n\r\n public dispatchGetCompanyData(userId: string, companyId: string) {\r\n this.store.dispatch(GQLActions.getGqlCompanyData({ userId, companyId }));\r\n }\r\n\r\n public dispatchGetChannelCompanyData(userId: string, companyId: string) {\r\n this.store.dispatch(GQLActions.getGqlChannelCompanyData({ userId: userId, companyId: companyId }));\r\n }\r\n\r\n public dispatchAuthUserByUserId(keycloakUser: KeycloakUser) {\r\n this.store.dispatch(GQLActions.getGqlAuthUserByUserId({ keycloakUser: keycloakUser }));\r\n }\r\n\r\n public dispatchGetCompanyChannelAdminUser(companyId: string) {\r\n this.store.dispatch(AdminUserActions.clearAdminUsers());\r\n this.store.dispatch(CompanyActions.getCompanyChannelAdminUser({ companyId: companyId }));\r\n }\r\n\r\n public dispatchGetBRSLinks(orgInfo: Recovery) {\r\n this.store.dispatch(GQLActions.getGqlBRSLinks( { orgInfo }));\r\n }\r\n public dispatchGetNetworkData(input: GetNetworksByLocationInput) {\r\n this.store.dispatch(GQLActions.getGqlNetworkData({ input }));\r\n }\r\n\r\n public dispatchGetProviderTokens(input: GetVMWareProviderTokensInput) {\r\n this.store.dispatch(GQLActions.getGqlProviderTokens({ input }));\r\n }\r\n\r\n public dispatchUpdateAuthUserRoles(user: AuthUser, roles: RolesInput[]) {\r\n this.store.dispatch(AuthUserActions.updateAuthUserRoles({ user, roles }));\r\n }\r\n\r\n public dispatchUpdateCompanyUserRoles(user: TypeUser, roles: Roles[]) {\r\n this.store.dispatch(CompanyUserActions.upsertCompanyUserRoles({ companyUser: user, roles: roles }))\r\n }\r\n\r\n public dispatchSetCompany(company: Company) {\r\n this.store.dispatch(CompanyActions.upsertCompany({ company }));\r\n }\r\n\r\n public dispatchTogglePowerStatus(vmFlat: VMFlat, powerStatus: UpdatePowerStatusInput) {\r\n this.store.dispatch(VMFlatActions.togglePowerStatus({vmFlat, powerStatus}));\r\n }\r\n\r\n public updateVMFlat(vmFlat: Update) {\r\n this.store.dispatch(VMFlatActions.updateVmFlat({ vmFlat }));\r\n }\r\n\r\n public dispatchGetTasks(getTasksInput: GetTasksInput) {\r\n this.store.dispatch(TaskActions.getTasks({ getTasksInput: getTasksInput }));\r\n }\r\n\r\n public dispatchGetAllTasks(getAllTasksInput: GetAllTasksInput, pollingInterval: number = 0) {\r\n this.store.dispatch(TaskActions.getAllTasks({ getAllTasksInput: getAllTasksInput, pollingInterval: pollingInterval }));\r\n }\r\n\r\n public dispatchGetSnapProtectStatus(getSnapProtectStatusInput: GetSnapProtectStatusInput) {\r\n this.store.dispatch(SnapshotActions.getTypeVMSnapshotStatus({ getSnapProtectStatusInput: getSnapProtectStatusInput}));\r\n }\r\n\r\n public dispatchGetTemplatesByLocations(getTemplatesInput: Org[]) {\r\n this.store.dispatch(TemplatesActions.getTemplates({ getTemplatesInput: getTemplatesInput}));\r\n }\r\n\r\n public dispatchGetProductData(getProductsInput: GetProductsInput) {\r\n this.store.dispatch(ProductActions.getProductData({ getProducts: getProductsInput }));\r\n }\r\n\r\n public dispatchGetProductSelfServiceData(getProductsSelfServiceInput: GetProductSelfServiceInput) {\r\n this.store.dispatch(ProductActions.getProductSelfServiceData({ getProductsSelfService: getProductsSelfServiceInput }));\r\n }\r\n\r\n public dispatchGetBackupAuthData() {\r\n this.store.dispatch(BackupAuthActions.getBackupAuthData());\r\n }\r\n\r\n public dispatchGetDPSResults(getBackupsAllInput: GetBackupsAllInput) {\r\n this.store.dispatch(DPSActions.getBackupsAllData({ getBackupsAll: getBackupsAllInput }));\r\n }\r\n\r\n public dispatchGetBackupClusterResults(getBackupClustersInfoData: GetBackupClusterInfoInput[]) {\r\n this.store.dispatch(BackupClusterActions.getBackupClustersInfoData({ getBackupClustersInfoInput: getBackupClustersInfoData }));\r\n }\r\n\r\n public dispatchGetBackupJobStatus(getDPSJobStatusInput: GetDPSJobStatusInput, pollingInterval: number = 0) {\r\n this.store.dispatch(BackupJobActions.getBackupJob({ getDPSJobStatusInput: getDPSJobStatusInput, pollingInterval: pollingInterval }));\r\n }\r\n\r\n public dispatchGetJobStatus(processJobStatusInput: ProcessJobStatusInput, pollingInterval: number = 0) {\r\n this.store.dispatch(ProcessJobActions.getProcessJob({ getProcessJobStatusInput: processJobStatusInput, pollingInterval: pollingInterval }));\r\n }\r\n\r\n public dispatchGetCompanyUsers(getCompanyUsersInput: GetCompanyUsersInput) {\r\n this.store.dispatch(CompanyUserActions.getCompanyUsers({ getCompanyUsers: getCompanyUsersInput }));\r\n }\r\n\r\n public dispatchGetTenantOfferingItems(tenantOfferingItemsByEditionInput: GetTenantOfferingItemsByEditionInput) {\r\n this.store.dispatch(TenantOfferingItemsActions.getTenantOfferingItemsByEdition({ getTenantOfferingItemsByEditionInput: tenantOfferingItemsByEditionInput }));\r\n }\r\n\r\n public dispatchGetTenantUsages(tenantUsagesInput: GetTenantUsagesInput) {\r\n this.store.dispatch(TenantUsagesActions.getTenantUsages({ getTenantUsagesInput: tenantUsagesInput }));\r\n }\r\n\r\n public dispatchCreateSSOUser(companyUser: TypeUser, companyNameShort: string, rolesPortal: Roles[], cloudPermissions: CloudPermission[]) {\r\n this.store.dispatch(CompanyUserActions.addCompanyUserToSSO({ companyUser: companyUser, companyNameShort: companyNameShort, rolesPortal: rolesPortal, cloudPermissions: cloudPermissions }));\r\n }\r\n\r\n public dispatchLogoutMetric() {\r\n this.store.dispatch(MetricsActions.logout());\r\n }\r\n\r\n public dispatchSessionTimeoutMetric() {\r\n this.store.dispatch(MetricsActions.sessionTimeout());\r\n }\r\n\r\n public dispatchSessionLength() {\r\n this.store.dispatch(MetricsActions.sessionLength());\r\n }\r\n\r\n public dispatchSetMetric(metric: datapoint, persistToDb: boolean) {\r\n this.store.dispatch(MetricsActions.setMetric({ metric: metric, persistToDb: persistToDb}));\r\n }\r\n\r\n public dispatchUpdateMetric(metric: Update) {\r\n this.store.dispatch(MetricsActions.updateMetric({ metric: metric}));\r\n }\r\n\r\n public dispatchPersistToDb(metric: datapoint) {\r\n this.store.dispatch(MetricsActions.persistToDb({ metric: metric}));\r\n }\r\n //#endregion\r\n}\r\n\r\n","import { SelfServiceProduct } from \".\";\r\n\r\n\r\nexport class SelfServicePayload {\r\n orgName: string;\r\n vdcId: string;\r\n location: string;\r\n products: SelfServiceProduct[];\r\n}","import { TypeSelfServiceModel } from \"../type\";\r\n\r\nexport class ProvisionSelfServiceOrderInput {\r\n selfServiceModel: TypeSelfServiceModel;\r\n}","import { SelfServicePayload } from \"./selfServicePayload\";\r\n\r\nexport class TypeSelfServiceModel {\r\n companyId: string;\r\n userId: string;\r\n action: string;\r\n jobId: string;\r\n correlationId: string;\r\n payload: SelfServicePayload[];\r\n}","\r\n\r\nexport class SelfServiceProduct {\r\n id: number;\r\n quantity: number;\r\n parentId: string;\r\n}","import * as _ from 'underscore';\r\nimport { SubSink } from 'subsink';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { GqlService } from './gql.service';\r\nimport { SelfServiceOrder } from '../_models';\r\nimport { MetricsService } from './metrics.service';\r\nimport { ChannelService } from './channel.service';\r\nimport { CartProduct } from \"../_models/cart-product\";\r\nimport { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { ProvisionJobService } from './provision-job.service';\r\nimport { DatacenterLocationsString } from './../_models/enums';\r\nimport { AuthenticationService } from './authentication.service';\r\nimport { SelfServicePayload } from './../gql/graphql/products/schema/type/selfServicePayload';\r\nimport { ProvisionSelfServiceOrderInput } from './../gql/graphql/products/schema/input/provisionSelfServiceOrderInput';\r\nimport { SelfServiceProduct, TypeProvisionOrderResponseModel, TypeSelfServiceModel } from '../gql/graphql/products/schema/type';\r\nimport { CompanyService } from './company.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n })\r\n\r\nexport class OrderService implements OnDestroy {\r\n\r\n constructor(private gqlService: GqlService,\r\n private metricsSvc: MetricsService,\r\n private channelService: ChannelService,\r\n private provStatusSvc: ProvisionJobService,\r\n private authService: AuthenticationService,\r\n private companyService: CompanyService) { \r\n // this.authService.user.subscribe(x => {\r\n // this._companyId = x.companyName; // <-- subscribe to the auth service to get the companyId of the logged on user, which we will use CompanyName for\r\n // });\r\n this.companyService.company.subscribe(x => {\r\n this._companyId = x.companyNameShort; // <-- subscribe to the company, which is updated based on the current or channel company...\r\n })\r\n }\r\n\r\n /*\r\n *** private members ***\r\n */\r\n private _sub = new SubSink();\r\n private _companyId: string = \"\";\r\n \r\n /*\r\n *** public members ***\r\n */\r\n public orderResult$ = new BehaviorSubject(new SelfServiceOrder());\r\n \r\n ngOnDestroy(): void {}\r\n \r\n public submitSelfServiceOrder(selfServiceProducts: Array) {\r\n let isChannelMode = this.channelService.getIsChannelMode();\r\n let companyName = \"\";\r\n\r\n if (isChannelMode) {\r\n companyName = this.channelService.getAdminUser().companyName;\r\n } else {\r\n companyName = this._companyId;\r\n }\r\n\r\n let input: ProvisionSelfServiceOrderInput = new ProvisionSelfServiceOrderInput();\r\n input.selfServiceModel = new TypeSelfServiceModel();\r\n input.selfServiceModel.payload = new Array();\r\n let id = UUID.UUID();\r\n\r\n input.selfServiceModel.action = \"provisionselfservice\";\r\n input.selfServiceModel.companyId = companyName; //this._companyId;\r\n input.selfServiceModel.correlationId = this.metricsSvc.correlationId.toString(); // id.toString();\r\n input.selfServiceModel.jobId = id.toString();\r\n input.selfServiceModel.userId = this.metricsSvc.userId.toString();\r\n input.selfServiceModel.payload = this.createPayloadSelfService(companyName, selfServiceProducts);\r\n\r\n this._sub.sink = this.gqlService.gql.products.provisionSelfServiceOrder(input).subscribe(data => {\r\n let worked = data.data[\"provisionSelfServiceOrder\"].success;\r\n let foo = data.data[\"provisionSelfServiceOrder\"];\r\n let bar: any;\r\n let orders = new Array();\r\n let result = new SelfServiceOrder();\r\n if (worked) {\r\n bar = foo[\"ProvisionSelfServiceOrderResponse\"].result; // => This is the returned array of created Orders, wiht jobId and orderId\r\n\r\n bar.forEach(order => {\r\n orders.push(order); \r\n });\r\n\r\n result.success = true;\r\n result.message = data.data[\"provisionSelfServiceOrder\"]?.message;\r\n result.orders = new Array();\r\n result.orders = orders;\r\n this.provStatusSvc.getProvisioningProgress(input.selfServiceModel, selfServiceProducts);\r\n\r\n } else {\r\n result.success = false;\r\n result.message = data.data[\"provisionSelfServiceOrder\"]?.message;\r\n }\r\n\r\n this.orderResult$.next(result);\r\n });\r\n\r\n this.provStatusSvc.jobStatuses$.subscribe(x => console.log(x));\r\n }\r\n\r\n private createPayloadSelfService(orgName: string, selfServiceProducts: Array): SelfServicePayload[] {\r\n let payloadsOut = new Array();\r\n\r\n let tmpProdsByDatacenter = _.groupBy(selfServiceProducts, 'datacenter'); // function(prod){ return prod.datacenter; }\r\n\r\n let datacenters = Object.keys(DatacenterLocationsString); // [\"DEV\", \"UAT\", \"SPA\", \"LAS\", \"ATL\"];\r\n\r\n datacenters.forEach(loc => {\r\n\r\n let prodsByLoc = tmpProdsByDatacenter[loc];\r\n if (prodsByLoc !== undefined && prodsByLoc.length > 0) {\r\n // There is at least one product for this location, continue processing\r\n let vdcTracker = \"\";\r\n let ssPayload = new SelfServicePayload();\r\n prodsByLoc = _.sortBy(prodsByLoc, 'vdcid');\r\n\r\n prodsByLoc.forEach(prod => {\r\n if (prod.vdcid === \"\" && vdcTracker === \"\") {\r\n // This is a product that does not correlate to a VDC, i.e. something for External datacenter(s) like DPS (Acronis)\r\n ssPayload = new SelfServicePayload();\r\n ssPayload.location = loc;\r\n ssPayload.orgName = orgName; \r\n\r\n let tmpProd = new SelfServiceProduct();\r\n tmpProd.id = prod.selfServiceId;\r\n tmpProd.quantity = prod.quantity;\r\n if (prod.parentId !== undefined && prod.parentId !== \"\") {\r\n tmpProd.parentId = prod.parentId;\r\n }\r\n ssPayload.products = new Array();\r\n ssPayload.products.push(tmpProd);\r\n }\r\n else if (prod.vdcid !== vdcTracker) {\r\n // This is a \"new\" vdcid, have to set up the \"payload\" outer data as well as the first product in the product array\r\n if (ssPayload === undefined) {\r\n ssPayload = new SelfServicePayload();\r\n }\r\n ssPayload.location = loc;\r\n ssPayload.orgName = orgName; //this._companyId;\r\n ssPayload.vdcId = prod.vdcid;\r\n\r\n let tmpProd = new SelfServiceProduct();\r\n tmpProd.id = prod.selfServiceId;\r\n tmpProd.quantity = prod.quantity;\r\n if (prod.parentId !== undefined && prod.parentId !== \"\") {\r\n tmpProd.parentId = prod.parentId;\r\n }\r\n ssPayload.products = new Array();\r\n ssPayload.products.push(tmpProd);\r\n\r\n // Set the \"vdcTracker\" to this value for next potential iteration\r\n vdcTracker = prod.vdcid;\r\n } else {\r\n // This is an existing vdcid, the main \"payload\" data is already set up so we just need another product entered\r\n let tmpProd = new SelfServiceProduct();\r\n tmpProd.id = prod.selfServiceId;\r\n tmpProd.quantity = prod.quantity;\r\n if (prod.parentId !== undefined && prod.parentId !== \"\") {\r\n tmpProd.parentId = prod.parentId;\r\n }\r\n ssPayload.products.push(tmpProd);\r\n }\r\n });\r\n\r\n payloadsOut.push(ssPayload); \r\n }\r\n });\r\n\r\n return payloadsOut;\r\n }\r\n}","import { TypeCostProductReq } from './index';\r\n\r\nexport class TypeCostContainerReq {\r\n Id: string;\r\n Products: TypeCostProductReq[];\r\n}","import { TypeCostOrderReq } from '../type/index';\r\n\r\nexport class GetProductPricingInput {\r\n customerId: string; \r\n orderPriceReq: TypeCostOrderReq;\r\n}","import { TypeCostContainerReq } from '.';\r\n\r\n\r\nexport class TypeCostOrderReq {\r\n Containers: TypeCostContainerReq[];\r\n}","\r\n\r\nexport class TypeCostProductReq {\r\n ProductId: number;\r\n ServiceId: number;\r\n Quantity: number;\r\n DatacenterCode: string;\r\n IsSLA: boolean;\r\n}","import { CommonService } from './common.service';\nimport { TypeCostContainerReq } from './../gql/graphql/products/schema/type/typeCostContainerReq';\nimport { TypeComputeTemplate } from './../gql/graphql/shared/schema/type/typeComputeTemplate';\nimport { GetProductPricingInput } from './../gql/graphql/products/schema/input/getProductPricingInput';\nimport { GqlService } from './gql.service';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { N3TStore } from './n3tStore.service';\nimport { TypeCostOrder, TypeCostOrderReq, TypeCostProductReq, TypeProductModel, TypeProductPriceModel } from '../gql/graphql/products/schema/type';\nimport { DatacenterLocations, ProductId } from '../_models';\nimport { BehaviorSubject } from 'rxjs';\nimport { SubSink } from 'subsink';\nimport * as _ from 'underscore';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductsService implements OnDestroy {\n private sub = new SubSink();\n\n private _products$ = new BehaviorSubject>(new Array());\n\n constructor(\n private n3tstore: N3TStore,\n private gqlService: GqlService,\n private commonService: CommonService,\n ) { \n\n this.sub.sink = this.n3tstore.selectProducts().subscribe(products => {\n this._products$.next(products);\n });\n\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n public getCostEstimate(templates: TypeComputeTemplate[]): TypeCostOrder[] {\n let costs = new Array();\n\n templates.forEach(template => {\n this.gqlService.gql.products.getProductPricing(this.convertTemplateToProducts(template))\n .subscribe(result => {\n var cost = result.data[\"ProductPricing\"].ProductResponse.result; //result.data.ProductResponse.result;\n costs.push(cost);\n });\n })\n\n return costs;\n };\n\n public convertTemplateToProducts(template: TypeComputeTemplate): GetProductPricingInput {\n //#region Data format\n //\n //{\n // \"customerId\": \"\",\n // \"orderPriceReq\": {\n // \"Containers\": [\n // {\n // \"Id\": \"\",\n // \"Products\": [\n // {\n // \"ProductId\": \"int\",\n // \"ServiceId\": \"int\",\n // \"Quantity\": 0,\n // \"DatacenterCode\": \"\",\n // \"IsSLA\": false\n // }\n // ]\n // }\n // ]\n // }\n //}\n //#endregion\n\n let output = new GetProductPricingInput() \n this.n3tstore.selectCompany().subscribe(data => {\n output.customerId = data.companyNameShort; //.companyId.toString()\n });\n output.orderPriceReq = new TypeCostOrderReq();\n\n output.orderPriceReq.Containers = new Array();\n\n for (var _i = 0; _i < template.vms.length; _i++) {\n var vm = template.vms[_i];\n\n var container = new TypeCostContainerReq()\n container.Id = template.newvAppName + ' :: ' + vm.name;\n container.Products = new Array();\n\n var prodCPU = new TypeCostProductReq();\n var prodMem = new TypeCostProductReq();\n var prodDisks = new TypeCostProductReq();\n var prodOS = new TypeCostProductReq();\n\n prodCPU.DatacenterCode = template.datacenter.toString();\n prodCPU.IsSLA = false;\n prodCPU.ProductId = 40; //\"vCPU (per GHz)\";\n prodCPU.Quantity = vm.numberOfCpus * 0.26;\n prodCPU.ServiceId = 5; // template.runMode; // 5;\n\n prodMem.DatacenterCode = template.datacenter.toString();\n prodMem.IsSLA = false;\n prodMem.ProductId = 39; //\"vRAM (per GB)\";\n prodMem.Quantity = vm.memoryMB / 1024;\n prodMem.ServiceId = 5; // template.runMode; // 5;\n\n prodDisks.DatacenterCode = template.datacenter.toString();\n prodDisks.IsSLA = false;\n prodDisks.ProductId = 41; //\"Standard Storage (per GB)\";\n prodDisks.Quantity = this.calculateDiskSpace(vm.disks);\n prodDisks.ServiceId = 5; // template.runMode; // 5;\n\n if (this.checkOsWindows(vm.guestOs))\n {\n prodOS.DatacenterCode = template.datacenter.toString();\n prodOS.IsSLA = false;\n prodOS.ProductId = 51; //\"Windows OS\";\n prodOS.Quantity = 1;\n prodOS.ServiceId = 5; // template.runMode; // 5;\n \n container.Products.push(prodOS);\n }\n else if (this.checkOsRHL(vm.guestOs))\n {\n prodOS.DatacenterCode = template.datacenter.toString();\n prodOS.IsSLA = false;\n prodOS.ProductId = 52; //\"Red Hat Enterprise\";\n prodOS.Quantity = 1;\n prodOS.ServiceId = 5; // template.runMode; // 5;\n\n container.Products.push(prodOS);\n }\n\n container.Products.push(prodCPU);\n container.Products.push(prodMem);\n container.Products.push(prodDisks);\n\n output.orderPriceReq.Containers.push(container);\n }\n\n return output; \n };\n\n public getProducts(): TypeProductPriceModel[] {\n return this._products$.value; // .getValue();\n }\n\n\n //#region Helper methods\n\n calculateDiskSpace(disks) {\n let totalSize = 0;\n\n for (var _i = 0; _i < disks.length; _i++) {\n totalSize += this.commonService.convertDiskSizeBytesToGB(disks[_i].size);\n }\n return totalSize;\n };\n\n checkOsWindows(guestOS) {\n var isWindows = false;\n\n guestOS = guestOS.toLowerCase();\n\n if (guestOS.includes('windows') || guestOS.includes('w2k') || guestOS.includes('microsoft') || guestOS.includes('win')) {\n isWindows = true;\n }\n\n return isWindows;\n };\n\n checkOsRHL(guestOS) {\n var isRHL = false;\n\n switch (guestOS) {\n case \"Red Hat Enterprise\":\n isRHL = true;\n break;\n default:\n break;\n }\n\n return isRHL;\n };\n\n public getProductId(resource: string): ProductId {\n switch(resource.toLowerCase()) { \n case \"vram\": { \n return ProductId.vRAM;\n } \n case \"vcpu\": { \n return ProductId.vCPU; \n } \n case \"standardstorage\": { \n return ProductId.StandardStorage; \n }\n case \"ssdenhancedstorage\": { \n return ProductId.SSDEnhancedStorage; \n } \n case \"redhatenterprise\": { \n return ProductId.RedHatEnterprise;\n } \n case \"windowsos\": { \n return ProductId.WindowsOS; \n }\n case \"acroniscloudstorage\": {\n return ProductId.AcronisCloudStorage;\n }\n case \"bandwidth\": {\n return ProductId.Bandwidth;\n }\n case \"acroniscpserver\": {\n return ProductId.AcronisCPServer;\n }\n case \"acroniscpvm\": {\n return ProductId.AcronisCPVM;\n }\n case \"acroniscpworkstation\": {\n return ProductId.AcronisCPWorkStation;\n }\n case \"acroniscpwebserver\": {\n return ProductId.AcronisCPWebServer;\n }\n\n default: { \n //statements; \n break; \n } \n }\n }\n\n public resourceToString(resource: ProductId): string {\n let nameOfResource = ProductId[resource];\n return nameOfResource;\n }\n\n public resourceClassImage(resource: ProductId): string {\n let classOut = \"\";\n\n switch (resource) {\n case ProductId.vCPU:\n classOut = \"fal fa-microchip\";\n break;\n case ProductId.vRAM:\n classOut = \"fal fa-ticket\";\n break;\n case ProductId.StandardStorage:\n classOut = \"fal fa-database\"; \n break;\n case ProductId.SSDEnhancedStorage:\n classOut = \"fal fa-database\";\n break;\n case ProductId.AcronisCloudStorage:\n classOut = \"fal fa-cloud\";\n break;\n default:\n break;\n }\n \n return classOut;\n }\n\n public getResourceUnits(resource: ProductId): string {\n let unitsOut = \"\";\n\n switch (resource) {\n case ProductId.vCPU:\n unitsOut = \"GHz\";\n break;\n case ProductId.vRAM:\n unitsOut = \"GB\";\n break;\n case ProductId.StandardStorage:\n unitsOut = \"GB\"; \n break;\n case ProductId.SSDEnhancedStorage:\n unitsOut = \"GB\";\n break;\n case ProductId.AcronisCloudStorage:\n unitsOut = \"GB\";\n break; \n default:\n break;\n }\n \n return unitsOut;\n }\n\n //#endregion\n\n}\n","export class ProvisionJobStatusReq {\r\n public jobid: string;\r\n public location: string;\r\n public userid: string;\r\n public companyid: string;\r\n}","import { GqlService } from \"./gql.service\";\r\nimport { N3TLogger } from \"../_helpers/n3tlogger\";\r\nimport { MetricsService } from \"./metrics.service\";\r\nimport { CartProduct } from \"../_models/cart-product\";\r\nimport { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { ApolloQueryResult } from \"@apollo/client/core\";\r\nimport { ProvisionJobStatus } from \"../_models/provision-job-status\";\r\nimport { QueryResponse } from \"../gql/graphql/messageQueue/schema/type\";\r\nimport { GetJobStatusInput } from \"../gql/graphql/templates/schema/input\";\r\nimport { BehaviorSubject, catchError, interval, Observable, of, scan, Subject, take, takeWhile } from \"rxjs\";\r\nimport { TypeSelfServiceModel } from \"../gql/graphql/products/schema/type\";\r\nimport { ProvisionJobStatusReq } from \"../_models/provision-job-status-req\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n })\r\n\r\nexport class ProvisionJobService implements OnDestroy {\r\n\r\n constructor(private logger: N3TLogger,\r\n private gqlSvc: GqlService,\r\n private metricsSvc: MetricsService) { }\r\n\r\n // *** private class members ***\r\n private _takeCount: number = 60; // <-- the maximum amount of intervals to take before unsubsribing from the observable (60 x 5 = 5 minutes of polling every 5 seconds)\r\n private _jobTimeoutMs: number = 5000 // <-- timeout is in milliseconds to poll the job status on the message queue\r\n\r\n // *** public class members ***\r\n public jobStatuses$ = new BehaviorSubject([]); // <-- job status multicast stream. All jobs status updates are emmitted to this stream. (STREAM IS HOT!)\r\n public jobsStatusReqs: Array = []; // <-- progress bar components should bind to this array to get async updates on the status of products being provisioned\r\n\r\n public removeJobStatusReq(jobid: string) { // <-- remove a job status request to remove a progress bar component that is bound to a job status req array\r\n let filtered = this.jobsStatusReqs.filter(x => x.jobid == jobid); \r\n this.jobsStatusReqs = [...filtered];\r\n }\r\n \r\n ngOnDestroy(): void {}\r\n\r\n public getProvisioningProgress(model: TypeSelfServiceModel, selfServiceProducts: Array) {\r\n setTimeout(() => {\r\n try {\r\n let datacenters: string[] = [];\r\n let jobStatusReqs: Array;\r\n \r\n selfServiceProducts.filter( // <-- get distinct datacenters\r\n (cartProduct, i, arr) => arr.findIndex(t => t.datacenter === cartProduct.datacenter) === i\r\n ).forEach(x => datacenters.push(x.datacenter));\r\n \r\n jobStatusReqs = this.getJobStatusRequests(model, datacenters); // <-- create job status progress requests\r\n this.processJobStatusReqs(jobStatusReqs); \r\n }\r\n catch(e) {\r\n this.logError(e, \"provision-job.service.getProvisioningProgress\");\r\n } \r\n }, 10000) \r\n }\r\n\r\n private getJobStatusRequests(model: TypeSelfServiceModel, datacenters: string[]) : Array {\r\n let statusReq: ProvisionJobStatusReq;\r\n let statusRequests: Array = [];\r\n\r\n datacenters.forEach(datacenter => { // <-- create unique requests for each datacenter using the same job id. (jobid/datacenter)\r\n statusReq = new ProvisionJobStatusReq();\r\n statusReq.jobid = model.jobId;\r\n statusReq.userid = model.userId;\r\n statusReq.companyid = model.companyId;\r\n statusReq.location = datacenter; \r\n statusRequests.push(statusReq);\r\n });\r\n\r\n return statusRequests;\r\n }\r\n\r\n private processJobStatusReqs(statusRequests: Array) { \r\n for (var statusReq of statusRequests) { // <-- each datacenter has a unique message queue server. use the jobid to read the message queue for the given datacenter\r\n this.jobsStatusReqs.push(statusReq);\r\n let fn = this.getJobStatusFn();\r\n fn(statusReq); // <-- submit a job for provisioning status updates to the public stream for the given job / datacenter\r\n }\r\n }\r\n\r\n private getJobStatusFn() { // <-- jobid/datacenter status updates closure. all status update variables are local and enclused in this function\r\n return (statusReq: ProvisionJobStatusReq) => {\r\n let emitInterval = true;\r\n let curStatus: ProvisionJobStatus;\r\n let prevStatus: ProvisionJobStatus;\r\n let intVal$ = interval(this._jobTimeoutMs);\r\n let input = this.getJobStatusInput(statusReq);\r\n let interval$ = intVal$.pipe(takeWhile(() => emitInterval)); \r\n \r\n interval$.subscribe(x => { // <-- each interval that is emitted by the interval observable (every 5 seconds)\r\n this.gqlSvc.gql.messageQueue.getJobStatus(input).pipe(take(1)).subscribe({ // <-- close the stream after the first response\r\n next: resp => {\r\n curStatus = this.getJobStatus(statusReq, resp);\r\n if (this.statusChanged(prevStatus, curStatus)) {\r\n if (curStatus.status != \"no-messages\") {\r\n prevStatus = curStatus;\r\n this.emitJobStatus(curStatus); // <-- only emit job statuses that are new\r\n }\r\n }\r\n },\r\n error: err => this.logError(err, \"provision-job.service\")\r\n });\r\n\r\n emitInterval = !this.jobFinished(x, this._takeCount, prevStatus, curStatus, statusReq); // <-- close the stream when the job timeout is exceeded or a status of \"complete\", \"error\" is returned from the queue\r\n }); \r\n }\r\n }\r\n\r\n private statusChanged(prevStatus: ProvisionJobStatus, curStatus: ProvisionJobStatus) {\r\n if (prevStatus == null && curStatus!= null) // <-- the initial previous status is always null\r\n return true;\r\n\r\n if (this.statusUpdatesComplete(prevStatus.status)) // <-- because status requests are asynchronous and on a timed interval it is possible to complete provisioning and get a response after it has completed.\r\n return false; // <-- if a status update comes back after provisioning has completed because of error or completion then ignore the empty queue status \r\n \r\n return !(prevStatus.location == curStatus.location &&\r\n prevStatus.message == curStatus.message &&\r\n prevStatus.jobid == curStatus.jobid &&\r\n prevStatus.companyid == curStatus.companyid &&\r\n prevStatus.percentComplete == curStatus.percentComplete &&\r\n prevStatus.status == curStatus.status &&\r\n prevStatus.userid == curStatus.userid);\r\n }\r\n\r\n private emitJobStatus(jobStatus: ProvisionJobStatus) {\r\n let statuses = this.jobStatuses$.value;\r\n statuses.push(jobStatus);\r\n this.jobStatuses$.next(statuses); // <-- centeralize emits to the job status stream\r\n }\r\n\r\n private statusUpdatesComplete(status: string) {\r\n return status == null ? false : [\"complete\", \"error\"].includes(status.toLowerCase());\r\n }\r\n\r\n private jobFinished(interval: number, takeCount: number, prevStatus: ProvisionJobStatus, curStatus: ProvisionJobStatus, statusReq: ProvisionJobStatusReq) : boolean {\r\n let status = curStatus == null ? null : curStatus?.status;\r\n\r\n if (prevStatus != null && this.statusUpdatesComplete(prevStatus.status)) // <-- beacause status requests are async it is possible to get an empty message queue response after status updates have completed \r\n status = prevStatus.status; // <-- so use the previous status if provisioning has completed to close the interval stream\r\n\r\n let isFinished = this.statusUpdatesComplete(status) ? true: interval > takeCount;\r\n\r\n if (interval > this._takeCount) // <-- timeout reached. close the stream\r\n this.emitJobStatus(this.createJobStatus(statusReq, \"timeout for checking status exceeded\", \"timeout\"));\r\n\r\n return isFinished;\r\n }\r\n\r\n private getJobStatus(statusReq: ProvisionJobStatusReq, resp: ApolloQueryResult) : ProvisionJobStatus {\r\n let jobStatus: ProvisionJobStatus;\r\n\r\n if (resp.data[\"getJobStatus\"].statusResponse.result.hasError) // <-- message queue data layer error\r\n return this.createJobStatus(statusReq, resp.data[\"getJobStatus\"].statusResponse.result.error, \"error\");\r\n\r\n if (resp.data[\"getJobStatus\"].statusResponse.result.message.body == null) // <-- the queue is empty. all messages have been read\r\n return this.createJobStatus(statusReq, \"message queue empty\", \"no-messages\"); \r\n \r\n jobStatus = JSON.parse(resp.data[\"getJobStatus\"].statusResponse.result.message.body); \r\n jobStatus.location = statusReq.location; // <-- return the job status from the provisioning system\r\n return jobStatus;\r\n }\r\n\r\n private getJobStatusInput(statusReq: ProvisionJobStatusReq) : GetJobStatusInput {\r\n let messageQueueAction = \"provisionselfservice\";\r\n let input: GetJobStatusInput = { status: JSON.stringify({ action: messageQueueAction, location: statusReq.location, messageid: statusReq.jobid }) };\r\n return input;\r\n }\r\n\r\n private createJobStatus(statusReq: ProvisionJobStatusReq, message: string, status: string) : ProvisionJobStatus{ \r\n return {\r\n jobid: statusReq.jobid, \r\n companyid: statusReq.companyid, \r\n userid: statusReq.userid, \r\n percentComplete: 0, \r\n location: statusReq.location,\r\n status: status, \r\n message: message,\r\n timestamp: new Date()\r\n }\r\n }\r\n\r\n private logError(error: any, context: string) : Observable {\r\n let correlationId = \"correlationId: \" + this.metricsSvc.correlationId;\r\n let errorContext = \"context: \" + context;\r\n this.logger.error(error.message, errorContext, correlationId);\r\n return of();\r\n }\r\n}\r\n\r\n","import { gql } from '../gql/graphql';\r\nimport { Injectable } from '@angular/core';\r\nimport { QueryRef } from 'apollo-angular';\r\nimport { GetComputeResponse } from '../gql/graphql/compute/schema/type';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class QueryRefService {\r\n \r\n _computeQueryRef: QueryRef;\r\n\r\n constructor() {\r\n }\r\n\r\n //#region Handle polling\r\n stopComputePolling() {\r\n this._computeQueryRef.stopPolling()\r\n }\r\n\r\n //#endregion\r\n}\r\n","import { OrderService } from './order.service';\r\nimport { N3TLogger } from '../_helpers/n3tlogger';\r\nimport { CartTotal } from \"../_models/cart-total\";\r\nimport { MetricsService } from './metrics.service';\r\nimport { CartProduct } from \"../_models/cart-product\";\r\nimport { CartStateTree } from \"../_models/cart-state-tree\";\r\nimport { Injectable, OnDestroy, Self } from \"@angular/core\";\r\nimport { BehaviorSubject, catchError, combineLatest, debounceTime, map, merge, Observable, of, scan, shareReplay, startWith, Subject, switchMap, tap } from \"rxjs\";\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ShoppingCartService implements OnDestroy {\r\n /* \r\n *** private members *** \r\n */\r\n private _cartAdd$ = new Subject();\r\n private _cartRemove$ = new Subject();\r\n private _aggregateTotal = new BehaviorSubject(true);\r\n private _clearcart$ = new BehaviorSubject(false);\r\n private _stateTree$ = new BehaviorSubject(null);\r\n private _selfServiceProducts = new Array();\r\n\r\n constructor(private logger: N3TLogger,\r\n private orderSvc: OrderService,\r\n private metricsSvc: MetricsService) { }\r\n\r\n ngOnDestroy(): void { } \r\n\r\n /*\r\n *** public members ***\r\n */\r\n public state$: Observable = this._stateTree$.pipe(\r\n switchMap(() => \r\n combineLatest([this.cart$, this._clearcart$, this._aggregateTotal]).pipe(debounceTime(0))), // <-- switch the state tree to 3 latest observables\r\n map(([cart, checkout]: any) => ({ cart, total: this.getTotal(cart), checkout })), // <-- map the 3 observables to the state tree interface\r\n tap(x => this._clearcart$.next(false)), // <-- if the cart was checked out reset the checkout flag as the cart has been emptied\r\n shareReplay(1), // <-- share result without side effects\r\n catchError(error => this.logError(error, \"shoppingcart.service.state$\")) // <-- log the error and correlation id\r\n )\r\n\r\n public addProduct(product: CartProduct) {\r\n if (product != null)\r\n product.prevQuantity = product.quantity;\r\n \r\n this._cartAdd$.next({ ...product }); // <-- use spread operator to keep function immmutable\r\n }\r\n \r\n public removeProduct(product: CartProduct) {\r\n this._cartRemove$.next({ ...product, remove: true }); // <-- use spread operator to keep function immmutable\r\n }\r\n\r\n public recalculateTotal() {\r\n this._aggregateTotal.next(true);\r\n }\r\n\r\n public checkout() {\r\n this.orderSvc.submitSelfServiceOrder(this._selfServiceProducts);\r\n this.clearCart();\r\n }\r\n\r\n public clearCart() {\r\n this._clearcart$.next(true);\r\n this.addProduct(null);\r\n }\r\n \r\n /*\r\n *** properties ***\r\n */\r\n private get cart$(): Observable {\r\n return merge(this._cartAdd$, this._cartRemove$).pipe(\r\n startWith([]),\r\n tap(x => { console.log(x)}),\r\n scan((acc: CartProduct[], item: CartProduct) => this.productsReducer(acc, item), []), // <-- use accumulator and reducer to combine streams into a single result\r\n catchError(error => this.logError(error, \"shoppingcart.service.cart$\")) // <-- log the error and correlation id\r\n );\r\n }\r\n\r\n /*\r\n *** observable helpers ***\r\n */\r\n private logError(error: any, context: string) : Observable {\r\n let correlationId = \"correlationId: \" + this.metricsSvc.correlationId;\r\n let errorContext = \"context: \" + context;\r\n this.logger.error(error.message, errorContext, correlationId);\r\n return of();\r\n }\r\n\r\n private getTotal(products: CartProduct[]) {\r\n let productsTotal = this.getProductsTotal(products);\r\n let grandTotal = this.getGrandTotal(productsTotal);\r\n return grandTotal;\r\n }\r\n\r\n private getProductsTotal(products: CartProduct[]) {\r\n let total = 0;\r\n for (const product of products) {\r\n // Have to handle adding in the Service Fee as well\r\n total += (product.calculatedCost); // * (1 + product.serviceLevelPercent/100)); //.price;\r\n }\r\n return { \r\n itemCount: products.length,\r\n subTotal: total,\r\n total: 0\r\n }\r\n }\r\n\r\n private getGrandTotal(cartTotal: CartTotal) {\r\n cartTotal.total = cartTotal.subTotal; // <-- add tax here, for now just add total\r\n return cartTotal;\r\n }\r\n\r\n private productsReducer(acc: CartProduct[], item: CartProduct) : CartProduct[] {\r\n if(this._clearcart$.value == true)\r\n return [];\r\n\r\n /* no item, so skip */\r\n if (!item)\r\n return [];\r\n\r\n /* item default is empty array, so skip */\r\n if (Array.isArray(item)) { \r\n this._selfServiceProducts = new Array();\r\n return [...acc]; // <-- use spread operator to keep function immmutable\r\n }\r\n\r\n if (item.remove == false && acc.find(x => this.productFilter(x, item)) != null) {\r\n let tmpProds = this.aggregateProduct(acc, item); // <-- if a unique product already exists in the cart aggregate the price and qty\r\n this._selfServiceProducts = tmpProds;\r\n return tmpProds;\r\n }\r\n else if (item.remove == false && acc.find(x => this.productFilter(x, item)) == null) {\r\n // First add of product...\r\n item.calculatedCost = this.calcCost(item, 0);\r\n }\r\n\r\n /* remove item flag set, filter out the removed item */\r\n if (item.remove) {\r\n let prods = [...acc.filter(i => !this.productFilter(i, item))];\r\n this._selfServiceProducts = prods;\r\n return prods;\r\n }\r\n\r\n this._selfServiceProducts = [...acc, item];\r\n return [...acc, item]; // <-- use spread operator to keep function immmutable\r\n }\r\n\r\n private productFilter(product: CartProduct, productToFilter: CartProduct) : boolean\r\n {\r\n return (product.selfServiceId == productToFilter.selfServiceId && \r\n product.vdcid == productToFilter.vdcid &&\r\n product.datacenter == productToFilter.datacenter && \r\n product.serviceName == productToFilter.serviceName);\r\n }\r\n\r\n private aggregateProduct(products: CartProduct[], product: CartProduct) : CartProduct[] {\r\n products.forEach(x => {\r\n if (this.productFilter(x, product)) {\r\n //x.price += product.price\r\n x.calculatedCost = this.calcCost(product, x.calculatedCost);\r\n x.quantity += product.quantity;\r\n }\r\n });\r\n\r\n return [...products];\r\n }\r\n\r\n private calcCost(item: CartProduct, existingCost: number): number {\r\n let newCost: number;\r\n if (isNaN(existingCost)) {\r\n existingCost = 0;\r\n }\r\n\r\n newCost = existingCost + (item.quantity * (item.price * (1 - item.discount/100)) * (1 + item.serviceLevelPercent/100));\r\n return newCost;\r\n }\r\n}","import { GetTasksInput } from '@app/core/gql/graphql/compute/schema/input/getTasksInput';\nimport { GetAllTasksInput } from '@app/core/gql/graphql/compute/schema/input/getAllTasksInput';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { N3TStore } from './n3tStore.service';\nimport { Task } from '../gql/graphql/compute/schema/type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TasksService {\n tasksListChange$ = new Subject();\n private tasksList = new Array();\n tasks$: Observable;\n isPolling: boolean = false;\n tasksQueryRef: any;\n\n constructor(\n private n3tStore: N3TStore\n ) { }\n\n getTasks(): Observable {\n this.tasks$ = this.n3tStore.selectTasks();\n this.tasks$.subscribe();\n\n return this.tasks$;\n \n // .pipe(map(data => {\n // this.tasksList = data;\n // this.tasksListChange$.next(this.tasksList);\n // }));\n };\n\n addTask(task: Task) {\n // this.tasksList.push(task);\n // this.tasksListChange$.next(this.tasksList);\n // this.n3tStore.setTasks(this.tasksList);\n this.n3tStore.setTask(task);\n\n }\n\n retrieveTasks(getAllTasksInput: GetAllTasksInput, pollingInterval: number = 0) {\n this.isPolling = pollingInterval > 0;\n this.n3tStore.dispatchGetAllTasks(getAllTasksInput, pollingInterval);\n }\n\n updateTask(task: Task) {\n this.n3tStore.upsertTask(task);\n }\n\n cleanupTasksPolling() {\n if (this.tasksQueryRef !== undefined) {\n this.tasksQueryRef.stopPolling();\n }\n }\n\n}\n","import { ɵɵdefineInjectable, Injectable } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { UUID } from 'angular2-uuid';\n\nimport * as ɵngcc0 from '@angular/core';\nclass SimpleTimer {\n constructor() {\n this.timers = {};\n this.subscription = {};\n }\n getTimer() {\n return Object.keys(this.timers);\n }\n getSubscription() {\n return Object.keys(this.subscription);\n }\n newTimer(name, sec, delay = false) {\n if (name === undefined || sec === undefined || this.timers[name]) {\n return false;\n }\n let t;\n if (delay) {\n t = timer(sec * 1000, sec * 1000);\n }\n else {\n t = timer(0, sec * 1000);\n }\n this.timers[name] = { second: sec, t: t };\n return true;\n }\n newTimerCD(name, sec, delay = 0) {\n if (name === undefined || sec === undefined || this.timers[name]) {\n return false;\n }\n let t;\n t = timer(delay * 1000, sec * 1000);\n this.timers[name] = { second: sec, t: t };\n return true;\n }\n newTimerHR(name, msec, delay = 0) {\n if (name === undefined || msec === undefined || this.timers[name]) {\n return false;\n }\n let t;\n t = timer(delay, msec);\n this.timers[name] = { second: msec, t: t };\n return true;\n }\n delTimer(name) {\n if (name === undefined || !this.timers[name]) {\n return false;\n }\n let s = this.getSubscription();\n // unsubscribe all subscription for queue 'name'\n s.forEach(i => {\n if (this.subscription[i].name === name) {\n this.unsubscribe(i);\n }\n });\n // delete queue 'name' subject and observable\n delete this.timers[name].t;\n delete this.timers[name];\n }\n /**\n *\n * @param name\n * @param callback\n */\n subscribe(name, callback) {\n if (!this.timers[name]) {\n return '';\n }\n let id = name + '-' + UUID.UUID();\n this.subscription[id] = {\n name: name,\n subscription: this.timers[name].t.subscribe(callback)\n };\n return id;\n }\n /**\n *\n * @param id\n */\n unsubscribe(id) {\n if (!id || !this.subscription[id]) {\n return false;\n }\n this.subscription[id].subscription.unsubscribe();\n delete this.subscription[id];\n }\n}\nSimpleTimer.ɵfac = function SimpleTimer_Factory(t) { return new (t || SimpleTimer)(); };\nSimpleTimer.ɵprov = ɵɵdefineInjectable({ factory: function SimpleTimer_Factory() { return new SimpleTimer(); }, token: SimpleTimer, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SimpleTimer, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/*\n * Public API Surface of ng2-simple-timer\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SimpleTimer };\n\n","import { Injectable } from '@angular/core';\nimport {SimpleTimer} from 'ng2-simple-timer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TimerService {\n\n constructor(private st: SimpleTimer) { }\n\n createNewTimer(name: string, sec: number, callback: () => void, delay: boolean = false): string {\n \n //create timer if it doesn't already exist\n this.newTimer(name, sec, delay);\n\n let timerId: string = this.subscribe(name, callback);\n\n return timerId;\n }\n\n newTimer(name: string, sec: number, delay: boolean = false): boolean {\n return this.st.newTimer(name, sec, delay);\n }\n newTimerCD(name: string, sec: number, delay: number = 0): boolean {\n return this.st.newTimerCD(name, sec, delay);\n }\n newTimerHR(name: string, msec: number, delay: number = 0): boolean {\n return this.st.newTimerHR(name, msec, delay);\n }\n delTimer(name: string): boolean {\n return this.st.delTimer(name);\n }\n getTimer(): string[] {\n return this.st.getTimer();\n }\n getSubscription(): string[] {\n return this.st.getSubscription();\n }\n subscribe(name: string, callback: () => void): string {\n return this.st.subscribe(name, callback);\n }\n unsubscribe(id: string): boolean {\n return this.st.unsubscribe(id);\n }\n\n\n}\n","import { TypeMembershipInput } from './index';\r\n\r\nexport class CreateUserMembershipInput {\r\n membership: TypeMembershipInput\r\n}","import { TypeMembershipAttributeInput } from './index';\r\n\r\nexport class TypeLoginInput {\r\n \r\n\tPasscode: string; \r\n\tPresharedKey: string; \r\n\tUseTwoFactorAuth: boolean; \r\n\tAttributes: TypeMembershipAttributeInput[]; \r\n\tPermissions: string[]; \r\n\tRoles: string[];\r\n\tSessionId: string; \r\n\tRights: string[]; \r\n\tStatus: number;\r\n\tCompanyId: string; \r\n\tId: string; \r\n\tCompanyName: string; \r\n\tApplicationId: string; \r\n\tApplicationName: string; \r\n\tDatacenterLocation: string; \r\n\tLocation: string; \r\n\tLocationType: string; \r\n\tDatacenterURL: string; \r\n\tPassword: string; \r\n\tUsername: string; \r\n\tUserId: string; \r\n\tMembershipId: number; \r\n\tApplicationLocationId: string; \r\n\tFirstName: string;\r\n\tLastName: string;\r\n}","\r\n\r\nexport class TypeMembershipInput {\r\n IsEncrypted: boolean;\r\n Comment: string;\r\n FailedPasswordAnswerAttemptWindowStart: string;\r\n FailedPasswordAnswerAttemptCount: number;\r\n FailedPasswordAttemptWindowStart: string;\r\n FailedPasswordAttemptCount: number;\r\n LastLockoutDate: string;\r\n LastPasswordChangedDate: string;\r\n LastLoginDate: string;\r\n CreateDate: Date;\r\n IsLockedOut: boolean;\r\n IsApproved: boolean;\r\n PasswordAnswer: string;\r\n PasswordQuestion: string;\r\n LoweredEmail: string;\r\n Email: string;\r\n MobilePIN: string;\r\n PasswordSale: string;\r\n PasswordFormat: number;\r\n Password: string;\r\n Username: string;\r\n UserId: string;\r\n ApplicationLocationId: string;\r\n ApplicationId: string;\r\n MembershipId: number;\r\n IsDefault: boolean;\r\n UpdatePassword: boolean;\r\n FirstName: string;\r\n LastName: string;\r\n }","import { Org } from './../_models/org';\r\nimport { CreateProviderMembershipInput } from './../gql/graphql/permissions/schema/input/createProviderMembershipInput';\r\nimport { CloudPermission } from '@app/core/gql/graphql/keycloak/schema/type/cloudPermission';\r\nimport { CloudRole, DatacenterLocations, DatacenterLocationsString } from '@app/core/_models/enums';\r\nimport { CreateUserMembershipInput } from './../gql/graphql/permissions/schema/input/createUserMembershipInput';\r\nimport { UpdateUserMembershipResponse } from '@app/core/gql/graphql/login/schema/type/updateUserMembershipResponse';\r\nimport { CreatePortalMembershipInput, GetCompanyUsersInput, TypeLoginInput, TypeMembershipInput, UpdateRolesByUserInput } from '@app/core/gql/graphql/permissions/schema/input/';\r\nimport { Injectable, OnDestroy, PipeTransform } from '@angular/core';\r\nimport { N3TStore } from './n3tStore.service';\r\nimport { AuthUser, DropDownHelper } from '../_models';\r\nimport { Roles, TypeUser } from '../gql/graphql/permissions/schema/type';\r\nimport { Observable, BehaviorSubject, Subject, of } from 'rxjs';\r\nimport { Membership } from '../gql/graphql/login/schema/type';\r\nimport { App } from '../gql/graphql/shared/schema/enums';\r\nimport { SubSink } from 'subsink';\r\nimport * as _ from 'underscore';\r\nimport { GqlService } from '.';\r\n\r\nimport {debounceTime, delay, switchMap, take, tap} from 'rxjs/operators';\r\n//import {SortColumn, SortDirection} from '../_directives/sortable.directive';\r\n//import { DecimalPipe } from '@angular/common';\r\n\r\ninterface SearchResult {\r\n users: TypeUser[];\r\n total: number;\r\n}\r\n \r\ninterface State {\r\n page: number;\r\n pageSize: number;\r\n searchTerm: string;\r\n // sortColumn: SortColumn;\r\n // sortDirection: SortDirection;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserService implements OnDestroy {\r\n private sub = new SubSink();\r\n\r\n user$ = new BehaviorSubject(new AuthUser());\r\n orgs$ = new BehaviorSubject(new Array());\r\n memberships$ = new BehaviorSubject(new Array());\r\n companyUsers$ = new BehaviorSubject(new Array());\r\n\r\n private _loading$ = new BehaviorSubject(true);\r\n private _search$ = new Subject();\r\n private _users$ = new BehaviorSubject([]);\r\n private _total$ = new BehaviorSubject(0);\r\n \r\n private _state: State = {\r\n page: 1,\r\n pageSize: 4,\r\n searchTerm: '',\r\n// sortColumn: '',\r\n// sortDirection: ''\r\n };\r\n\r\n private _roles$: BehaviorSubject = new BehaviorSubject([\r\n { id: 'User', role: 'User', roleId: 'User' },\r\n { id: 'Admin', role: 'Admin', roleId: 'Admin' },\r\n { id: 'BillingAdmin', role: 'Billing Admin', roleId: 'BillingAdmin' },\r\n { id: 'ChannelAdmin', role: 'Channel Admin', roleId: 'ChannelAdmin' },\r\n ]);\r\n\r\n\r\n\r\n constructor (\r\n private n3tStore: N3TStore,\r\n private gqlService: GqlService,\r\n //private pipe: DecimalPipe\r\n ) \r\n {\r\n this.sub.sink = this.n3tStore.selectUser().subscribe(result => {\r\n this.user$.next(result);\r\n this.getCompanyUsers(result.companyId.toString());\r\n });\r\n\r\n this.sub.sink = this.n3tStore.selectOrgs().subscribe(result => {\r\n this.orgs$.next(result);\r\n });\r\n\r\n this.sub.sink = this.n3tStore.selectMembeships().subscribe(result => {\r\n this.memberships$.next(result);\r\n });\r\n\r\n this.sub.sink = this.n3tStore.selectRoles().subscribe(result => {\r\n this._roles$.next(result);\r\n })\r\n\r\n\r\n //\r\n this._search$.pipe(\r\n tap(() => this._loading$.next(true)),\r\n debounceTime(200),\r\n switchMap(() => this._search()),\r\n delay(200),\r\n tap(() => this._loading$.next(false))\r\n ).subscribe(result => {\r\n this._users$.next(result.users);\r\n this._total$.next(result.total);\r\n });\r\n \r\n this._search$.next();\r\n }\r\n\r\n // new stuff...\r\n\r\n get roles$() { return this._roles$.asObservable();}\r\n //set roles$(roles: any[]) { this._roles$.next(roles)}\r\n\r\n get users$() { return this._users$.asObservable(); }\r\n get total$() { return this._total$.asObservable(); }\r\n get loading$() { return this._loading$.asObservable(); }\r\n get page() { return this._state.page; }\r\n get pageSize() { return this._state.pageSize; }\r\n get searchTerm() { return this._state.searchTerm; }\r\n \r\n set page(page: number) { this._set({page}); }\r\n set pageSize(pageSize: number) { this._set({pageSize}); }\r\n set searchTerm(searchTerm: string) { this._set({searchTerm}); }\r\n// set sortColumn(sortColumn: SortColumn) { this._set({sortColumn}); }\r\n// set sortDirection(sortDirection: SortDirection) { this._set({sortDirection}); }\r\n \r\n private _set(patch: Partial) {\r\n Object.assign(this._state, patch);\r\n this._search$.next();\r\n }\r\n \r\n private _search(): Observable {\r\n// const {sortColumn, sortDirection, pageSize, page, searchTerm} = this._state;\r\n \r\n // 1. sort\r\n let users = []; //sort(COUNTRIES, sortColumn, sortDirection);\r\n \r\n // 2. filter\r\n// users = users.filter(country => matches(country, searchTerm, this.pipe));\r\n const total = users.length;\r\n \r\n // 3. paginate\r\n// users = users.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize);\r\n return of({users, total});\r\n }\r\n\r\n // end new stuff\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n updateUser(user: UpdateUserMembershipResponse) {\r\n \r\n }\r\n\r\n updateAuthUserRoles(user: AuthUser, updateRolesByUserInput: UpdateRolesByUserInput) {\r\n this.n3tStore.dispatchUpdateAuthUserRoles(user, updateRolesByUserInput.roles); \r\n }\r\n\r\n updateCompanyUserRoles(user: TypeUser, roles: Roles[]) {\r\n this.n3tStore.dispatchUpdateCompanyUserRoles(user, roles);\r\n }\r\n\r\n getCompanyUsers(companyId: string) {\r\n let getCompanyUsersInput = new GetCompanyUsersInput;\r\n getCompanyUsersInput.companyId = companyId; //user.companyId.toString();\r\n \r\n this.n3tStore.dispatchGetCompanyUsers(getCompanyUsersInput);\r\n\r\n this.sub.sink = this.n3tStore.selectCompanyUsers().subscribe((data) => {\r\n this.companyUsers$.next(data);\r\n });\r\n }\r\n\r\n doesUserExist(email: string): boolean {\r\n let exists = false;\r\n\r\n var foo = _.find(this.companyUsers$.value, function(u) {\r\n return u.email === email;\r\n })\r\n\r\n if (foo !== undefined) {\r\n exists = true;\r\n } else {\r\n exists = false;\r\n }\r\n\r\n return exists;\r\n }\r\n\r\n createOrUpdateUser(user: TypeUser, rolesPortal?: Roles[], cloudPermissions?: CloudPermission[]) {\r\n this.sub.sink = this.n3tStore.selectCompany().pipe(take(1)).subscribe(result => {\r\n user.companyId = result.companyId.toString();\r\n user.isActive = true;\r\n\r\n if (user.userId === undefined || user.userId === null || rolesPortal === undefined || cloudPermissions === undefined) {\r\n this.n3tStore.upsertCompanyUser(user); \r\n } else if (rolesPortal !== undefined && cloudPermissions !== undefined) {\r\n this.n3tStore.upsertCompanyUser(user, result.companyNameShort.toLowerCase(), rolesPortal, cloudPermissions);\r\n }\r\n });\r\n }\r\n\r\n deleteUser(userId: string, userEmail: string) { \r\n this.n3tStore.deleteCompanyUserAndMemberships(userId, userEmail);\r\n }\r\n\r\n composeVCDGroupForUser(location: DatacenterLocationsString, cloudRole: CloudRole): string {\r\n let groupName = \"\";\r\n \r\n this.sub.sink = this.n3tStore.selectCompany().subscribe(result => {\r\n let cns = result.companyNameShort.toLowerCase();\r\n\r\n groupName = cns + \"/\" + \"VCD/\" + location + \"/\" + CloudRole[cloudRole].toString();\r\n });\r\n\r\n return groupName;\r\n }\r\n\r\n rolesToString(roles: Roles[]): string {\r\n let roleString = \"\";\r\n roles.forEach(role => { \r\n roleString += role.role + \",\";\r\n });\r\n\r\n if (roleString.length > 1) {\r\n roleString = roleString.slice(0, roleString.length -1);\r\n }\r\n\r\n return roleString;\r\n }\r\n\r\n locationsToGroups(locs: DropDownHelper[]): string[] {\r\n let groupsOut = new Array();\r\n locs.forEach(location => {\r\n groupsOut.push(this.composeVCDGroupForUser(DatacenterLocationsString[location.value], CloudRole.OrganizationAdministrator));\r\n });\r\n\r\n return groupsOut;\r\n }\r\n\r\n getAvailableComputeLocations(): DropDownHelper[] {\r\n let locationsOut = new Array();\r\n\r\n this.sub.sink = this.n3tStore.selectOrgs().subscribe(data => {\r\n data.forEach(org => {\r\n switch (DatacenterLocations[org.datacenterLocation].toString()) {\r\n case DatacenterLocations.ATL.toString():\r\n locationsOut.push({name: \"ATL - pvdc-east2\", value: \"ATL\"});\r\n break;\r\n case DatacenterLocations.SPA.toString():\r\n locationsOut.push({name: \"SPA - pvdc-east1\", value: \"SPA\"});\r\n break;\r\n case DatacenterLocations.LAS.toString():\r\n locationsOut.push({name: \"LAS - pvdc-west1\", value: \"LAS\"});\r\n break;\r\n case DatacenterLocations.DEV.toString():\r\n locationsOut.push({name: \"DEV - pvdc-east1\", value: \"DEV\"});\r\n break;\r\n case DatacenterLocations.UAT.toString():\r\n locationsOut.push({name: \"UAT - pvdc-east1\", value: \"UAT\"});\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n });\r\n\r\n return locationsOut;\r\n }\r\n\r\n parseLocationFromDatacenter(datacenterLoc: string): string {\r\n let locOut = \"\";\r\n\r\n switch (datacenterLoc.toUpperCase()) {\r\n case \"ATL\":\r\n locOut = \"ATL - pvdc-east2\";\r\n break;\r\n case \"SPA\":\r\n locOut = \"SPA - pvdc-east1\";\r\n break;\r\n case \"LAS\":\r\n locOut = \"LAS - pvdc-west1\";\r\n break;\r\n case \"DEV\":\r\n locOut = \"DEV - pvdc-east1\";\r\n break;\r\n case \"UAT\":\r\n locOut = \"UAT - pvdc-east1\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return locOut;\r\n }\r\n\r\n createMembership(user: TypeUser): Membership {\r\n let membership = new Membership();\r\n \r\n let portalAppId = \"b7f56a8a-b80e-40df-9dcd-29926ee9f24f\";\r\n let portalAppLocationId = \"88d4b61a-2bc0-4cf9-bb9f-6167195c1023\";\r\n let appName = \"N3TLoginPortal\";\r\n\r\n membership.applicationId = portalAppId;\r\n membership.applicationName = appName;\r\n membership.locationId = portalAppLocationId;\r\n membership.username = user.email;\r\n membership.userId = user.userId;\r\n membership.isApproved = true;\r\n membership.isLockedOut = false;\r\n membership.isDefault = true;\r\n membership.isEncrypted = false;\r\n membership.password = \"\";\r\n \r\n return membership;\r\n }\r\n\r\n createDefaultPortalMembership(user: TypeUser): CreatePortalMembershipInput {\r\n let membership = new CreatePortalMembershipInput();\r\n \r\n let portalAppId = \"b7f56a8a-b80e-40df-9dcd-29926ee9f24f\";\r\n let portalAppLocationId = \"88d4b61a-2bc0-4cf9-bb9f-6167195c1023\";\r\n let appName = \"N3TLoginPortal\";\r\n\r\n membership.ApplicationId = portalAppId;\r\n membership.ApplicationLocationId = portalAppLocationId;\r\n membership.Username = user.email;\r\n membership.UserId = user.userId;\r\n membership.IsApproved = true;\r\n membership.IsLockedOut = false;\r\n membership.IsDefault = true;\r\n membership.IsEncrypted = false;\r\n membership.Password = \"\";\r\n \r\n return membership;\r\n }\r\n\r\n createProviderMembershipInput(user: TypeUser, cloudPermission: CloudPermission): CreateProviderMembershipInput {\r\n let input = new CreateProviderMembershipInput();\r\n\r\n if (cloudPermission.app === App.vCloudDirector) {\r\n var orgNeeded = _.find(this.orgs$.value, function(o) {\r\n return o.datacenterLocation.toString() == cloudPermission.datacenterLocation; \r\n });\r\n\r\n if (orgNeeded !== undefined) {\r\n input.orgId = orgNeeded?.id;\r\n input.sessionId = \"\";\r\n\r\n input.user = this.buildTypeLoginInput(user, cloudPermission.datacenterLocation);\r\n }\r\n }\r\n\r\n return input;\r\n }\r\n\r\n buildTypeLoginInput(user: TypeUser, datacenterLocation: string): TypeLoginInput {\r\n let membershipNeeded = _.findWhere(this.memberships$.value, {datacenterCode: datacenterLocation, applicationName: \"vCloudDirector\"});\r\n \r\n let loginInput = new TypeLoginInput();\r\n\r\n loginInput.UserId = user.userId;\r\n loginInput.Username = \"i_\" + user.email; // + \"@\" + org;\r\n loginInput.Password = this.generateRandomPassword();\r\n loginInput.DatacenterURL = \"https://\" + membershipNeeded.location;\r\n loginInput.DatacenterLocation = datacenterLocation;\r\n loginInput.ApplicationName = membershipNeeded.applicationName;\r\n loginInput.ApplicationId = membershipNeeded.applicationId;\r\n loginInput.ApplicationLocationId = membershipNeeded.locationId;\r\n loginInput.CompanyId = user.companyId;\r\n loginInput.FirstName = user.firstName;\r\n loginInput.LastName = user.lastName;\r\n\r\n return loginInput;\r\n }\r\n\r\n createUserMembershipInput(user: TypeUser, permission: CloudPermission, pwd: string): CreateUserMembershipInput {\r\n let input = new CreateUserMembershipInput();\r\n input.membership = new TypeMembershipInput();\r\n \r\n let membership = _.find(this.memberships$.value, function(memb) { \r\n return memb.datacenterCode == DatacenterLocationsString[permission.datacenterLocation].toString() && memb.applicationName == App[permission.app].toString();\r\n });\r\n\r\n if (permission.app === App.vCloudDirector) {\r\n var orgNeeded = _.find(this.orgs$.value, function(o) {\r\n return o.datacenterLocation.toString() == permission.datacenterLocation; \r\n });\r\n\r\n if (orgNeeded !== undefined) {\r\n input.membership.Comment = \"Created by N3T Customer Portal\";\r\n input.membership.ApplicationId = membership.applicationId;\r\n input.membership.ApplicationLocationId = membership.locationId;\r\n input.membership.Email = user.email;\r\n input.membership.CreateDate = new Date();\r\n input.membership.IsApproved = true;\r\n input.membership.IsDefault = false;\r\n input.membership.IsEncrypted = true;\r\n input.membership.IsLockedOut = false;\r\n input.membership.UserId = user.userId;\r\n input.membership.Username = \"i_\" + user.email + \"@\" + orgNeeded.name;\r\n input.membership.Password = pwd; // this.generateRandomPassword();\r\n }\r\n }\r\n\r\n return input;\r\n }\r\n\r\n getCurrentLocationsForUser(userEmail): Observable {\r\n return null;\r\n }\r\n\r\n isProtectedUser(userEmail: string): boolean {\r\n let isProtected = false;\r\n\r\n switch (userEmail.toLowerCase()) {\r\n case \"billingadmin@n3t.com\":\r\n isProtected = true;\r\n break;\r\n case \"billingadmin\":\r\n isProtected = true;\r\n break;\r\n case \"channeladmin@n3t.com\":\r\n isProtected = true;\r\n break;\r\n case \"channeladmin\":\r\n isProtected = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return isProtected;\r\n }\r\n\r\n //#region Password generation\r\n\r\n passwordLength = 0;\r\n password = '';\r\n upperCaseArray: Array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',\r\n 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',\r\n 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];\r\n\r\n lowerCaseArray: Array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',\r\n 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',\r\n 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];\r\n\r\n numbersArray: Array = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\r\n\r\n symbolsArray: Array = ['!', '@', '#', '$']; //, '%', '^', '&', '*', '(', ')', '_', '-', '+', '=', '{', '}', '[', ']', '|', '\\\\', ':', ';', '\"', '\\'', '<', '>', ',', '.', '?', '/', '`', '~'];\r\n\r\n upperLowerArray: Array;\r\n numbersSymbolsArray: Array;\r\n upperLowerSymbolsNumbersArray: Array;\r\n temp: number;\r\n\r\n generateRandomPassword() {\r\n var pwd = \"\";\r\n //this.password = \"\";\r\n\r\n this.passwordLength = this.getRandomInt(12, 16);\r\n\r\n for (var i = 0; i < this.passwordLength; i++) {\r\n\r\n this.upperLowerArray = this.upperCaseArray.concat(this.lowerCaseArray);\r\n this.numbersSymbolsArray = this.numbersArray.concat(this.symbolsArray);\r\n this.upperLowerSymbolsNumbersArray = this.upperLowerArray.concat(this.numbersSymbolsArray);\r\n this.temp = Math.floor(Math.random() * this.upperLowerSymbolsNumbersArray.length);\r\n pwd += this.upperLowerSymbolsNumbersArray[this.temp];\r\n }\r\n\r\n return pwd;\r\n }\r\n\r\n // Returns a random integer between min and max\r\n // Using Math.round() will give you a non-uniform distribution!\r\n getRandomInt(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n //#endregion END password generation\r\n\r\n}","
\n \n \n
\n \n \n \n \n\n \n\n
\n \n
\n \n
{{question.label}} is required
\n
","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { QuestionBase } from '@app/core/_models';\n\n@Component({\n selector: 'pvdc-dynamic-form-question',\n templateUrl: './dynamic-form-question.component.html',\n styleUrls: ['./dynamic-form-question.component.scss']\n})\nexport class DynamicFormQuestionComponent implements OnInit {\n\n @Input() question!: QuestionBase;\n @Input() form!: FormGroup;\n get isValid() { return this.form.controls[this.question.key].valid; }\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}","
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n
\n Saved the following values
{{payLoad}}\n
\n
","import { ProductsService } from '@app/core/_services/products.service';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\n\nimport { QuestionBase } from '@app/core/_models';\nimport { QuestionControlService, QuestionService } from '@app/core/_services';\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\nimport { Observable, of } from 'rxjs';\nimport { TypeCostOrder } from '@app/core/gql/graphql/products/schema/type';\n\n@Component({\n selector: 'pvdc-dynamic-form',\n templateUrl: './dynamic-form.component.html',\n styleUrls: ['./dynamic-form.component.scss'],\n providers: [ QuestionControlService ]\n})\nexport class DynamicFormComponent implements OnInit {\n\n @Input() questions: QuestionBase[] | null = [];\n form!: FormGroup;\n payLoad = '';\n qs$: Observable[]>;\n\n costs$: Observable>;\n\n constructor(\n private questionService: QuestionService,\n private qcs: QuestionControlService,\n private n3tStore: N3TStore,\n private productsService: ProductsService,\n ) {}\n\n ngOnInit() {\n if (this.questions !== null) {\n this.form = this.qcs.toFormGroup(this.questions as QuestionBase[]);\n } else {\n this.form = new FormGroup({\n first: new FormControl('Nancy', Validators.minLength(2)),\n last: new FormControl('Drew'),\n });\n\n // Here we get the selected Templates and use it to generate the form from the value\n let temps = this.n3tStore.selectSelectedTemplates();\n temps.subscribe(data => {\n if (data.length > 0) {\n this.qs$ = this.questionService.getQuestionsFromTemplate(data);\n this.qs$.subscribe(data => {\n if (data.length > 0) {\n this.form = this.qcs.toFormGroup(data as QuestionBase[]);\n }\n });\n }\n });\n\n }\n }\n\n\n calcCosts() {\n this.payLoad = JSON.stringify(this.form.getRawValue());\n\n let foo = this.questionService.setTemplatesFromAnswers(this.form.getRawValue());\n\n this.costs$ = of(this.productsService.getCostEstimate(foo));\n this.costs$.subscribe();\n\n// let productInput = this.productsService.convertTemplateToProducts(foo[0]);\n \n\n }\n\n\n\n}\n","
\n ×\n \n
\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\nimport { Router, NavigationStart } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { Alert, AlertType } from '@app/core/_models';\nimport { AlertService } from '@app/core/_services';\n\n// tslint:disable-next-line: component-selector\n@Component({ selector: 'alert', templateUrl: 'alert.component.html' })\nexport class AlertComponent implements OnInit, OnDestroy {\n @Input() id = 'default-alert';\n @Input() fade = true;\n\n alerts: Alert[] = [];\n alertSubscription: Subscription;\n routeSubscription: Subscription;\n\n constructor(private router: Router, private alertService: AlertService) { }\n\n ngOnInit() {\n // subscribe to new alert notifications\n this.alertSubscription = this.alertService.onAlert(this.id)\n .subscribe(alert => {\n // clear alerts when an empty alert is received\n if (!alert.message) {\n // filter out alerts without 'keepAfterRouteChange' flag\n this.alerts = this.alerts.filter(x => x.keepAfterRouteChange);\n\n // remove 'keepAfterRouteChange' flag on the rest\n this.alerts.forEach(x => delete x.keepAfterRouteChange);\n return;\n }\n\n // add alert to array\n this.alerts.push(alert);\n\n // auto close alert if required\n if (alert.autoClose) {\n setTimeout(() => this.removeAlert(alert), 3000);\n }\n });\n\n // clear alerts on location change\n this.routeSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.alertService.clear(this.id);\n }\n });\n }\n\n ngOnDestroy() {\n // unsubscribe to avoid memory leaks\n this.alertSubscription.unsubscribe();\n this.routeSubscription.unsubscribe();\n }\n\n removeAlert(alert: Alert) {\n // check if already removed to prevent error on auto close\n if (!this.alerts.includes(alert)) { return; }\n\n if (this.fade) {\n // fade out alert\n this.alerts.find(x => x === alert).fade = true;\n\n // remove alert after faded out\n setTimeout(() => {\n this.alerts = this.alerts.filter(x => x !== alert);\n }, 250);\n } else {\n // remove alert\n this.alerts = this.alerts.filter(x => x !== alert);\n }\n }\n\n cssClass(alert: Alert) {\n if (!alert) { return; }\n\n const classes = ['alert', 'alert-dismissable', 'mt-4', 'container'];\n\n const alertTypeClass = {\n [AlertType.Success]: 'alert alert-success',\n [AlertType.Error]: 'alert alert-danger',\n [AlertType.Info]: 'alert alert-info',\n [AlertType.Warning]: 'alert alert-warning'\n };\n\n classes.push(alertTypeClass[alert.type]);\n\n if (alert.fade) {\n classes.push('fade');\n }\n\n return classes.join(' ');\n }\n}\n","\n \n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - 0\">{{vdc.memoryLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuUsedMhz / 1000 | number}} GHz - 0\">{{vdc.cpuLimitMhz / 1000 | number}} GHz
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - {{vdc.memoryAllocationMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuAllocationMhz / 1000 | number}} GHz
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - 0\">{{vdc.memoryLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuUsedMhz / 1000 | number}} GHz - 0\">{{vdc.cpuLimitMhz / 1000 | number}} GHz
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - {{vdc.memoryAllocationMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuAllocationMhz / 1000 | number}} GHz\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - 0\">{{vdc.memoryLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuUsedMhz / 1000 | number}} GHz - 0\">{{vdc.cpuLimitMhz / 1000 | number}} GHz \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - {{vdc.memoryAllocationMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuAllocationMhz / 1000 | number}} GHz\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - 0\">{{vdc.memoryLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuUsedMhz / 1000 | number}} GHz - 0\">{{vdc.cpuLimitMhz / 1000 | number}} GHz \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - {{vdc.memoryAllocationMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuAllocationMhz / 1000 | number}} GHz\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - 0\">{{vdc.memoryLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuUsedMhz / 1000 | number}} GHz - 0\">{{vdc.cpuLimitMhz / 1000 | number}} GHz \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n {{vdc.storageUsedMB / 1024 | number}} GB - {{vdc.storageLimitMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.memoryUsedMB / 1024 | number}} GB - {{vdc.memoryAllocationMB / 1024 | number}} GB
\n
\n
\n
\n \n
\n
\n {{vdc.cpuAllocationMhz / 1000 | number}} GHz\n
\n
\n
\n
\n
\n \n \n This is AWS...and...where is stuff? ;)\n \n \n \n \n This is GCP...and...where is stuff? ;)\n \n \n \n \n This is AZU...and...where is stuff? ;)\n \n \n \n Need to do default...\n \n
","import { Component, OnInit, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { VDC } from '@app/core/gql/graphql/compute/schema/type';\n\n@Component({\n // tslint:disable-next-line: component-selector\n selector: 'pvdc-vdcstats',\n templateUrl: './vdcstats.component.html',\n styleUrls: ['./vdcstats.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VdcstatsComponent implements OnInit {\n @Input() vdc: VDC;\n gaugeType: string = \"arch\";\n foregroundColor: string = \"rgba(232, 83, 48, 1)\";\n size: number = 125;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n roundStat(statIn: number): number {\n return Math.round(statIn);\n }\n\n}\n","
\n \n
\n \n
{{ vm.name }}
\n\n
\n
\n \n
\n
\n
\n \n Oh Man! {{ errorMsg }}\n \n
\n \n
\n \n \n \n \n \n  \n \n \n
\n\n
\n
\n\n","import { N3TStore } from '@app/core/_services/n3tStore.service';\nimport { ChannelService } from './../../_services/channel.service';\nimport { AuthenticationService } from './../../_services/authentication.service';\nimport { ComputeService } from '@app/core/_services/compute.service';\nimport { Component, OnInit, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { TypeVMSnapshot, VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { App, DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\nimport { Router } from '@angular/router';\nimport { CloudmanageService } from '@app/core/_services/cloudmanage.service';\n\n@Component({\n selector: 'pvdc-workload',\n templateUrl: './workload.component.html',\n styleUrls: ['./workload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WorkloadComponent implements OnInit {\n @Input() vm: VMFlat;\n loadingConsole: boolean = false;\n error: boolean = false;\n errorMsg: string = \"\";\n hasSnap: boolean = false;\n\n constructor(\n private computeService: ComputeService,\n private cloudmanageService: CloudmanageService, \n private router: Router,\n private authenticationService: AuthenticationService,\n private channelService: ChannelService,\n private store: N3TStore\n ) { }\n\n ngOnInit(): void {\n this.checkSnapshot();\n }\n\n getFriendlyOSName(nameIn: string): string {\n return this.computeService.shortenOS(nameIn);\n }\n\n getDatacenterIcon(datacenter: string): string {\n return this.computeService.getDatacenterIcon(datacenter);\n }\n\n getProvider(datacenter: DatacenterLocations): App {\n return this.cloudmanageService.getDatacenterTarget(DatacenterLocations[datacenter]);\n }\n\n getLocationColor(datacenter: DatacenterLocations): string {\n return this.cloudmanageService.getLocationColor(DatacenterLocations[datacenter]);\n }\n \n isPvDC(datacenter: DatacenterLocations): boolean {\n return this.computeService.isPvDC(datacenter);\n }\n //#region VM Details\n\n vmDetails(vmId: string) {\n this.router.navigate(['/cloudmanage/compute/vm'], { queryParams: { id: vmId } });\n }\n \n //#endregion\n\n //#region Snapshot check\n\n checkSnapshot() {\n if (this.isPvDC(this.vm.datacenterLocation)) {\n let id = \"\";\n if (this.channelService.getIsChannelMode()) {\n id = this.channelService.getAdminUser().userId;\n } else {\n id = this.authenticationService.userValue.userId.toString();\n }\n\n this.cloudmanageService.checkHasSnapshot(this.vm, id).subscribe(result => {\n this.hasSnap = result;\n });\n }\n }\n\n //#endregion\n\n}\n","\n \n \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 { CloudmanageService } from '@app/core/_services/cloudmanage.service';\nimport { TypeVMSnapshot, VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { App, DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\nimport { Component, OnInit, ChangeDetectionStrategy, Input, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { ComputeService } from '@app/core/_services';\nimport { SubSink } from 'subsink';\n\n@Component({\n selector: 'pvdc-vmactions',\n templateUrl: './vmactions.component.html',\n styleUrls: ['./vmactions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VmactionsComponent implements OnInit,OnDestroy {\n @Input() provider: App;\n @Input() vm: VMFlat;\n @Input() hasSnap: boolean;\n loading: boolean = false;\n screenTicketSubscription: Subscription;\n env = environment;\n snap: TypeVMSnapshot;\n snapExists$ = new BehaviorSubject(false);\n\n private sub = new SubSink();\n\n constructor(\n private cloudmanageService: CloudmanageService,\n private computeService: ComputeService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n }\n\n isPvDC(datacenter: DatacenterLocations): boolean {\n return this.computeService.isPvDC(datacenter);\n }\n\n launchWebConsole() {\n this.screenTicketSubscription = this.cloudmanageService.getVMTicket(this.vm, App.vCloudDirector).subscribe(data=> {\n let ticket = data.data.ScreenTicket.screenTicket.result.result;\n if(ticket != null){\n const url = `${this.env.consoleUrl}?vmx=${ticket.vmx}&ticket=${ticket.ticket}&port=${ticket.port}&host=${ticket.host}`; //APP_CONFIG.consoleUrl + this.router.serializeUrl(tree); \n window.open(url, \"_blank\");\n this.screenTicketSubscription.unsubscribe();\n }\n });\n }\n\n openDetails() {\n //let link = this.getUrl();\n //window.open(link, \"_blank\");\n\n this.router.navigate(['/cloudmanage/compute/vm'], { queryParams: { id: this.vm.id } });\n }\n\n getUrl(): string {\n let url = this.cloudmanageService.getProviderLink(this.vm.vdcid);// + \"domain-networking/org-networks\";\n url += \"vdcs/\" + this.vm.vdcid + \"/vapp/vapp-\" + this.vm.vappid + \"/vcd-vapp-vms/vm-\" + this.vm.id + \"/general\";\n return url;\n }\n\n\n powerStatus(status: string): boolean {\n return this.cloudmanageService.powerStatusIsOn(status);\n }\n\n togglePowerStatus() {\n this.loading = true;\n\n let input = this.cloudmanageService.mapVMFlatToUpdatePowerStatusInput(this.vm);\n\n this.cloudmanageService.togglePowerStatus(this.vm, input);\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n createVMSnapshot() {\n this.sub.sink = this.computeService.createVMSnapshot(this.vm.id, this.vm.datacenterLocation, this.vm.name).subscribe(result => {\n this.snapExists$.next(result);\n this.hasSnap = result;\n });\n }\n\n deleteVMSnapshot() {\n this.sub.sink = this.computeService.deleteVMSnapshot(this.vm.id, this.vm.datacenterLocation, this.vm.name).subscribe(result => {\n this.snapExists$.next(!result);\n this.hasSnap = !result;\n });\n }\n\n revertVMSnapshot() {\n this.sub.sink = this.computeService.revertVMSnapshot(this.vm.id, this.vm.datacenterLocation, this.vm.name).subscribe(result => {\n let foo = result;\n });\n }\n\n hasVMSnapshot(): boolean {\n return this.hasSnap;\n }\n\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ValidationService {\n constructor() {}\n\n static getValidatorErrorMessage(validatorName: string, validatorValue?: any) {\n let config = {\n required: \"Required\",\n invalidCreditCard: \"Is invalid credit card number\",\n invalidEmailAddress: \"Invalid email address\",\n invalidPassword:\n \"Invalid password. Password must be at least 6 characters long, and contain a number.\",\n minlength: `Minimum length ${validatorValue.requiredLength}`,\n };\n\n return config[validatorName];\n }\n\n static creditCardValidator(control) {\n // Visa, MasterCard, American Express, Diners Club, Discover, JCB\n if (\n control.value.match(\n /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/\n )\n ) {\n return null;\n } else {\n return { invalidCreditCard: true };\n }\n }\n\n static emailValidator(control) {\n // RFC 2822 compliant regex\n if (\n control.value.match(\n /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/\n )\n ) {\n return null;\n } else {\n return { invalidEmailAddress: true };\n }\n }\n\n static passwordValidator(control) {\n // {6,100} - Assert password is between 6 and 100 characters\n // (?=.*[0-9]) - Assert a string has at least one number\n if (control.value.match(/^(?=.*[0-9])[a-zA-Z0-9!@#$%^&*]{6,100}$/)) {\n return null;\n } else {\n return { invalidPassword: true };\n }\n }\n}\n","
{{errorMessage}}
","import { Component, Input } from \"@angular/core\";\nimport { FormGroup, FormControl } from \"@angular/forms\";\nimport { ValidationService } from \"@app/core/_services/validation.service\";\n\n@Component({\n selector: \"pvdc-control-messages\",\n templateUrl: \"./control-messages.component.html\",\n styleUrls: [\"./control-messages.component.scss\"],\n})\nexport class ControlMessagesComponent {\n @Input() control: FormControl;\n constructor() {}\n\n get errorMessage() {\n for (let propertyName in this.control.errors) {\n if (\n this.control.errors.hasOwnProperty(propertyName) &&\n this.control.touched\n ) {\n return ValidationService.getValidatorErrorMessage(\n propertyName,\n this.control.errors[propertyName]\n );\n }\n }\n\n return null;\n }\n}\n","
\n \n \n \n
\n\n\n \n

\n Channel Settings\n Choose channel\n

\n \n \n \n \n
\n
\n
\n \n \n \n
Company is required.
\n
\n
\n
\n \n
\n \n
\n
\n
\n OR - Operate as {{ (authUser$ | async)?.companyName }}?\n
\n
\n \n
\n
\n
\n
\n
\n
\n *IF* having issues with VM's not refreshing click below.
\n BE AWARE, THIS WILL STOP INTERACTIVE POLLING OF DATA FOR VM'S AND YOU WILL HAVE TO SELECT AN ORG ABOVE TO REENABLE.\n
\n
\n \n
\n
\n
\n \n
\n","import { ShoppingCartService } from '@app/core/_services/shoppingcart.service';\nimport { Component, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { FormGroup, FormControl, Validators } from \"@angular/forms\";\nimport { Router } from \"@angular/router\";\nimport { Company } from \"@app/core/gql/graphql/company/schema/type\";\nimport {\n AlertService,\n ChannelService,\n CompanyService,\n} from \"@app/core/_services\";\nimport { QueryRefService } from \"@app/core/_services/query-ref.service\";\nimport { N3TStore } from \"@app/core/_services/n3tStore.service\";\nimport { Observable } from \"rxjs\";\nimport { SettingsModalService } from \"@app/shared/layout/settings-modal/settings-modal.service\";\nimport { BsModalRef, BsModalService } from \"ngx-bootstrap/modal\";\nimport { SubSink } from \"subsink\";\nimport { Select2Data, Select2Option } from \"ng-select2-component\";\nimport { AuthUser } from \"@app/core/_models\";\nimport { Login } from \"@app/core/_models/logins\";\n\n@Component({\n selector: \"pvdc-changechannel\",\n templateUrl: \"./changechannel.component.html\",\n styleUrls: [\"./changechannel.component.scss\"],\n})\nexport class ChangechannelComponent implements OnInit,OnDestroy {\n\n @ViewChild('template', {static: true}) template: any;\n\n modalRef: BsModalRef;\n\n private sub = new SubSink();\n\n companies$: Observable;\n company$: Observable;\n companySelected: string = \"\";\n companyList: Select2Data = new Array();\n selectedCompany: string = \"\";\n loading: boolean = true;\n channelCompanyId: string = \"\";\n originalCompanyId: string = \"\";\n originalCompanyName: string = \"\";\n authUser$: Observable;\n\n loaded$: boolean = false;\n errorMsg$: string;\n isError$: boolean = false;\n\n constructor(\n private channelService: ChannelService,\n private companyService: CompanyService,\n private alertService: AlertService,\n private n3tStore: N3TStore,\n private router: Router,\n private sms: SettingsModalService,\n private modalService: BsModalService,\n private queryRefService: QueryRefService,\n private shoppingCartSvc: ShoppingCartService\n ) {\n this.sub.sink = sms.openSettings$.subscribe(() => {\n this.showModal();\n });\n }\n\n ngOnInit(): void {\n this.company$ = this.companyService.company;\n this.company$.subscribe();\n\n this.authUser$ = this.n3tStore.selectAuthUsers();\n this.authUser$.subscribe(data => {\n this.originalCompanyId = data.companyId.toString();\n this.originalCompanyName = data.companyName;\n this.channelCompanyId = this.originalCompanyId;\n });\n\n this.companies$ = this.n3tStore.selectChannelCompanies();\n this.companies$.subscribe(data => { \n data.sort((a, b) => a.companyName.localeCompare(b.companyName));\n data.forEach((company) => {\n const item : Select2Option = {\n value: company.companyId.toString(), \n label: `${company.companyName} (${company.companyNameShort})`, \n };\n this.companyList.push(item);\n });\n });\n\n this.n3tStore.selectAdminUserResult().subscribe((result) => {\n this.loaded$ = result.isLoaded;\n this.isError$ = result.hasError;\n this.errorMsg$ = result.error;\n\n if (result.hasError) {\n this.alertService.error(result.error);\n }\n\n if (result.isLoaded) {\n this.queryRefService.stopComputePolling();\n this.router.navigate([\"/\"]);\n }\n });\n }\n\n openModal($event: MouseEvent) {\n $event.preventDefault();\n this.showModal();\n }\n\n private showModal() {\n this.modalRef = this.modalService.show(this.template, {\n class: 'modal-dialog-right modal-md'\n });\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n \n onHidden(): void {\n console.log('Dropdown is hidden');\n }\n onShown(): void {\n console.log('Dropdown is shown');\n }\n isOpenChange(): void {\n console.log('Dropdown state is changed');\n }\n\n getChannelCompanies() {\n this.channelService.getChannelCompanies().subscribe((data) => {\n this.companies$ = this.n3tStore.selectChannelCompanies();\n //this.companies$ = data;\n this.loading = false;\n });\n }\n\n form = new FormGroup({\n channel: new FormControl(\"\", Validators.required),\n });\n\n get f() {\n return this.form.controls;\n }\n\n submit() {\n this.channelService.getChannelCompanyAdmin(this.channelCompanyId);\n this.shoppingCartSvc.clearCart();\n \n }\n\n changeChannel(e) {\n this.channelCompanyId = e.value;\n }\n\n public proceedCompany() {\n // Utilize the company Id from original company\n this.channelCompanyId = this.originalCompanyId;\n\n this.submit();\n }\n\n nukeStore() {\n this.queryRefService.stopComputePolling();\n this.n3tStore.dispatchAppChannelReset();\n this.shoppingCartSvc.clearCart();\n }\n}\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { CloudmanageService, ComputeService } from '@app/core/_services';\nimport { Observable, Subject } from 'rxjs';\n\n@Component({\n selector: 'pvdc-workloadsgrid',\n templateUrl: './workloadsgrid.component.html',\n styleUrls: ['./workloadsgrid.component.scss']\n})\nexport class WorkloadsgridComponent implements OnInit, OnDestroy {\n\n @Input() vms$: Observable;\n dtOptions: any = {};\n\n // We use this trigger because fetching the list of vms can be quite long,\n // thus we ensure the data is fetched before rendering\n dtTrigger: Subject = new Subject();\n\n constructor(\n private computeService: ComputeService,\n private cloudmanageService: CloudmanageService, \n ) { }\n\n ngOnInit(): void {\n this.vms$.subscribe(data => {\n this.renderTable(data);\n })\n }\n\n\n renderTable(vms: VMFlat[]) {\n this.dtOptions = {\n data: vms,\n columns: [\n {title: 'VM Name', data:'name'},\n {title: 'Status', data:'status'},\n {title: 'Location', data:'datacenterLocation'},\n {title: 'Region', data:'region'},\n {title: 'CPUs', data:'numberOfCpus'},\n {title: 'RAM', data:'memoryMB'},\n {title: 'OS', data:'guestOs'},\n {title: 'Tools', data:'vmToolsVersion', class: 'none'},\n {title: 'VApp', data:'vappName', class: 'none'},\n // {title: 'Time UTC', data:'TimeUtc'},\n ],\n columnDefs : [\n { targets: [6],\n render : function (data, type, row) {\n return data; // this.getFriendlyOSName(data);\n }\n }, \n { target: [8],\n render : function (data, type, row) {\n return \"VApp Name: \" + data;\n }\n },\n // { targets : [2],\n // render : function (data, type, row) {\n // return getDatacenterIcon(data.toString())\n // }\n // }\n // { targets : [5],\n // render : function (data, type, row) {\n // return new Date(+data.replace(\"/Date(\",\"\").replace(\")/\", \"\").split(\"-\")[0]).toLocaleString();\n // }\n // }\n \n ],\n ordering: true,\n pagingType: 'full_numbers',\n pageLength: 10,\n lengthMenu: [ 5, 10, 25, 50 ],\n responsive: true,\n destroy: true,\n scrollX: true,\n };\n\n $('#workloadstable').DataTable(this.dtOptions);\n }\n\n ngOnDestroy(): void {\n // Do not forget to unsubscribe the event\n this.dtTrigger.unsubscribe();\n }\n\n getFriendlyOSName(nameIn: string): string {\n return this.computeService.shortenOS(nameIn);\n }\n\n getDatacenterIcon(datacenter: string): string {\n return this.computeService.getDatacenterIcon(datacenter);\n }\n\n //#region VM Status helpers\n\n powerStatus(status: string): boolean {\n return this.cloudmanageService.powerStatusIsOn(status);\n }\n\n isOn(status: string): boolean {\n return this.cloudmanageService.isOn(status);\n }\n\n isOff(status: string): boolean {\n return this.cloudmanageService.isOff(status);\n }\n\n isWarning(status: string): boolean {\n return this.cloudmanageService.isWarning(status);\n }\n\n //#endregion\n\n}\n","
\n
\n \n \n \n \n \n
\n
\n
\n","\r\nexport class DpsAction {\r\n action: string; \r\n id: string; \r\n newname: string; \r\n targethost: string;\r\n targetcluster: string;\r\n hostid: string;\r\n origappid: string;\r\n}\r\n","
\n
\n
\n
\n
\n \n \n {{ getFriendlyDate(item.backupdate) }}\n \n \n
Backup date: {{getFriendlyDate(item.backupdate) | date:'long'}}
\n
Backup Type: {{item.jobclass}} | Expire Date: {{getFriendlyDate(item.expiration) | date:'long'}}
\n
Virtual Size: {{parseSize(item.virtualsize) | number }} GB
\n
\n
\n
\n
\n
\n
\n
Actions:
\n \n \n
{{item.name}}
\n
\n \n
\n
\n
\n
\n
Enter new VM Name:
\n \n
\n
\n
\n
\n
Select Host to Failover to:
\n \n \n
{{item.hostname}}
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n NOTE: In order to FAIL BACK please go to the Source Cluster appliance and initiate operation for this Host!\n
\n
\n
\n
\n {{feedback}}\n
\n
\n
\n
\n
\n ","import { ChangeDetectionStrategy, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { DpsAction, TypeBackup, TypeBackups, TypeHost } from '@app/core/gql/graphql/dps/schema/type';\nimport { CloudmanageService, ComputeService, CommonService } from '@app/core/_services';\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\nimport { FormBuilder,FormGroup, FormControl } from \"@angular/forms\";\nimport { SubSink } from \"subsink\";\nimport { Select2Data, Select2Option } from \"ng-select2-component\";\nimport { of } from 'rxjs';\nimport * as _ from 'underscore';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'pvdc-dpsbackups',\n templateUrl: './dpsbackups.component.html',\n styleUrls: ['./dpsbackups.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DpsbackupsComponent implements OnInit {\n\n //#region variables\n\n backupForm = new FormGroup({\n backup: new FormControl(\"\"),\n backupAction: new FormControl(\"\"),\n newHostName: new FormControl(\"\"),\n backupFailover: new FormControl(\"\"),\n });\n\n @ViewChild('template', {static: true}) template: any;\n \n @Input() backups: TypeBackups;\n @Input() sourcecluster: string;\n @Input() targetcluster: string;\n @Input() backuptype: string;\n @Input() failover: string;\n @Input() setaction: string;\n @Input() setbackup: string;\n @Input() removebackup: string;\n @Input() parsesize: string;\n @Input() friendlypath: string;\n @Input() apphostid: string;\n @Input() hostid: string;\n\n backupList: Select2Data = new Array();\n backupId: string = \"\";\n\n showAction: boolean = false;\n showHostRename: boolean = false;\n showFailoverSelect: boolean = false;\n showDoBackup: boolean = false;\n showFailbackMessage: boolean = false;\n showAdd: boolean = true;\n\n backupAction: DpsAction = new DpsAction(); // { action: \"\", id: null, newname: \"\", targethost: \"\", targetcluster: \"\" };\n\n selectedBackup = undefined;\n selectedAction = undefined;\n selectedFailoverHost = undefined;\n failoverHosts: TypeHost[];\n backupFailoverSelected = undefined;\n\n newHostName = undefined;\n feedback: string = \"\";\n\n backupactionsOrig = [\n { name: 'Restore', value: 'restore' },\n // { name: 'Mount', value: 'mount' },\n // { name: 'Clone', value: 'clone' }\n ]\n\n backupActions = [\n { name: 'Restore', value: 'restore' },\n // { name: 'Mount', value: 'mount' },\n // { name: 'Clone', value: 'clone' }\n ]\n\n failoveractions = [\n { name: 'Test Failover', value: 'testfailover' },\n { name: 'Failover', value: 'failover' },\n // { name: 'Mount', value: 'mount' },\n // { name: 'Clone', value: 'clone' },\n // //{ name: 'Live Clone', value: 'liveclone' }\n ]\n\n testfailedoveractions = [\n { name: 'Remove Test Failover', value: 'rmfailovertest' }\n ]\n\n failedoveractionsync = [\n { name: 'Sync Back', value: 'syncback' }\n ]\n\n failedoveractionfail = [\n { name: 'Sync Back', value: 'syncback' },\n { name: 'Fail Back', value: 'failback' }\n ]\n\n noactions = [\n// { name: '', value: '' }\n ]\n\n //#endregion\n\n constructor(\n private computeService: ComputeService,\n private cloudmanageService: CloudmanageService,\n private commonService: CommonService,\n private fb: FormBuilder, \n private n3tStore: N3TStore\n ) { }\n\n ngOnInit(): void {\n let backups$ = of(this.backups);\n\n backups$.subscribe(data => {\n data.result.forEach(backup => {\n const item : Select2Option = {\n value: backup.id.toString(),\n label: `${backup.jobclass} - ${backup.backupdate}`\n };\n this.backupList.push(item);\n });\n });\n\n }\n\n onChange($event) {\n //console.log($event);\n let backupTmp = $event as TypeBackup;\n if (backupTmp === undefined) {\n this.showAction = false;\n this.selectedBackup = undefined;\n this.selectedAction = undefined;\n this.showAction = false;\n this.showAdd = false;\n this.showDoBackup = false;\n this.newHostName = undefined;\n this.showHostRename = false;\n this.showFailoverSelect = false;\n this.selectedFailoverHost = undefined;\n this.backupActions = this.noactions;\n } else {\n this.showAction = true;\n this.selectedBackup = {...backupTmp};\n\n if (backupTmp.jobclass === \"failovertest\") {\n this.backupActions = this.testfailedoveractions;\n }\n else if (backupTmp.jobclass === \"syncback\") {\n this.backupActions = this.failedoveractionfail;\n this.showFailbackMessage = true;\n }\n else if (backupTmp.jobclass !== \"dedupasync\" && backupTmp.jobclass !== \"StreamSnap\") {\n this.backupActions = this.backupactionsOrig;\n }\n else if ((backupTmp.jobclass === \"dedupasync\" || backupTmp.jobclass === \"StreamSnap\") && this.backuptype === \"REMOTE\") {\n if (this.failover === \"failover\") {\n this.backupActions = this.failedoveractionsync;\n }\n else {\n this.backupActions = this.failoveractions;\n }\n }\n else if ((backupTmp.jobclass === \"dedupasync\" || backupTmp.jobclass === \"StreamSnap\") && this.backuptype !== \"REMOTE\") {\n this.backupActions = this.noactions; // this.failoveractions;\n }\n }\n }\n\n setTheAction($event) {\n let val = $event as HTMLInputElement;\n\n if (val !== null && val !== undefined) {\n this.selectedAction = val.value;\n this.setRecoveryOptions();\n this.backupAction.action = val.value;\n this.backupAction.id = this.selectedBackup.id; // this.$$prevSibling.$select.selected.id;\n }\n else {\n this.selectedAction = undefined;\n this.selectedFailoverHost = undefined;\n this.showFailoverSelect = false;\n this.showDoBackup = false;\n this.backupAction = new DpsAction(); // { action: \"\", id: null, newname: \"\", targethost: \"\", targetcluster: \"\" };\n this.showAdd = false;\n }\n }\n\n setRecoveryOptions() {\n if (this.selectedAction !== undefined) {\n\n if (this.selectedAction === \"rmfailovertest\") {\n this.showHostRename = false;\n this.newHostName = undefined;\n this.showDoBackup = true;\n this.setFailoverHostTargets();\n }\n else if (this.selectedAction === \"failover\" || this.selectedAction === \"testfailover\") {\n this.showHostRename = false;\n this.newHostName = undefined;\n this.showDoBackup = false;\n this.showFailoverSelect = true;\n this.setFailoverHostTargets();\n }\n else if (this.selectedAction === \"failback\") {\n this.showHostRename = false;\n this.newHostName = undefined;\n this.showDoBackup = true;\n this.showFailoverSelect = false;\n }\n else if (this.selectedAction === \"clone\" || this.selectedAction === \"mount\") {\n this.showHostRename = true;\n this.checkHostName();\n this.showFailoverSelect = false;\n }\n else {\n this.showHostRename = false;\n this.newHostName = undefined;\n this.showDoBackup = true;\n this.showFailoverSelect = false;\n }\n }\n else {\n this.showHostRename = false;\n this.newHostName = undefined;\n this.showDoBackup = false;\n }\n\n }\n\n checkHostName() {\n this.feedback = \"\";\n this.backupAction.newname = \"\";\n\n if (this.newHostName === undefined) {\n this.showDoBackup = false;\n }\n else if (this.newHostName.length < 3) {\n this.showDoBackup = false;\n }\n else if (this.newHostName.length >= 3 && this.newHostName !== undefined && this.newHostName.toLowerCase() !== this.selectedBackup.hostname.split(\" (\")[0].toLowerCase()) {\n this.showDoBackup = true;\n this.backupAction.newname = this.newHostName;\n }\n else {\n this.showDoBackup = false;\n this.feedback = \"The New Host Name is required and must be unique!\";\n }\n\n }\n\n setFailoverHostTargets() {\n let hostsFiltered = new Array();\n\n let hosts$ = this.n3tStore.selectDPS();\n \n hosts$.pipe(map(hosts => {\n hostsFiltered = _.where(hosts, { sourcecluster: this.selectedBackup.targetuds, isvm: true });\n this.failoverHosts = hostsFiltered;\n this.failoverHosts = this.failoverHosts.sort((a, b) => (a.hostname > b.hostname ? 1 : -1));\n })).subscribe();\n }\n\n setTheFailoverHost(failoverHost: TypeHost) {\n if (failoverHost !== null && failoverHost !== undefined) {\n this.selectedFailoverHost = failoverHost;\n this.showDoBackup = true;\n this.showAdd = true;\n this.backupAction.targethost = failoverHost.hostname;\n this.backupAction.targetcluster = failoverHost.sourcecluster;\n this.backupAction.origappid = this.apphostid;\n if (failoverHost.hostApp.protectable === \"REMOTE\") {\n this.backupAction.hostid = failoverHost.hostApp.id.toString();\n } else {\n this.backupAction.hostid = failoverHost.hostApp.hostid.toString();\n }\n }\n else {\n this.showDoBackup = false;\n this.showAdd = false;\n this.selectedFailoverHost = undefined;\n this.backupAction = new DpsAction(); // { action: \"\", id: null, newname: \"\", targethost: \"\", targetcluster: \"\", hostid: \"\" };\n }\n }\n\n addBackupAction() {\n this.showAdd = false;\n let tmp = this.selectedBackup as TypeBackup;\n tmp.backupAction = this.backupAction;\n tmp.friendlypath = this.friendlypath;\n\n tmp.hostid = this.hostid;\n\n this.n3tStore.upsertBackup(tmp);\n };\n\n resetBackup() {\n this.showAdd = false;\n this.showAction = false;\n this.showFailoverSelect = false;\n\n this.selectedBackup = undefined;\n this.backupActions = undefined;\n this.failoverHosts = undefined;\n this.backupFailoverSelected = undefined;\n this.selectedFailoverHost = undefined;\n }\n\n removeBackupAction() {\n let idArray = new Array();\n idArray.push(this.selectedBackup.id);\n this.n3tStore.deleteBackups(idArray);\n this.showAdd = true;\n }\n\n //#region Helper methods\n\n parseSize(sizeIn: number) {\n return this.commonService.convertDiskSizeBytesToGB(sizeIn).toFixed(2);\n }\n\n getFriendlyDate(dateIn: string): Date {\n if (dateIn == null) {\n return null;\n }\n return this.commonService.toDate(dateIn);\n }\n\n //#endregion\n\n\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HostnameDescriptionSource ClusterTarget ClusterBackups
\n {{ host.hostname }}
\n
\n OS: {{ host.ostype }}
\n IP Address: {{ host.ipaddress }}
\n Failover Status: {{ host.hostApp.failoverstate }}\n
\n
{{ host.hostApp.description }}{{ getFriendlyClusterName(host.sourcecluster) | async }}{{ getFriendlyClusterName(host.targetcluster) | async }}\n \n \n \n \n
","import { TypeHost } from '@app/core/gql/graphql/dps/schema/type';\nimport { Component, Input, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\nimport { CloudmanageService, ComputeService } from '@app/core/_services';\nimport { Observable, Subject } from 'rxjs';\n \n@Component({\n selector: 'pvdc-dpsgrid',\n templateUrl: './dpsgrid.component.html',\n styleUrls: ['./dpsgrid.component.scss']\n})\nexport class DpsgridComponent implements OnInit, OnDestroy {\n \n @Input() backupHosts$: Observable;\n dtOptions: any = {};\n dtOptions2: DataTables.Settings = {};\n dtTable:any;\n // We use this trigger because fetching the list of vms can be quite long,\n // thus we ensure the data is fetched before rendering\n dtTrigger: Subject = new Subject();\n\n showDetails: boolean = false;\n \n constructor(\n private computeService: ComputeService,\n private cloudmanageService: CloudmanageService,\n ) { }\n \n ngOnInit(): void {\n this.backupHosts$.subscribe(data => {\n //this.renderTable(data);\n //this.dtTrigger.next();\n \n });\n\n //this.dtTrigger.next();\n }\n \n ngOnDestroy(): void {\n // Do not forget to unsubscribe the event\n //this.dtTrigger.unsubscribe();\n }\n renderTable(hosts: TypeHost[]) {\n this.dtOptions = {\n data: hosts,\n columns: [\n {title: 'Host Name', data:'hostname'},\n {title: 'OS Type', data:'ostype'},\n {title: 'OS Version', data:'osversion', class: 'none'},\n {title: 'OS Release', data:'osrelease', class: 'none'},\n {title: 'Is VM', data:'isvm'},\n // {title: 'Location', data:'datacenterLocation'},\n // {title: 'Region', data:'region'},\n // {title: 'CPUs', data:'numberOfCpus'},\n // {title: 'RAM', data:'memoryMB'},\n // {title: 'OS', data:'guestOs'},\n // {title: 'Tools', data:'vmToolsVersion', class: 'none'},\n // {title: 'VApp', data:'vappName', class: 'none'},\n ],\n columnDefs : [\n // { targets: [6],\n // render : function (data, type, row) {\n // return data; // this.getFriendlyOSName(data);\n // }\n // },\n // { target: [9],\n // render : function (data, type, row) {\n // return \"VApp Name: \" + data;\n // }\n // },\n // { targets : [2],\n // render : function (data, type, row) {\n // return getDatacenterIcon(data.toString())\n // }\n // }\n // { targets : [5],\n // render : function (data, type, row) {\n // return new Date(+data.replace(\"/Date(\",\"\").replace(\")/\", \"\").split(\"-\")[0]).toLocaleString();\n // }\n // }\n \n ],\n ordering: true,\n pagingType: 'full_numbers',\n pageLength: 10,\n lengthMenu: [ 5, 10, 25, 50 ],\n responsive: true,\n destroy: true,\n scrollX: true,\n };\n \n $('#backuphoststable').DataTable(this.dtOptions);\n }\n \n getFriendlyOSName(nameIn: string): string {\n return this.computeService.shortenOS(nameIn);\n }\n \n getFriendlyClusterName(clusterId: string): Observable {\n return this.cloudmanageService.getFriendlyClusterName(clusterId);\n }\n \n getDatacenterIcon(datacenter: string): string {\n return this.computeService.getDatacenterIcon(datacenter);\n }\n \n checkBackup(e: any, hostname: string) {\n let isChecked = e.target.checked;\n let bar = hostname;\n }\n \n}\n ","import { CloudmanageService } from '@app/core/_services/cloudmanage.service';\nimport { DPSService } from '@app/core/_services/dps.service';\nimport { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { SubSink } from 'subsink';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'pvdc-dps-badge',\n templateUrl: './dps-badge.component.html',\n styleUrls: ['./dps-badge.component.scss']\n})\nexport class DpsBadgeComponent implements OnInit, OnDestroy {\n\n private sub = new SubSink();\n\n @Input() location: boolean;\n @Input() theVM: VMFlat;\n dpsExists: boolean = false;\n message: BehaviorSubject = new BehaviorSubject(\"DPS is not currently detected for this workload.\");\n\n constructor(\n private cloudmanageService: CloudmanageService,\n private dpsService: DPSService\n ) { }\n\n ngOnInit(): void {\n this.checkDPSProtectStatus();\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n checkDPSProtectStatus() {\n if (this.isPvDC()) {\n this.sub.sink = this.dpsService.checkDPSExistsForHost(this.theVM.name).subscribe(hasDPS => {\n if (hasDPS) {\n this.dpsExists = true;\n this.message.next(\"This workload is actively protected by DPS.\");\n } else {\n this.dpsExists = false;\n this.message.next(\"DPS is not currently detected for this workload.\");\n }\n });\n }\n }\n\n getDPSStatus() {\n if (this.dpsExists) {\n return {'dps-exists' : true};\n } else {\n return {'no-dps': true}\n }\n }\n\n isPvDC(): boolean {\n return this.cloudmanageService.isPvDC(this.theVM.datacenterLocation);\n }\n\n}\n","\n","import { AuthenticationService } from '@app/core/_services/authentication.service';\nimport { CloudmanageService } from '@app/core/_services/cloudmanage.service';\nimport { DatacenterLocations } from '@app/core/_models/enums';\nimport { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { SubSink } from 'subsink';\nimport { GetSnapProtectStatusInput } from '@app/core/gql/graphql/compute/schema/input';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'pvdc-snapshot-badge',\n templateUrl: './snapshot-badge.component.html',\n styleUrls: ['./snapshot-badge.component.scss']\n})\nexport class SnapshotBadgeComponent implements OnInit, OnDestroy {\n\n private sub = new SubSink();\n\n @Input() location: DatacenterLocations;\n @Input() theVM: VMFlat;\n snapExists: boolean = false;\n message: BehaviorSubject = new BehaviorSubject(\"No PvDC snapshot currently detected for this workload.\");\n\n constructor(\n private cloudmanageService: CloudmanageService,\n private authenticationService: AuthenticationService\n ) { }\n\n ngOnInit(): void {\n this.checkSnapProtectStatus();\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n checkSnapProtectStatus() {\n if (this.isPvDC()) {\n let user = this.authenticationService.userValue;\n\n let input: GetSnapProtectStatusInput = new GetSnapProtectStatusInput();\n input.orgName = this.theVM.orgName;\n input.datacenterLocation = this.theVM.datacenterLocation;\n input.vmName = this.theVM.name;\n input.vmOrVappId = \"vm-\" + this.theVM.id;\n\n input.userId = user.userId.toString();\n\n this.sub.sink = this.cloudmanageService.retrieveSnapProtect(input).subscribe(result => {\n let foo = result.data[\"getSnapProtectStatus\"];\n if (foo.success && foo[\"Snapshot\"].result !== null && foo[\"Snapshot\"].result?.size > 0) {\n this.snapExists = true;\n this.message.next(\"This workload has an active Snapshot within PvDC.\");\n } else {\n this.snapExists = false;\n this.message.next(\"No PvDC snapshot currently detected for this workload.\");\n }\n });\n }\n }\n\n getSnapStatus() {\n if (this.snapExists) {\n return {'snap-exists' : true};\n } else {\n return {'no-snap': true}\n }\n }\n\n isPvDC(): boolean {\n return this.cloudmanageService.isPvDC(this.theVM.datacenterLocation);\n }\n\n}\n","\n\n\n\n","
\n\n
\n
\n
\n

\n Loading... Resource: {{ resourceToString(resource) }}
\n

\n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n \n\n
\n
\n \n \n \n \n \n
\n\n
\n \n Alert!\n \n
\n There was an issue retrieving Resource Ordering Data:
\n {{ errorMsg$ }}\n
\n
\n
\n\n
\n
\n \n Resource: {{ resourceToString(resource) }}
\n Currently utilized: {{ initialUsage }} {{ units }}. Currently allocated: ~ {{ initialAllocation }} {{ units }}.
\n
\n
\n
\n
\n
\n
\n \n Resource: {{ resourceToString(resource) }}
\n Currently utilized: {{ initialUsage }} {{ units }}. Currently allocated: ~ {{ initialAllocation }} {{ units }}.
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n \n \n {{ getResourceUnits(resource) }} more resources for {{ resourceToString(resource) }}?\n
\n
\n
\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n \n Item added to Cart!\n \n
\n
\n \n \n \n
\n
\n
\n
\n\n
\n
\n
\n
\n","import { CommonService } from './../../_services/common.service';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { ProductsService } from '@app/core/_services/products.service';\nimport { DatacenterLocations, ProductId } from '@app/core/_models/enums';\nimport { Component, OnInit, ChangeDetectionStrategy, Input, OnDestroy } from '@angular/core';\nimport { Options, LabelType } from '@angular-slider/ngx-slider';\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\nimport * as selectors from '@app/store/product/product.selectors';\nimport { SubSink } from 'subsink';\nimport { VDC } from '@app/core/gql/graphql/compute/schema/type';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { NumberSymbol } from '@angular/common';\nimport { ShoppingCartService } from '@app/core/_services/shoppingcart.service';\nimport { CartProduct } from '@app/core/_models/cart-product';\nimport { TypeProductModel, TypeProductPriceModel } from '@app/core/gql/graphql/products/schema/type';\nimport * as _ from 'underscore';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'pvdc-resource',\n templateUrl: './resource.component.html',\n styleUrls: ['./resource.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ResourceComponent implements OnInit, OnDestroy {\n private sub = new SubSink();\n\n loaded$: boolean = false;\n errorMsg$: string;\n isError$: boolean = false;\n\n display: boolean = true;\n \n @Input() resource: ProductId;\n @Input() location: DatacenterLocations;\n @Input() vdcId: string;\n @Input() isNetwork: boolean = false;\n @Input() networkLimit: number = 0;\n @Input() parentId: string;\n private floorVal: number = 0;\n private ceilVal: number = 1;\n private currentVal: number = 0;\n private maxAmt: number = 1;\n private stepAmt: number = 1;\n\n private products: TypeProductPriceModel[];\n\n private vdc: VDC;\n\n public product = {};\n\n initialUsage: number;\n initialAllocation: string;\n units: string = \"\";\n\n isPaygo: boolean = false;\n qtyChanged: boolean = false;\n itemAdded: boolean = false;\n\n amountAdded: number = 0;\n step: number = 1;\n\n selectedValue: number;\n\n value: number = this.currentVal;\n val$: BehaviorSubject = new BehaviorSubject(this.currentVal);\n maxValue: number = this.maxAmt;\n options: Options = {\n floor: this.floorVal,\n ceil: this.ceilVal,\n step: this.stepAmt,\n };\n\n // Reactive flavor\n sliderForm: FormGroup = new FormGroup({\n sliderControl: new FormControl([0, 0])\n });\n optionsR: Options = {\n floor: 0,\n ceil: 100,\n step: 5\n };\n\n resetForm(): void {\n this.sliderForm.reset({sliderControl: [0, 0]});\n }\n\n\n constructor(\n private prodServ: ProductsService,\n private n3tStore: N3TStore,\n private shoppingCartSvc: ShoppingCartService,\n private commonSvc: CommonService,\n private router: Router,\n ) { }\n\n cartState$ = this.shoppingCartSvc.state$.pipe();\n\n ngOnInit(): void {\n // grab current resource values from VDC\n this.sub.sink = this.n3tStore.selectVDCById(this.vdcId).subscribe(data => {\n this.setValues(data);\n this.vdc = data;\n\n this.sub.sink = this.n3tStore.selectProductsResult().subscribe(res => {\n this.loaded$ = res.isLoaded;\n this.isError$ = res.hasError;\n this.errorMsg$ = res.error;\n\n if (res.isLoaded && res.hasError !== true){\n this.products = this.prodServ.getProducts();\n\n if (this.products.length > 0) {\n this.setUpProduct();\n }\n }\n });\n\n });\n\n this.sub.sink = this.cartState$.subscribe();\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n //#region Map to a Product/CartProduct for this resource\n\n setUpProduct( ) {\n\n let mode = \"\";\n let parentId = \"\";\n\n if (this.isNetwork) {\n mode = \"Network\";\n parentId = this.parentId !== undefined ? this.parentId : \"\";\n } else {\n switch (this.vdc.allocationModel) {\n case \"PAYGO\":\n mode = \"OnDemand\";\n break;\n case \"ALLOCATION\":\n mode = \"Select\";\n break;\n default:\n break;\n } \n }\n\n let productTmp = _.findWhere(this.products, {\n datacenterCode: this.vdc.datacenterLocation.toString(),\n service: mode,\n productId: this.resource\n });\n\n if (productTmp !== undefined) {\n this.product.datacenter = this.vdc.datacenterLocation.toString();\n this.product.vdcid = this.vdc.id;\n this.product.serviceName = mode;\n this.product.selfServiceId = +productTmp.selfServiceId;\n this.product.price = +productTmp.productPrice;\n this.product.productName = productTmp.product;\n this.product.vdcName = this.vdc.name;\n this.product.remove = false;\n this.product.quantity = 0;\n this.product.maxAllocation = this.options.ceil;\n this.product.serviceLevelPercent = +productTmp.productServiceLevelPercent;\n this.product.discount = +productTmp.productDiscount;\n this.product.parentId = parentId;\n switch (productTmp.product) {\n case \"vCPU (per GHz)\":\n this.product.orderStep = 0.25;\n break;\n case \"Standard Storage (per GB)\":\n this.product.orderStep = 50;\n break;\n default:\n this.product.orderStep = 1;\n break;\n } \n }\n }\n\n //#endregion\n\n //#region Set the values based on mode\n\n setValues(vdc: VDC) {\n if (vdc.allocationModel === \"PAYGO\") {\n this.setValuesPaygo(vdc);\n } else if (vdc.allocationModel === \"ALLOCATION\") {\n this.setValuesAllocation(vdc);\n } else if (vdc.allocationModel === \"Google Cloud Platform\"){\n this.setValuesGCP(vdc);\n } else if (vdc.allocationModel === \"AWS EC2\"){\n this.setValuesAWS(vdc);\n } else if (vdc.allocationModel === \"AZURE\"){\n this.setValuesAZU(vdc);\n } else {\n // unknown...\n }\n }\n\n setValuesPaygo(vdc: VDC) {\n this.isPaygo = true;\n\n switch (this.resource) {\n case ProductId.vCPU: \n this.display = false;\n \n this.value = this.commonSvc.roundNearQtr(vdc.cpuUsedMhz / 1000);\n this.val$.next(this.value);\n this.maxValue = vdc.cpuUsedMhz / 1000;\n this.options = {\n floor: 0,\n ceil: 1000,\n disabled: true,\n translate: (value: number): string => {\n return value + ' GHz';\n }\n };\n // Set initial values\n this.initialUsage = vdc.cpuUsedMhz / 1000;\n this.initialAllocation = NumberSymbol[NumberSymbol.Infinity];\n this.units = \"GHz\";\n\n break;\n case ProductId.vRAM:\n this.display = false;\n\n this.value = Math.round(vdc.memoryUsedMB / 1000);\n this.val$.next(this.value);\n this.maxValue = Math.round(vdc.memoryUsedMB / 1000);\n this.options = {\n floor: 0,\n ceil: 1000,\n disabled: true,\n translate: (value: number): string => {\n return Math.round(value) + ' GB';\n }\n };\n // Set initial values\n this.initialUsage = vdc.memoryUsedMB / 1000;\n this.initialAllocation = NumberSymbol[NumberSymbol.Infinity];\n this.units = \"GB\";\n break;\n case ProductId.StandardStorage:\n let storageRounded = Math.round((vdc.storageLimitMB / 1000) / 50)*50;\n this.sliderForm = new FormGroup({\n sliderControl: new FormControl([storageRounded])\n });\n this.value = storageRounded;\n this.val$.next(this.value);\n this.maxValue = Math.round((storageRounded + 20000000) / 1000);\n this.step = 50;\n this.options = {\n floor: 0,\n ceil: Math.round((storageRounded + 20000000) / 1000),\n // translate: (value: number, label: LabelType): string => {\n // switch (label) {\n // case LabelType.Low:\n // return 'Utilized: ' + value + ' GB';\n // case LabelType.High:\n // return 'Allocated: ' + value + ' GB';\n // default:\n // return value + ' GB';\n // }\n // },\n step: this.step,\n showSelectionBarFromValue: storageRounded,\n translate: (value: number): string => {\n return value + ' GB';\n },\n minLimit: storageRounded\n };\n // Set initial values\n this.initialUsage = vdc.storageUsedMB / 1000;\n this.initialAllocation = storageRounded.toString();\n this.units = \"GB\"; \n break;\n case ProductId.SSDEnhancedStorage:\n this.value = vdc.storageUsedMB / 1000;\n this.val$.next(this.value);\n this.maxValue = vdc.storageLimitMB / 1000;\n this.options = {\n floor: 0,\n ceil: (vdc.storageLimitMB * 1.75) / 1000\n };\n break;\n case ProductId.Bandwidth:\n this.value = this.networkLimit;\n this.sliderForm = new FormGroup({\n sliderControl: new FormControl([this.value])\n });\n this.val$.next(this.value);\n this.maxValue = this.value > 500 ? this.value : 500;\n this.options = {\n floor: 0,\n ceil: this.value > 500 ? this.value : 500,\n step: this.step,\n showSelectionBarFromValue: this.value,\n translate: (value: number): string => {\n return value + ' Mb/s';\n },\n minLimit: this.value\n };\n this.initialUsage = this.value;\n this.initialAllocation = this.value.toString();\n this.units = \"Mb/s\";\n break;\n default:\n break;\n }\n\n }\n\n setValuesAllocation(vdc: VDC) {\n this.isPaygo = false;\n switch (this.resource) {\n case ProductId.vCPU:\n this.sliderForm = new FormGroup({\n sliderControl: new FormControl([vdc.cpuAllocationMhz / 1000])\n });\n this.value = this.commonSvc.roundNearQtr(vdc.cpuUsedMhz / 1000);\n this.val$.next(this.value);\n this.maxValue = Math.round((vdc.cpuAllocationMhz + 15000) / 1000);\n this.step = .25;\n this.options = {\n floor: 0,\n ceil: this.maxValue,\n // translate: (value: number, label: LabelType): string => {\n // switch (label) {\n // case LabelType.Low:\n // return 'Utilized: ' + value + ' GHz';\n // case LabelType.High:\n // return 'Allocated: ' + value + ' GHz';\n // default:\n // return value + ' GHz';\n // }\n // },\n step: this.step,\n showSelectionBarFromValue: this.commonSvc.roundNearQtr((vdc.cpuAllocationMhz / 1000)),\n translate: (value: number): string => {\n return value + ' GHz';\n },\n minLimit: Math.round(vdc.cpuAllocationMhz / 1000)\n };\n // Set initial values\n this.initialUsage = vdc.cpuUsedMhz / 1000;\n this.initialAllocation = this.commonSvc.roundNearQtr((vdc.cpuAllocationMhz / 1000)).toString();\n this.units = \"GHz\";\n break;\n case ProductId.vRAM:\n this.sliderForm = new FormGroup({\n sliderControl: new FormControl([vdc.memoryAllocationMB / 1000])\n });\n this.value = Math.round(vdc.memoryUsedMB / 1000);\n this.val$.next(this.value);\n this.maxValue = (Math.round(vdc.memoryAllocationMB) + 48000) / 1000;\n this.options = {\n floor: 0,\n ceil: this.maxValue,\n // translate: (value: number, label: LabelType): string => {\n // switch (label) {\n // case LabelType.Low:\n // return 'Utilized: ' + value + ' GB';\n // case LabelType.High:\n // return 'Allocated: ' + value + ' GB';\n // default:\n // return value + ' GB';\n // }\n // },\n showSelectionBarFromValue: Math.round(vdc.memoryAllocationMB / 1000),\n translate: (value: number): string => {\n return Math.round(value) + ' GB';\n },\n minLimit: Math.round(vdc.memoryAllocationMB / 1000)\n };\n // Set initial values\n this.initialUsage = vdc.memoryUsedMB / 1000;\n this.initialAllocation = Math.round(vdc.memoryAllocationMB / 1000).toString();\n this.units = \"GB\"; \n break;\n case ProductId.StandardStorage:\n let storageRounded = Math.round((vdc.storageLimitMB / 1000) / 50)*50;\n this.sliderForm = new FormGroup({\n sliderControl: new FormControl([storageRounded])\n });\n this.value = vdc.storageUsedMB / 1000;\n this.val$.next(this.value);\n this.maxValue = Math.round((storageRounded + 20000000) / 1000);\n this.step = 50;\n this.options = {\n floor: 0,\n ceil: this.maxValue,\n // translate: (value: number, label: LabelType): string => {\n // switch (label) {\n // case LabelType.Low:\n // return 'Utilized: ' + value + ' GB';\n // case LabelType.High:\n // return 'Allocated: ' + value + ' GB';\n // default:\n // return value + ' GB';\n // }\n // },\n step: this.step,\n showSelectionBarFromValue: storageRounded,\n translate: (value: number): string => {\n return value + ' GB';\n },\n minLimit: storageRounded\n };\n // Set initial values\n this.initialUsage = vdc.storageUsedMB / 1000;\n this.initialAllocation = storageRounded.toString();\n this.units = \"GB\"; \n break;\n case ProductId.SSDEnhancedStorage:\n this.floorVal = 0;\n this.ceilVal = vdc.storageLimitMB;\n this.currentVal = vdc.storageUsedMB;\n break; \n case ProductId.Bandwidth:\n this.value = this.networkLimit;\n this.sliderForm = new FormGroup({\n sliderControl: new FormControl([this.value])\n });\n this.val$.next(this.value);\n this.maxValue = this.value > 500 ? this.value : 500;\n this.options = {\n floor: 0,\n ceil: this.value > 500 ? this.value : 500,\n step: this.step,\n showSelectionBarFromValue: this.value,\n translate: (value: number): string => {\n return value + ' Mb/s';\n },\n minLimit: this.value\n };\n this.initialUsage = this.value;\n this.initialAllocation = this.value.toString();\n this.units = \"Mb/s\";\n break;\n default:\n break;\n }\n }\n\n setValuesGCP(vdc: VDC) {\n this.isPaygo = false;\n }\n\n setValuesAWS(vdc: VDC) {\n this.isPaygo = false;\n }\n\n setValuesAZU(vdc: VDC) {\n this.isPaygo = false;\n }\n\n //#endregion\n\n //#region Item management\n\n public addProduct(product: CartProduct) {\n this.shoppingCartSvc.addProduct(product);\n }\n\n public removeProduct(product: CartProduct): void {\n this.shoppingCartSvc.removeProduct(product);\n }\n\n addThisItem() {\n this.itemAdded = true;\n\n // Create CartProduct from this resource\n this.product.remove = false;\n this.addProduct(this.product);\n\n }\n\n removeThisItem() {\n this.itemAdded = false;\n this.qtyChanged = false;\n this.setValues(this.vdc);\n\n this.product.remove = true;\n this.removeProduct(this.product);\n }\n\n //#endregion\n\n //#region Helper methods\n\n resourceToString(resource: ProductId): string {\n return this.prodServ.resourceToString(resource);\n }\n\n resourceClassImage(resource: ProductId): string {\n return this.prodServ.resourceClassImage(resource);\n }\n\n getResourceUnits(resource: ProductId): string {\n return this.prodServ.getResourceUnits(resource);\n }\n\n amountChangedPaygo($event) {\n if (+$event.value > +this.initialAllocation) {\n this.qtyChanged = true;\n this.amountAdded = +$event.value - +this.initialAllocation;\n this.val$.next(+$event.value);\n\n //this.value = this.amountAdded;\n\n this.product.quantity = this.amountAdded;\n } else {\n this.qtyChanged = false;\n this.amountAdded = 0;\n this.removeThisItem();\n\n this.product.quantity = this.amountAdded;\n }\n }\n\n amountChangedAllocation($event) {\n if (+$event.value > +this.initialAllocation) {\n this.qtyChanged = true;\n this.amountAdded = +$event.value - +this.initialAllocation;\n this.val$.next(+$event.value);\n\n this.product.quantity = this.amountAdded;\n } else {\n this.qtyChanged = false;\n this.amountAdded = 0;\n this.removeThisItem();\n\n this.product.quantity = this.amountAdded;\n }\n }\n\n updateAmount($event) {\n let foo = +$event.srcElement.value;\n this.amountAdded = foo;\n this.product.quantity = this.amountAdded;\n this.selectedValue = foo + +this.initialAllocation;\n }\n\n goToCart() {\n this.router.navigate(['/shoppingcart']);\n }\n\n //#endregion\n\n}\n","import { N3TEnvironment } from \"../../../shared/schema/enums\";\r\n\r\nexport class GetTenantOfferingItemsByEditionInput {\r\n uuid: string;\r\n edition: string;\r\n location: string;\r\n environment: N3TEnvironment;\r\n}","import { N3TEnvironment } from \"../../../shared/schema/enums\";\r\n\r\nexport class GetTenantUsagesInput {\r\n TenantUuid: string;\r\n location: string;\r\n environment: N3TEnvironment;\r\n}","export enum N3TEnvironment {\r\n DEV = 'DEV',\r\n PROD = 'PROD'\r\n}","import { DatacenterLocation } from \"../../../shared/schema/enums\";\r\n\r\nexport class TenantResources {\r\n id: number;\r\n totalStorage: number;\r\n servers: number;\r\n vms: number;\r\n workstations: number;\r\n mailboxes: number;\r\n fcTotalStorage: number;\r\n fcSeats: number;\r\n webHostingServers: number;\r\n o365Teams: number;\r\n gSuiteSeats: number;\r\n advServers: number;\r\n advVMS: number;\r\n advWorkstations: number;\r\n advWebHostingServers: number;\r\n packAdvManagement: number;\r\n packAdvSecurity: number;\r\n datacenterCode: DatacenterLocation\r\n orgName: string;\r\n timestamp: string;\r\n}","import { Quota } from \".\";\r\n\r\n\r\nexport class GetOfferingItem {\r\n id: number;\r\n usage_name: string; \r\n type: string; \r\n locked: boolean; \r\n measurement_unit: string; \r\n infra_id: string; \r\n edition: string; \r\n application_id: string; \r\n status: number; \r\n name: string; \r\n tenant_id: string; \r\n quota: Quota; \r\n updated_at: string \r\n }","
\r\n\r\n
\r\n
\r\n
\r\n

\r\n Loading... Resource: {{ resourceToString(resource) }}
\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Alert!\r\n \r\n
\r\n There was an issue retrieving Resource Ordering Data:
\r\n {{ errorMsg$ }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Resource: {{ resourceToString(resource) }}
\r\n Currently utilized: {{ initialUsage }} {{ units }}. Currently allocated (quota plus buffer): ~ {{ initialAllocation }} {{ units }}.
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {{ getResourceUnits(resource) }} more resources for {{ resourceToString(resource) }}?\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Item added to Cart!\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n","import { CommonService } from './../../_services/common.service';\r\nimport { BehaviorSubject, of } from 'rxjs';\r\nimport { ProductsService } from '@app/core/_services/products.service';\r\nimport { DatacenterLocations, ProductId } from '@app/core/_models/enums';\r\nimport { Component, OnInit, ChangeDetectionStrategy, Input, OnDestroy } from '@angular/core';\r\nimport { Options, LabelType } from '@angular-slider/ngx-slider';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport * as selectors from '@app/store/product/product.selectors';\r\nimport { SubSink } from 'subsink';\r\nimport { VDC } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { NumberSymbol } from '@angular/common';\r\nimport { ShoppingCartService } from '@app/core/_services/shoppingcart.service';\r\nimport { CartProduct } from '@app/core/_models/cart-product';\r\nimport { TypeProductModel, TypeProductPriceModel } from '@app/core/gql/graphql/products/schema/type';\r\nimport * as _ from 'underscore';\r\nimport { Router } from '@angular/router';\r\nimport { CompanyIdentifier } from '@app/core/gql/graphql/company/schema/type';\r\nimport { GetTenantOfferingItemsByEditionInput, GetTenantUsagesInput } from '@app/core/gql/graphql/backup/schema/input';\r\nimport { N3TEnvironment } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { GetOfferingItem, TenantResources } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n@Component({\r\n selector: 'pvdc-resource-dps',\r\n templateUrl: './resource-dps.component.html',\r\n styleUrls: ['./resource-dps.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ResourceDPSComponent implements OnInit, OnDestroy {\r\n private sub = new SubSink();\r\n\r\n loaded$: boolean = false;\r\n errorMsg$: string;\r\n isError$: boolean = false;\r\n\r\n display: boolean = true;\r\n \r\n @Input() resource: ProductId;\r\n @Input() location: DatacenterLocations;\r\n @Input() orgId: string;\r\n @Input() orgName: string;\r\n\r\n theCompanyIdentifier: CompanyIdentifier;\r\n\r\n private floorVal: number = 0;\r\n private ceilVal: number = 1;\r\n private currentVal: number = 0;\r\n private maxAmt: number = 1;\r\n private stepAmt: number = 1;\r\n\r\n private products: TypeProductPriceModel[];\r\n\r\n private vdc: VDC;\r\n\r\n public product = {};\r\n\r\n tenantUsage: TenantResources = new TenantResources();\r\n currentSettings: GetOfferingItem = new GetOfferingItem();\r\n\r\n initialUsage: number;\r\n initialAllocation: string;\r\n units: string = \"\";\r\n\r\n isPaygo: boolean = false;\r\n qtyChanged: boolean = false;\r\n itemAdded: boolean = false;\r\n\r\n amountAdded: number = 0;\r\n step: number = 1;\r\n\r\n selectedValue: number;\r\n\r\n value: number = this.currentVal;\r\n val$: BehaviorSubject = new BehaviorSubject(this.currentVal);\r\n maxValue: number = this.maxAmt;\r\n options: Options = {\r\n floor: this.floorVal,\r\n ceil: this.ceilVal,\r\n step: this.stepAmt,\r\n };\r\n\r\n // Reactive flavor\r\n sliderForm: FormGroup = new FormGroup({\r\n sliderControl: new FormControl([0, 0])\r\n });\r\n\r\n resetForm(): void {\r\n this.sliderForm.reset({sliderControl: [0, 0]});\r\n }\r\n\r\n\r\n constructor(\r\n private prodServ: ProductsService,\r\n private n3tStore: N3TStore,\r\n private shoppingCartSvc: ShoppingCartService,\r\n private commonSvc: CommonService,\r\n private router: Router,\r\n ) { }\r\n\r\n cartState$ = this.shoppingCartSvc.state$.pipe();\r\n\r\n ngOnInit(): void {\r\n // data\r\n\r\n let input = new GetTenantOfferingItemsByEditionInput();\r\n let inputUsage = new GetTenantUsagesInput();\r\n input.edition = \"pck_per_workload\";\r\n input.environment = N3TEnvironment.PROD;\r\n input.location = \"us-cloud.acronis.com\";\r\n input.uuid = this.orgId;\r\n inputUsage.TenantUuid = this.orgName;\r\n inputUsage.environment = N3TEnvironment.PROD;\r\n inputUsage.location = \"us-cloud.acronis.com\";\r\n this.n3tStore.dispatchGetTenantOfferingItems(input);\r\n this.n3tStore.dispatchGetTenantUsages(inputUsage);\r\n\r\n this.sub.sink = this.n3tStore.selectTenantOfferingItemsResult().subscribe(res => {\r\n this.loaded$ = res.isLoaded;\r\n this.isError$ = res.hasError;\r\n this.errorMsg$ = res.error;\r\n\r\n if (res.isLoaded && res.hasError !== true){\r\n this.products = this.prodServ.getProducts();\r\n\r\n if (this.products.length > 0) {\r\n \r\n this.sub.sink = this.n3tStore.selectTenantOfferingItems().subscribe(items => {\r\n this.currentSettings = _.findWhere(items, {usage_name: \"storage\", name: \"pw_base_storage\"});\r\n\r\n if (this.currentSettings !== undefined) {\r\n this.sub.sink = this.n3tStore.selectTenantUsagesResult().subscribe(res => {\r\n if (res.isLoaded && res.hasError !== true) {\r\n this.n3tStore.selectTenantUsages().subscribe(result => {\r\n if (result !== undefined && result.length > 0) {\r\n this.tenantUsage = result[0];\r\n this.setValues();\r\n this.setUpProduct();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n });\r\n }\r\n }\r\n });\r\n\r\n this.sub.sink = this.cartState$.subscribe();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n //#region Map to a Product/CartProduct for this resource\r\n\r\n setUpProduct() {\r\n\r\n let mode = \"DPS\";\r\n let parentId = \"\";\r\n\r\n let productTmp = _.findWhere(this.products, {\r\n datacenterCode: this.location.toString(),\r\n service: mode,\r\n productId: this.resource\r\n });\r\n\r\n if (productTmp !== undefined) {\r\n this.product.datacenter = this.location.toString();\r\n this.product.vdcid = \"\"; //this.vdc.id;\r\n this.product.serviceName = mode;\r\n this.product.selfServiceId = +productTmp.selfServiceId;\r\n this.product.price = +productTmp.productPrice;\r\n this.product.productName = productTmp.product;\r\n this.product.vdcName = \"\"; // this.vdc.name;\r\n this.product.remove = false;\r\n this.product.quantity = 0;\r\n this.product.maxAllocation = this.options.ceil;\r\n this.product.serviceLevelPercent = +productTmp.productServiceLevelPercent;\r\n this.product.discount = +productTmp.productDiscount;\r\n this.product.parentId = parentId;\r\n switch (productTmp.product) {\r\n case \"vCPU (per GHz)\":\r\n this.product.orderStep = 0.25;\r\n break;\r\n case \"Standard Storage (per GB)\":\r\n this.product.orderStep = 50;\r\n break;\r\n case \"Acronis Cloud Storage (per GB)\":\r\n this.product.orderStep = 50;\r\n break;\r\n default:\r\n this.product.orderStep = 1;\r\n break;\r\n } \r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Set the values based on mode\r\n\r\n setValues() {\r\n this.setValuesDPS();\r\n }\r\n\r\n setValuesDPS() {\r\n this.isPaygo = true;\r\n\r\n switch (this.resource) {\r\n case ProductId.AcronisCloudStorage:\r\n let storageRounded = Math.round(( (this.currentSettings.quota.value + this.currentSettings.quota.overage) / 1000 / 1000 / 1000)); // / 50)*50; // vdc.storageLimitMB\r\n this.sliderForm = new FormGroup({\r\n sliderControl: new FormControl([storageRounded])\r\n });\r\n this.value = storageRounded;\r\n this.val$.next(this.value);\r\n this.maxValue = Math.round((storageRounded + 20000000) / 1000);\r\n this.step = 50;\r\n this.options = {\r\n floor: 0,\r\n ceil: Math.round((storageRounded + 20000000) / 1000),\r\n step: this.step,\r\n showSelectionBarFromValue: storageRounded,\r\n translate: (value: number): string => {\r\n return value + ' GB';\r\n },\r\n minLimit: storageRounded\r\n };\r\n // Set initial values\r\n this.initialUsage = (this.tenantUsage.totalStorage/1000/1000/1000); // / 1000; // vdc.storageUsedMB\r\n this.initialAllocation = storageRounded.toString();\r\n //this.selectedValue = storageRounded;\r\n this.units = \"GB\"; \r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Item management\r\n\r\n public addProduct(product: CartProduct) {\r\n this.shoppingCartSvc.addProduct(product);\r\n }\r\n\r\n public removeProduct(product: CartProduct): void {\r\n this.shoppingCartSvc.removeProduct(product);\r\n }\r\n\r\n addThisItem() {\r\n this.itemAdded = true;\r\n\r\n // Create CartProduct from this resource\r\n this.product.remove = false;\r\n this.addProduct(this.product);\r\n\r\n }\r\n\r\n removeThisItem() {\r\n this.itemAdded = false;\r\n this.qtyChanged = false;\r\n this.setValues(); // this.vdc\r\n\r\n this.product.remove = true;\r\n this.removeProduct(this.product);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Helper methods\r\n\r\n resourceToString(resource: ProductId): string {\r\n return this.prodServ.resourceToString(resource);\r\n }\r\n\r\n resourceClassImage(resource: ProductId): string {\r\n return this.prodServ.resourceClassImage(resource);\r\n }\r\n\r\n getResourceUnits(resource: ProductId): string {\r\n return this.prodServ.getResourceUnits(resource);\r\n }\r\n\r\n amountChanged($event) {\r\n if (+$event.value > +this.initialAllocation) {\r\n this.qtyChanged = true;\r\n this.amountAdded = +$event.value - +this.initialAllocation;\r\n this.val$.next(+$event.value);\r\n\r\n this.product.quantity = this.amountAdded;\r\n } else {\r\n this.qtyChanged = false;\r\n this.amountAdded = 0;\r\n this.removeThisItem();\r\n\r\n this.product.quantity = this.amountAdded;\r\n }\r\n }\r\n\r\n updateAmount($event) {\r\n let foo = +$event.srcElement.value;\r\n this.amountAdded = foo;\r\n this.product.quantity = this.amountAdded;\r\n this.selectedValue = foo + +this.initialAllocation;\r\n }\r\n\r\n goToCart() {\r\n this.router.navigate(['/shoppingcart']);\r\n }\r\n\r\n //#endregion\r\n\r\n}\r\n","
\r\n
0\">\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n

\r\n Job Monitor\r\n Jobs status\r\n

\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n There are currently: {{jobCount}} jobs for this account.\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ","import { Component, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport {\r\n AlertService,\r\n} from \"@app/core/_services\";\r\nimport { Observable } from \"rxjs\";\r\nimport { SettingsModalService } from \"@app/shared/layout/settings-modal/settings-modal.service\";\r\nimport { BsModalRef, BsModalService } from \"ngx-bootstrap/modal\";\r\nimport { SubSink } from \"subsink\";\r\nimport { ProvisionJobService } from '@app/core/_services/provision-job.service';\r\nimport * as _ from \"underscore\";\r\n\r\n@Component({\r\n selector: \"pvdc-jobmonitor\",\r\n templateUrl: \"./jobmonitor.component.html\",\r\n styleUrls: [\"./jobmonitor.component.scss\"],\r\n})\r\nexport class JobmonitorComponent implements OnInit,OnDestroy {\r\n\r\n @ViewChild('template', {static: true}) template: any;\r\n\r\n modalRef: BsModalRef;\r\n\r\n private sub = new SubSink();\r\n\r\n loading: boolean = true;\r\n\r\n loaded$: boolean = false;\r\n errorMsg$: string;\r\n isError$: boolean = false;\r\n\r\n jobCount: number = 0;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private sms: SettingsModalService,\r\n private modalService: BsModalService,\r\n public provJobSvc: ProvisionJobService,\r\n ) {\r\n this.sub.sink = sms.openSettings$.subscribe(() => {\r\n this.showModal();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.sub.sink = this.provJobSvc.jobStatuses$.subscribe(results => {\r\n let tmpJobs = _.uniq(results, x => x.jobid);\r\n this.jobCount = tmpJobs.length;\r\n })\r\n }\r\n\r\n openModal($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.showModal();\r\n }\r\n\r\n private showModal() {\r\n this.modalRef = this.modalService.show(this.template, {\r\n class: 'modal-dialog-right modal-lg'\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { ProvisionJobStatus } from \"@app/core/_models/provision-job-status\";\r\nimport { ProvisionJobService } from \"@app/core/_services/provision-job.service\";\r\nimport { ProvisionJobStatusReq } from \"@app/core/_models/provision-job-status-req\";\r\n\r\n@Component({\r\n selector: \"pvdc-jobprogressbar\",\r\n templateUrl: \"./jobprogressbar.component.html\",\r\n styleUrls: [\"./jobprogressbar.component.scss\"],\r\n})\r\n\r\nexport class JobProgressBarComponent implements OnInit,OnDestroy {\r\n @Input() \r\n public set setJobStatusReq(jobStatusReq: ProvisionJobStatusReq) {\r\n this.jobStatusReq = jobStatusReq;\r\n this.povJobStatSvc.jobStatuses$.subscribe(statuses => {\r\n statuses.forEach(job => {\r\n if (this.jobStatusReq.jobid == job.jobid && this.jobStatusReq.location == job.location) {\r\n if (job.percentComplete > this.percentComplete && job.message != this.message) {\r\n this.percentComplete = job.percentComplete;\r\n console.log(this.percentComplete);\r\n this.message = job.message;\r\n this.status = job.status;\r\n this.jobid = job.jobid;\r\n this.location = job.location\r\n this.statuses.push(job);\r\n } \r\n }\r\n });\r\n });\r\n }\r\n\r\n public jobStatusReq: ProvisionJobStatusReq;\r\n public status: string = \"\";\r\n public message: string =\"\";\r\n public percentComplete: number = 0;\r\n public statuses: Array = [];\r\n public jobid: string = \"\";\r\n public location: string = \"\";\r\n\r\n\r\n constructor(private povJobStatSvc: ProvisionJobService) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnDestroy(): void {}\r\n}","\r\n

\r\n Order Location: {{ location }}\r\n

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Percent Complete: {{ percentComplete }}%\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n Status: {{ status }}\r\n
\r\n
\r\n Message: {{ message }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n","
\r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n
\r\n \r\n\r\n \r\n

\r\n Notifications\r\n Recent messages, alerts and notifications\r\n

\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ","import { ShoppingCartService } from '@app/core/_services/shoppingcart.service';\r\nimport { Component, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { AlertService, MessageService } from \"@app/core/_services\";\r\nimport { QueryRefService } from \"@app/core/_services/query-ref.service\";\r\nimport { N3TStore } from \"@app/core/_services/n3tStore.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { SettingsModalService } from \"@app/shared/layout/settings-modal/settings-modal.service\";\r\nimport { BsModalRef, BsModalService } from \"ngx-bootstrap/modal\";\r\nimport { SubSink } from \"subsink\";\r\nimport { AuthUser, N3tNotification } from \"@app/core/_models\";\r\n\r\n@Component({\r\n selector: \"pvdc-messages\",\r\n templateUrl: \"./messages.component.html\",\r\n styleUrls: [\"./messages.component.scss\"],\r\n})\r\nexport class MessagesComponent implements OnInit,OnDestroy {\r\n\r\n @ViewChild('template', {static: true}) template: any;\r\n\r\n modalRef: BsModalRef;\r\n\r\n private sub = new SubSink();\r\n\r\n loading: boolean = true;\r\n\r\n loaded$: boolean = false;\r\n errorMsg$: string;\r\n isError$: boolean = false;\r\n\r\n messages: Array = new Array();\r\n\r\n messages$: Observable;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private n3tStore: N3TStore,\r\n private router: Router,\r\n private sms: SettingsModalService,\r\n private modalService: BsModalService,\r\n private queryRefService: QueryRefService,\r\n private shoppingCartSvc: ShoppingCartService,\r\n private messageSvc: MessageService,\r\n ) {\r\n this.sub.sink = sms.openSettings$.subscribe(() => {\r\n this.showModal();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setTempMessages();\r\n }\r\n\r\n openModal($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.showModal();\r\n }\r\n\r\n private showModal() {\r\n this.modalRef = this.modalService.show(this.template, {\r\n class: 'modal-dialog-right modal-md'\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n setTempMessages() {\r\n this.messages.push(\"This is a message.\");\r\n this.messages.push(\"This is another message.\");\r\n this.messages.push(\"This is yet another one. Because we can.\");\r\n\r\n this.sub.sink = this.messageSvc.messages$.subscribe(result => {\r\n this.messages$ = of(result);\r\n })\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n Title: {{ theMessage.title }}
\r\n This is a message of type: {{ theMessage.type }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ theMessage.message }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { N3tNotification } from './../../_models/messages';\r\nimport { MessageService } from './../../_services/message.service';\r\nimport { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { SubSink } from 'subsink';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'pvdc-message',\r\n templateUrl: './message.component.html',\r\n styleUrls: ['./message.component.scss']\r\n})\r\nexport class MessageComponent implements OnInit, OnDestroy {\r\n\r\n private sub = new SubSink();\r\n\r\n public showMe: boolean = true;\r\n\r\n @Input() theMessage: N3tNotification;\r\n message: BehaviorSubject = new BehaviorSubject(\"This is a message.\");\r\n\r\n constructor(\r\n private messageSvc: MessageService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n hide(): void {\r\n this.theMessage.acknowledged = true;\r\n }\r\n\r\n acknowledgeMessage() {\r\n this.messageSvc.acknowledgeMessage();\r\n }\r\n\r\n}\r\n","
\n \n
\n\n\n \n\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'pvdc-booldisplay',\n templateUrl: './booldisplay.component.html',\n styleUrls: ['./booldisplay.component.scss']\n})\nexport class BooldisplayComponent implements OnInit {\n\n @Input() valueIn: any;\n value: boolean = false;\n\n constructor() { }\n\n ngOnInit(): void {\n // attempt to parse the input value to boolean true/false\n this.value = Boolean(this.valueIn);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaskgridComponent } from './taskgrid.component';\nimport { AlertModule } from 'ngx-bootstrap/alert';\nimport { TabsModule } from 'ngx-bootstrap/tabs';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { UtilsModule } from 'src/app/shared/utils/utils.module';\nimport { PanelsModule } from 'src/app/shared/panels/panels.module';\nimport { DataTablesModule } from 'angular-datatables';\n\n\n@NgModule({\n declarations: [TaskgridComponent],\n imports: [\n CommonModule,\n AlertModule,\n PanelsModule,\n UtilsModule,\n TabsModule,\n BsDropdownModule,\n DataTablesModule,\n ],\n exports: [TaskgridComponent]\n})\nexport class TaskgridModule { }\n","
\n
\n Virtual Machine
\n \n \n
\n

\n
\n
\n \n \n \n \n
\n \n
\n
\n
\n
\n \n {{ getFriendlyOSName(vm.guestOs) }}\n
\n
\n
\n
\n \n
\n
\n CPUs
\n {{ vm.numberOfCpus | number }}\n
\n
\n Region
\n {{ vm.region }}\n
\n
\n
\n
\n \n
\n
\n Memory
\n {{ vm.memoryMB | number }} MB\n
\n
\n Tools
\n {{ vm.vmToolsVersion }}\n
\n
\n
\n
\n \n
\n
\n Networks
\n \n
\n
\n
\n \n
\n
\n\n\n \n

\n Toggle Power Status\n Change power status for workload: {{vm.name}}?\n

\n \n \n \n \n
\n \n   \n \n
\n
\n","import { ComputeService } from '@app/core/_services/compute.service';\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { CloudmanageService } from '@app/core/_services/cloudmanage.service';\nimport { App } from '@app/core/gql/graphql/shared/schema/enums';\nimport { VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { Subscription } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'pvdc-workloadoverview',\n templateUrl: './workloadoverview.component.html',\n styleUrls: ['./workloadoverview.component.scss']\n})\nexport class WorkloadoverviewComponent implements OnInit {\n @ViewChild('template', {static: true}) template: any;\n\n modalRef: BsModalRef;\n\n @Input() vm: VMFlat;\n loadingConsole: boolean = false;\n error: boolean = false;\n errorMsg: string = \"\";\n public link = {};\n screenTicketSubscription: Subscription;\n env = environment;\n\n constructor(\n private computeService: ComputeService,\n private cloudmanageService: CloudmanageService, \n private modalService: BsModalService, \n ) { }\n\n ngOnInit(): void {\n }\n\n getFriendlyOSName(nameIn: string): string {\n return this.computeService.shortenOS(nameIn);\n }\n\n getDatacenterIcon(datacenter: string): string {\n return this.computeService.getDatacenterIcon(datacenter);\n }\n\n //#region Power toggle \n\n openModal($event: MouseEvent) {\n $event.preventDefault();\n this.showModal();\n }\n\n private showModal() {\n this.modalRef = this.modalService.show(this.template, {\n class: 'modal-alert' // 'modal-dialog-right modal-lg'\n });\n }\n\n togglePowerStatus() {\n let input = this.cloudmanageService.mapVMFlatToUpdatePowerStatusInput(this.vm);\n\n this.cloudmanageService.togglePowerStatus(this.vm, input);\n\n this.modalRef.hide();\n }\n\n cancel($event: MouseEvent) {\n $event.preventDefault();\n this.modalService\n }\n\n //#endregion\n\n //#region Retrieve VM screen ticket\n\n launchWebConsole() {\n this.screenTicketSubscription = this.cloudmanageService.getVMTicket(this.vm, App.vCloudDirector).subscribe(data=> {\n let ticket = data.data.ScreenTicket.screenTicket.result.result;\n if(ticket != null){\n const url = `${this.env.consoleUrl}?vmx=${ticket.vmx}&ticket=${ticket.ticket}&port=${ticket.port}&host=${ticket.host}`; //APP_CONFIG.consoleUrl + this.router.serializeUrl(tree); \n window.open(url, \"_blank\");\n this.screenTicketSubscription.unsubscribe();\n }\n });\n }\n\n //#endregion\n\n //#region VM Status helpers\n\n powerStatus(status: string): boolean {\n return this.cloudmanageService.powerStatusIsOn(status);\n }\n\n isOn(status: string): boolean {\n return this.cloudmanageService.isOn(status);\n }\n\n isOff(status: string): boolean {\n return this.cloudmanageService.isOff(status);\n }\n\n isWarning(status: string): boolean {\n return this.cloudmanageService.isWarning(status);\n }\n\n isUnknown(status: string): boolean {\n return this.cloudmanageService.isUnknown(status);\n }\n\n //#endregion\n\n}\n","export function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n","import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n","import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n","import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n printLocation,\n printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n return error.toJSON();\n}\n","/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n","import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n","/**\n * The set of allowed directive location values.\n */\nexport let DirectiveLocation;\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport let TokenKind;\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n\n(function (TokenKind) {\n TokenKind['SOF'] = '';\n TokenKind['EOF'] = '';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // \n\n case 0x0009: // \\t\n\n case 0x0020: // \n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n var _this$_options;\n\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (\n ((_this$_options = this._options) === null || _this$_options === void 0\n ? void 0\n : _this$_options.allowLegacyFragmentVariables) === true\n ) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n\n this._lexer.advance();\n\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n var _this$_options2;\n\n if (\n ((_this$_options2 = this._options) === null || _this$_options2 === void 0\n ? void 0\n : _this$_options2.noLocation) !== true\n ) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class CostApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getBillingInvoice(getBillingInvoice: input.GetBillingInvoiceInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetBillingInvoice(),\r\n variables: {\r\n getBillingInvoice: {\r\n companyId: getBillingInvoice.subscriptionId\r\n }\r\n }\r\n }).valueChanges;\r\n }\r\n\r\n public getCostFromBilling(\r\n getCostFromBilling: input.GetCostFromBillingInput\r\n ) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetCostFromBilling(),\r\n variables: {\r\n GetCostFromBillingInput: {\r\n companyId: getCostFromBilling.companyId,\r\n environment: getCostFromBilling.environment\r\n }\r\n }\r\n }).valueChanges;\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetBillingInvoice() {\r\n return gql`\r\n query GetBillingInvoice($getBillingInvoice: GetBillingInvoiceInput) {\r\n getBillingInvoice(getBillingInvoice: $getBillingInvoice) {\r\n success\r\n message\r\n invoiceResponse{\r\n parameters{\r\n apiversion\r\n subscriptionId\r\n }\r\n responses{\r\n responseCode {\r\n body {\r\n id\r\n name\r\n type\r\n properties{\r\n invoicePeriodStartDate\r\n invoicePeriodEndDate\r\n downloadUrl{\r\n expiryTime\r\n url\r\n }\r\n }\r\n }\r\n }\r\n }\r\n error{\r\n code\r\n message\r\n target\r\n }\r\n id\r\n type\r\n properties{\r\n invoicePeriodStartDate\r\n invoicePeriodEndDate\r\n downloadUrl{\r\n expiryTime\r\n url\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetCostFromBilling() {\r\n return gql`\r\n query getCostFromBilling($GetCostFromBillingInput: GetCostFromBillingInput) {\r\n getCostFromBilling(getCostFromBilling: $GetCostFromBillingInput) {\r\n success,\r\n message,\r\n costCompanyByIdResp{\r\n result{\r\n Org\r\n totalContractedCost\r\n totalContracedCostDiscounted\r\n totalActualCost\r\n totalActualCostDiscounted\r\n totalRetailCost\r\n totalRetailCostDiscounted\r\n products{\r\n retailCostContracted\r\n actualCostDiscounted\r\n actualCost\r\n contractCostDiscounted\r\n contractCost\r\n inRange\r\n retailProductPrice\r\n quantity\r\n productPrice\r\n retailCostContractedDiscounted\r\n variancePercent\r\n varianceAllowed\r\n usageDifference\r\n actualUsage\r\n contractedUsage\r\n unit\r\n product\r\n datacenter\r\n provider\r\n service\r\n discountPercent\r\n retailCostContractedActual\r\n }\r\n }\r\n responseStatus {\r\n message\r\n stackTrace\r\n errors{\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n errorCode\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n\r\n","import { CostApollo } from './costApollo';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class CostProxy {\r\n constructor(private costApollo: CostApollo) {}\r\n\r\n public getBillingInvoice(getBillingInvoice: input.GetBillingInvoiceInput) {\r\n return this.costApollo.getBillingInvoice(getBillingInvoice);\r\n }\r\n\r\n public getCostFromBilling(getCostFromBilling: input.GetCostFromBillingInput) {\r\n return this.costApollo.getCostFromBilling(getCostFromBilling); \r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\n//import * as query from './schema/query';\r\nimport * as input from './schema/input/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class BrsApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getBRSLinks(orgInfo: input.Recovery) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationBRSLinks(),\r\n variables: {\r\n orgInfo: {\r\n orgs: orgInfo.orgs,\r\n companyIdentifiers: orgInfo.companyIdentifiers\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationBRSLinks() {\r\n return gql`\r\n mutation getBRSLinks($orgInfo: Recovery) {\r\n BRSLinks:getBRSLinks(orgInfo: $orgInfo){\r\n brsLinks {\r\n key\r\n value\r\n }\r\n message\r\n success\r\n }\r\n }\r\n `;\r\n}","import { BrsApollo } from './brsApollo';\r\nimport { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as response from './schema/type/index';\r\nimport { BehaviorSubject, from, Observable, of } from 'rxjs';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { BRSLink } from './schema/type/index';\r\nimport { Store } from '@ngrx/store';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class BrsProxy {\r\n public brsLinks: Observable;\r\n \r\n private brsLinksSubject = new BehaviorSubject([]);\r\n\r\n public get getBrsLinksValue(): response.BRSLink[] {\r\n return this.brsLinksSubject.value;\r\n }\r\n\r\n constructor(private brsApollo: BrsApollo, \r\n private n3tStore: N3TStore,\r\n private store: Store) { \r\n this.brsLinks = n3tStore.selectBrsLinks();\r\n this.brsLinks.subscribe(x => this.brsLinksSubject.next(x));\r\n }\r\n\r\n public getBRSLinks(orgInfo: input.Recovery): Observable {\r\n return this.brsApollo.getBRSLinks(orgInfo)\r\n .pipe(map(result => {\r\n let links: BRSLink[] = new Array();\r\n links = result.data['BRSLinks'].brsLinks;\r\n return links;\r\n }));\r\n }\r\n}\r\n","import { Apollo } from \"apollo-angular\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport * as input from \"./schema/input/index\";\r\nimport * as mutation from \"./schema/mutation/index\";\r\nimport * as query from \"./schema/query/index\";\r\nimport * as response from \"./schema/type/index\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class DpsApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getBackupsAll(getBackupsAllInput: input.GetBackupsAllInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetBackupsAll(),\r\n variables: {\r\n getBackupsAllInput: {\r\n sessionIds: getBackupsAllInput.sessionIds,\r\n companyIdentifiers: getBackupsAllInput.companyIdentifiers\r\n }\r\n }\r\n }).valueChanges;\r\n } //getBackupsAll\r\n\r\n getHostBackup(getHostBackupInput: input.GetHostBackupInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetHostBackup(),\r\n variables: {\r\n getHostBackupInput: {\r\n datacenterLocation: getHostBackupInput.datacenterLocation,\r\n sessionId: getHostBackupInput.sessionId,\r\n appId: getHostBackupInput.appId,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getHostBackup\r\n\r\n getHostBackups(getHostBackupsInput: input.GetHostBackupsInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetHostBackups(),\r\n variables: {\r\n getHostBackupsInput: {\r\n datacenterLocation: getHostBackupsInput.datacenterLocation,\r\n appName: getHostBackupsInput.appName,\r\n sessionId: getHostBackupsInput.sessionId,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getHostBackups\r\n\r\n getDPSJobStatus(getDPSJobStatusInput: input.GetDPSJobStatusInput, pollingInterval: number = 0) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetDPSJobStatus(),\r\n pollInterval: pollingInterval,\r\n variables: {\r\n getDPSJobStatusInput: {\r\n datacenterLocation: getDPSJobStatusInput.datacenterLocation,\r\n jobid: getDPSJobStatusInput.jobid,\r\n sessionId: getDPSJobStatusInput.sessionId,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getDPSJobStatus\r\n\r\n getActiveMountStatus(getActiveMountStatusInput: input.GetActiveMountStatusInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetActiveMountStatus(),\r\n variables: {\r\n getActiveMountStatusInput: {\r\n datacenterLocation: getActiveMountStatusInput.datacenterLocation,\r\n appid: getActiveMountStatusInput.appid,\r\n sessionid: getActiveMountStatusInput.sessionid,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getActiveMountStatus\r\n\r\n getBackupPolicyTemplates(getBackupPolicyTemplatesInput: input.GetBackupPolicyTemplatesInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetBackupPolicyTemplates(),\r\n variables: {\r\n getBackupPolicyTemplatesInput: {\r\n datacenterLocation: getBackupPolicyTemplatesInput.datacenterLocation,\r\n sessionId: getBackupPolicyTemplatesInput.sessionId,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getBackupPolicyTemplates\r\n\r\n getBackupPolicies(getBackupPoliciesInput: input.GetBackupPoliciesInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetBackupPolicies(),\r\n variables: {\r\n getBackupPoliciesInput: {\r\n datacenterLocation: getBackupPoliciesInput.datacenterLocation,\r\n sltid: getBackupPoliciesInput.sltid,\r\n sessionId: getBackupPoliciesInput.sessionId,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getBackupPolicies\r\n\r\n getBackupProfiles(getBackupProfilesInput: input.GetBackupProfilesInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetBackupProfiles(),\r\n variables: {\r\n getBackupProfilesInput: {\r\n datacenterLocation: getBackupProfilesInput.datacenterLocation,\r\n sessionId: getBackupProfilesInput.sessionId,\r\n },\r\n },\r\n }).valueChanges;\r\n } //getBackupProfiles\r\n\r\n doDPSRestore(doDPSRestoreInput: input.DoDPSRestoreInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoDPSRestore(),\r\n variables: {\r\n doDPSRestoreInput: {\r\n datacenterLocation: doDPSRestoreInput.datacenterLocation,\r\n backup: doDPSRestoreInput.backup,\r\n sessionId: doDPSRestoreInput.sessionId,\r\n },\r\n },\r\n });\r\n } //doDPSRestore\r\n\r\n doCloneProcess(doCloneProcessInput: input.DoCloneProcessInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoCloneProcess(),\r\n variables: {\r\n doCloneProcessInput: {\r\n sessionid: doCloneProcessInput.sessionid,\r\n isRemote: doCloneProcessInput.isRemote,\r\n orgName: doCloneProcessInput.orgName,\r\n image: doCloneProcessInput.image,\r\n datacenterLocation: doCloneProcessInput.datacenterLocation,\r\n clonename: doCloneProcessInput.clonename,\r\n userId: doCloneProcessInput.userId,\r\n customerId: doCloneProcessInput.customerId,\r\n },\r\n },\r\n });\r\n } //doCloneProcess\r\n\r\n doMountProcess(doMountProcessInput: input.DoMountProcessInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoMountProcess(),\r\n variables: {\r\n doMountProcessInput: {\r\n sessionid: doMountProcessInput.sessionid,\r\n isRemote: doMountProcessInput.isRemote,\r\n orgName: doMountProcessInput.orgName,\r\n image: doMountProcessInput.image,\r\n datacenterLocation: doMountProcessInput.datacenterLocation,\r\n userId: doMountProcessInput.userId,\r\n customerId: doMountProcessInput.customerId,\r\n },\r\n },\r\n });\r\n } //doMountProcess\r\n\r\n resumeProtection(resumeProtectionInput: input.ResumeProtectionInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationResumeProtection(),\r\n variables: {\r\n resumeProtectionInput: {\r\n sessionid: resumeProtectionInput.sessionid,\r\n orgname: resumeProtectionInput.orgname,\r\n datacenterLocation: resumeProtectionInput.datacenterLocation,\r\n appid: resumeProtectionInput.appid,\r\n },\r\n },\r\n });\r\n } //resumeProtection\r\n\r\n removeProtection(removeProtectionInput: input.RemoveProtectionInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationRemoveProtection(),\r\n variables: {\r\n RemoveProtectionInput: {\r\n sessionid: removeProtectionInput.sessionid,\r\n slaid: removeProtectionInput.slaid,\r\n datacenterLocation: removeProtectionInput.datacenterLocation,\r\n },\r\n },\r\n });\r\n } //removeProtection\r\n\r\n toggleProtection(toggleProtectionInput: input.ToggleProtectionInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationToggleProtection(),\r\n variables: {\r\n toggleProtectionInput: {\r\n sessionid: toggleProtectionInput.sessionid,\r\n appid: toggleProtectionInput.appid,\r\n slaid: toggleProtectionInput.slaid,\r\n datacenterLocation: toggleProtectionInput.datacenterLocation,\r\n scheduleoff: toggleProtectionInput.scheduleoff,\r\n expirationoff: toggleProtectionInput.expirationoff,\r\n },\r\n },\r\n });\r\n } //toggleProtection\r\n\r\n doMountBackProcess(doMountBackProcessInput: input.DoMountBackProcessInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoMountBackProcess(),\r\n variables: {\r\n doMountBackProcessInput: {\r\n sessionid: doMountBackProcessInput.sessionid,\r\n image: doMountBackProcessInput.image,\r\n datacenterLocation: doMountBackProcessInput.datacenterLocation,\r\n },\r\n },\r\n });\r\n } //doMountBackProcess\r\n\r\n doUnMountProcess(doUnMountProcessInput: input.DoUnMountProcessInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoUnMountProcess(),\r\n variables: {\r\n doUnMountProcessInput: {\r\n datacenterLocation: doUnMountProcessInput.datacenterLocation,\r\n image: doUnMountProcessInput.image,\r\n sessionid: doUnMountProcessInput.sessionid,\r\n },\r\n },\r\n });\r\n } //doUnMountProcess\r\n\r\n doImageExpire(doImageExpireInput: input.DoImageExpireInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoImageExpire(),\r\n variables: {\r\n doImageExpireInput: {\r\n datacenterLocation: doImageExpireInput.datacenterLocation,\r\n backupname: doImageExpireInput.backupname,\r\n sessionId: doImageExpireInput.sessionId,\r\n },\r\n },\r\n });\r\n } //doImageExpire\r\n\r\n doBackupOnDemand(doBackupOnDemandInput: input.DoBackupOnDemandInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDoBackupOnDemand(),\r\n variables: {\r\n doBackupOnDemandInput: {\r\n sessionId: doBackupOnDemandInput.sessionId,\r\n datacenterLocation: doBackupOnDemandInput.datacenterLocation,\r\n appid: doBackupOnDemandInput.appid,\r\n policyid: doBackupOnDemandInput.policyid,\r\n },\r\n },\r\n });\r\n } //doBackupOnDemand\r\n\r\n applyBackupPolicy(applyBackupPolicyInput: input.ApplyBackupPolicyInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationApplyBackupPolicy(),\r\n variables: {\r\n applyBackupPolicyInput: {\r\n sessionId: applyBackupPolicyInput.sessionId,\r\n datacenterLocation: applyBackupPolicyInput.datacenterLocation,\r\n appid: applyBackupPolicyInput.appid,\r\n slpid: applyBackupPolicyInput.slpid,\r\n sltid: applyBackupPolicyInput.sltid,\r\n orgName: applyBackupPolicyInput.orgName,\r\n },\r\n },\r\n });\r\n } //applyBackupPolicy\r\n\r\n discoverVMByName(discoverVMByNameInput: input.DiscoverVMByNameInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDiscoverVMByName(),\r\n variables: {\r\n discoverVMByNameInput: {\r\n sessionId: discoverVMByNameInput.sessionId,\r\n datacenterLocation: discoverVMByNameInput.datacenterLocation,\r\n vmName: discoverVMByNameInput.vmName,\r\n orgName: discoverVMByNameInput.orgName,\r\n },\r\n },\r\n });\r\n } //discoverVMByName\r\n\r\n syncback(syncbackInput: input.SyncbackInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationSyncback(),\r\n variables: {\r\n syncbackInput: {\r\n appId: syncbackInput.appId,\r\n sessionId: syncbackInput.sessionId,\r\n datacenterLocation: syncbackInput.datacenterLocation\r\n }\r\n }\r\n });\r\n } //syncback\r\n\r\n getProcessJobStatus(processJobStatusInput: input.ProcessJobStatusInput, pollingInterval: number = 0) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationProcessJobStatus(),\r\n // pollInterval: pollingInterval,\r\n variables: {\r\n processJobStatusInput: {\r\n userId: processJobStatusInput.userId,\r\n processid: processJobStatusInput.processid\r\n }\r\n }\r\n });\r\n } //processJobStatus\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetBackupsAll() {\r\n return gql`\r\nquery getBackupsAll($getBackupsAllInput: GetBackupsAllInput) { \r\n Backups: getBackupsAll(getBackupsAllInput: $getBackupsAllInput) {\r\n success\r\n message\r\n code\r\n backupsAllResponse {\r\n hostname\r\n result {\r\n jobid\r\n StatusCode\r\n Content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n hostApp {\r\n appname\r\n apptype\r\n auxinfo\r\n description\r\n failoverstate\r\n friendlytype\r\n hostid\r\n id\r\n lastfailover\r\n protectable\r\n sourcecluster\r\n username\r\n volumes\r\n }\r\n statusCode\r\n updatedate\r\n uploadversion\r\n hosttype\r\n connectorversion\r\n targetcluster\r\n sourcecluster\r\n isvcenterhost\r\n hasagent\r\n osrelease\r\n vmtype\r\n hostname\r\n isesxhost\r\n hostBackups {\r\n result {\r\n sltname\r\n slpname\r\n appid\r\n apptype\r\n status\r\n backupdate\r\n backuphost\r\n backuplock\r\n backupname\r\n capacity\r\n consistencydate\r\n expiration\r\n hostconsistencydate\r\n hostname\r\n id\r\n isbootvmdk\r\n isbootvolume\r\n jobclass\r\n jobid\r\n modifydate\r\n originalappid\r\n originatingcluster\r\n originatinguds\r\n policyid\r\n policyname\r\n preserved\r\n readyvm\r\n restorelock\r\n sensitivity\r\n sla {\r\n appid\r\n dedupasyncoff\r\n description\r\n expirationoff\r\n id\r\n modifydate\r\n scheduleoff\r\n slpid\r\n sltid\r\n }\r\n sourcecluster\r\n sourceimage\r\n sourceuds\r\n status\r\n systemstateCPU\r\n systemstateMemory\r\n systemstateBootDiskSize\r\n targetcluster\r\n targetuds\r\n uniquehostname\r\n username\r\n virtualsize\r\n vmname\r\n volumelabel\r\n }\r\n }\r\n isvm\r\n vcenterhostid\r\n isclusterhost\r\n description\r\n timezone\r\n originalhostid\r\n id\r\n alternateip\r\n osversion\r\n uniquename\r\n ipaddress\r\n ostype\r\n installeddate\r\n svcname\r\n friendlypath\r\n modifydate\r\n hostSLA {\r\n appid\r\n description\r\n id\r\n }\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n `}","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetHostBackup() {\r\n return gql`\r\n query getHostBackup($getHostBackupInput: GetHostBackupInput) {\r\n getHostBackup(getHostBackupInput: $getHostBackupInput) {\r\n success\r\n message\r\n hostBackupResponse {\r\n responseStatus {\r\n stackTrace\r\n message\r\n errorCode\r\n errors {\r\n errorCode\r\n message\r\n fieldName\r\n }\r\n }\r\n result {\r\n pathname\r\n networkip\r\n networkname\r\n ignore\r\n friendlytype\r\n failoverstate\r\n apptype\r\n originalappid\r\n sourcecluster\r\n isclustered\r\n appname\r\n lastfailover\r\n hostid\r\n username\r\n volumes\r\n morecredentials\r\n appversion\r\n protectable\r\n auxinfo\r\n id\r\n description\r\n sla {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n }\r\n }\r\n }\r\n } #getHostBackup\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetHostBackups() {\r\n return gql`\r\n query getHostBackups($getHostBackupsInput: GetHostBackupsInput) {\r\n getHostBackups(getHostBackupsInput: $getHostBackupsInput) {\r\n success\r\n message\r\n hostBackups {\r\n pathname\r\n networkip\r\n networkname\r\n ignore\r\n friendlytype\r\n failoverstate\r\n apptype\r\n originalappid\r\n sourcecluster\r\n isclustered\r\n appname\r\n lastfailover\r\n hostid\r\n username\r\n volumes\r\n morecredentials\r\n appversion\r\n protectable\r\n auxinfo\r\n id\r\n description\r\n sla {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n } # hostBackups\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetDPSJobStatus() {\r\n return gql`\r\n query getDPSJobStatus($getDPSJobStatusInput: GetDPSJobStatusInput) {\r\n getDPSJobStatus(getDPSJobStatusInput: $getDPSJobStatusInput) {\r\n success\r\n message\r\n dpsJobStatus {\r\n targethost\r\n sourceid\r\n appname\r\n sltname\r\n retrycount\r\n startdate\r\n consistencydate\r\n pid\r\n hostname\r\n status\r\n relativesize\r\n flags\r\n jobclass\r\n errorcode\r\n jobtag\r\n description\r\n changerequest\r\n priority\r\n jobcount\r\n id\r\n policyname\r\n parentid\r\n appid\r\n expirationdate\r\n jobname\r\n queuedate\r\n virtualsize\r\n progress\r\n isscheduled\r\n enddate\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetActiveMountStatus() {\r\n return gql`\r\n query getActiveMountStatus($getActiveMountStatusInput: GetActiveMountStatusInput) {\r\n getActiveMountStatus( getActiveMountStatusInput: $getActiveMountStatusInput ) {\r\n success\r\n message\r\n activeMountStatus {\r\n virtualsize\r\n physicalRDM\r\n sourceUDS\r\n state\r\n sourcename\r\n consistencydatedate\r\n date\r\n dnsname\r\n islvm\r\n clusteredhost\r\n vmname\r\n mountedhost\r\n sourceimage\r\n vmpath\r\n mounthost {\r\n friendlypath\r\n id\r\n isvm\r\n hostname\r\n uniquename\r\n }\r\n sourcetype\r\n vminfo {\r\n volumeUID\r\n uniqueid\r\n hostmapping {\r\n uniqueid\r\n volumekey\r\n target\r\n capacity\r\n }\r\n volumekey\r\n target\r\n isbootvmdk\r\n capacity\r\n filename\r\n label\r\n logicalname\r\n datastore\r\n islvm\r\n sourcemountpoint\r\n }\r\n expiration\r\n status\r\n mountedmountpoint\r\n restorableobjects {\r\n name\r\n volumeinfo {\r\n volumeUID\r\n uniqueid\r\n hostmapping {\r\n uniqueid\r\n volumekey\r\n target\r\n capacity\r\n }\r\n volumekey\r\n target\r\n isbootvmdk\r\n capacity\r\n filename\r\n label\r\n logicalname\r\n datastore\r\n islvm\r\n sourcemountpoint\r\n }\r\n }\r\n hostname\r\n esxhost\r\n flr\r\n isexported\r\n baseimageid\r\n startdate\r\n backupname\r\n backupId\r\n appname\r\n backuptype\r\n sourceid\r\n mountedvdisk\r\n nvolumes\r\n label\r\n pathseparator\r\n prepdate\r\n modifiedbytes\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetBackupPolicyTemplates() {\r\n return gql`\r\n query getBackupPolicyTemplates($getBackupPolicyTemplatesInput: GetBackupPolicyTemplatesInput) {\r\n getBackupPolicyTemplates(getBackupPolicyTemplatesInput: $getBackupPolicyTemplatesInput) {\r\n success\r\n message\r\n policyTemplates {\r\n id\r\n override\r\n description\r\n name\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetBackupPolicies() {\r\n return gql`\r\n query getBackupPolicies($getBackupPoliciesInput: GetBackupPoliciesInput) {\r\n getBackupPolicies(getBackupPoliciesInput: $getBackupPoliciesInput) {\r\n success\r\n message\r\n backupPolicies {\r\n jobid\r\n StatusCode\r\n Content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n rpom\r\n sltid\r\n selection\r\n retentionm\r\n repeatinterval\r\n policytype\r\n exclusioninterval\r\n exclusion\r\n exclusiontype\r\n starttime\r\n name\r\n encrypt\r\n priority\r\n description\r\n scheduletype\r\n rpo\r\n endtime\r\n id\r\n retention\r\n op\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryGetBackupProfiles() {\r\n return gql`\r\n query getBackupProfiles($getBackupProfilesInput: GetBackupProfilesInput) {\r\n getBackupProfiles(getBackupProfilesInput: $getBackupProfilesInput) {\r\n success\r\n message\r\n backupProfiles {\r\n id\r\n description\r\n name\r\n performancePool\r\n primaryStorage\r\n remoteNode\r\n localNode\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoDPSRestore() {\r\n return gql`\r\n mutation doDPSRestore($doDPSRestoreInput: DoDPSRestoreInput) {\r\n doDPSRestore(doDPSRestoreInput: $doDPSRestoreInput) {\r\n success\r\n message\r\n backupResponse {\r\n jobid\r\n statusCode\r\n content\r\n errorCode\r\n errorStatus\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoCloneProcess() {\r\n return gql`\r\n mutation doCloneProcess($doCloneProcessInput: DoCloneProcessInput) {\r\n doCloneProcess(doCloneProcessInput: $doCloneProcessInput) {\r\n success\r\n message\r\n cloneProcess {\r\n jobStatusPollingType_Id\r\n jobStatus_Percentage\r\n jobType_Id\r\n updated_By\r\n updated_UTC\r\n created_By\r\n created_UTC\r\n finish_UTC\r\n actifio_JobId\r\n start_UTC\r\n uRI\r\n verb\r\n status\r\n precedence\r\n customer_Id\r\n job_Id\r\n user_Id\r\n process_Id\r\n body\r\n retry\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoMountProcess() {\r\n return gql`\r\n mutation doMountProcess($doMountProcessInput: DoMountProcessInput) {\r\n doMountProcess(doMountProcessInput: $doMountProcessInput) {\r\n success\r\n message\r\n mountProcess {\r\n jobStatusPollingType_Id\r\n jobStatus_Percentage\r\n jobType_Id\r\n updated_By\r\n updated_UTC\r\n created_By\r\n created_UTC\r\n finish_UTC\r\n actifio_JobId\r\n start_UTC\r\n uRI\r\n verb\r\n status\r\n precedence\r\n customer_Id\r\n job_Id\r\n user_Id\r\n process_Id\r\n body\r\n retry\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationResumeProtection() {\r\n return gql`\r\n mutation resumeProtection($resumeProtectionInput: ResumeProtectionInput) {\r\n resumeProtection(resumeProtectionInput: $resumeProtectionInput) {\r\n success\r\n message\r\n resumeProtection {\r\n jobid\r\n statusCode\r\n content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationRemoveProtection() {\r\n return gql`\r\n mutation removeProtection($removeProtectionInput: RemoveProtectionInput) {\r\n removeProtection(removeProtectionInput: $removeProtectionInput) {\r\n success\r\n message\r\n removeProtection {\r\n result {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationToggleProtection() {\r\n return gql`\r\n mutation toggleProtection($toggleProtectionInput: ToggleProtectionInput) {\r\n toggleProtection(toggleProtectionInput: $toggleProtectionInput) {\r\n success\r\n message\r\n removeProtection {\r\n result {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoMountBackProcess() {\r\n return gql`\r\n mutation doMountBackProcess($doMountBackProcessInput: DoMountBackProcessInput ) {\r\n doMountBackProcess(doMountBackProcessInput: $doMountBackProcessInput) {\r\n success\r\n message\r\n mountBackProcess {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoUnMountProcess() {\r\n return gql`\r\n mutation doUnMountProcess($doUnMountProcessInput: DoUnMountProcessInput) {\r\n doUnMountProcess(doUnMountProcessInput: $doUnMountProcessInput) {\r\n success\r\n message\r\n unMountProcess {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoImageExpire() {\r\n return gql`\r\n mutation doImageExpire($doImageExpireInput: DoImageExpireInput) {\r\n doImageExpire(doImageExpireInput: $doImageExpireInput) {\r\n success\r\n message\r\n imageExpire {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDoBackupOnDemand() {\r\n return gql`\r\n mutation doBackupOnDemand($doBackupOnDemandInput: DoBackupOnDemandInput) {\r\n doBackupOnDemand(doBackupOnDemandInput: $doBackupOnDemandInput) {\r\n success\r\n message\r\n backupOnDemand {\r\n jobid\r\n StatusCode\r\n Content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n sourcecluster\r\n modifiedbytes\r\n consistencymode\r\n sensitivity\r\n backuphost\r\n isbootvolume\r\n filename\r\n backuplock\r\n restorableobject\r\n uniquehostname\r\n catalogstate\r\n mappedhost\r\n systemstateCPU\r\n originatingcluster\r\n volumekey\r\n originatinguds\r\n hostconsistencydate\r\n systemstateMemory\r\n expirytries\r\n readyvm\r\n componenttype\r\n depth\r\n targetuds\r\n target\r\n esxhost\r\n transport\r\n systemstateBootDiskSize\r\n uniqueid\r\n targetcluster\r\n poolid\r\n policyid\r\n capacity\r\n characteristic\r\n vmname\r\n originalappid\r\n nvolumes\r\n dnsname\r\n preserved\r\n id\r\n consistencydate\r\n policyname\r\n label\r\n appid\r\n hostname\r\n backupdate\r\n expiration\r\n sourceuds\r\n flags\r\n jobclass\r\n modifydate\r\n originalbackupid\r\n virtualsize\r\n status\r\n mountedhost\r\n username\r\n backupname\r\n nasstaging\r\n volumelabel\r\n restorelock\r\n logtruncated\r\n systemstateNIC\r\n systemstateOSType\r\n sla {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n vmpath\r\n datastore\r\n apptype\r\n appname\r\n slpname\r\n prepdate\r\n sourceimage\r\n sltname\r\n isbootvmdk\r\n logicalname\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationApplyBackupPolicy() {\r\n return gql`\r\n mutation applyBackupPolicy($applyBackupPolicyInput: ApplyBackupPolicyInput) {\r\n applyBackupPolicy(applyBackupPolicyInput: $applyBackupPolicyInput) {\r\n success\r\n message\r\n backupPolicy {\r\n id\r\n modifydate\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDiscoverVMByName() {\r\n return gql`\r\n mutation discoverVMByName($discoverVMByNameInput: DiscoverVMByNameInput) {\r\n discoverVMByName(discoverVMByNameInput: $discoverVMByNameInput) {\r\n success\r\n message\r\n vmName {\r\n jobid\r\n StatusCode\r\n Content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n hostApp {\r\n jobid\r\n StatusCode\r\n Content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n networkip\r\n networkname\r\n ignore\r\n friendlytype\r\n failoverstate\r\n apptype\r\n originalappid\r\n sourcecluster\r\n appname\r\n description\r\n lastfailover\r\n hostid\r\n username\r\n volumes\r\n morecredentials\r\n appversion\r\n protectable\r\n auxinfo\r\n id\r\n pathname\r\n isclustered\r\n }\r\n statusCode\r\n updatedate\r\n uploadversion\r\n hosttype\r\n connectorversion\r\n targetcluster\r\n sourcecluster\r\n isvcenterhost\r\n hasagent\r\n osrelease\r\n vmtype\r\n hostname\r\n isesxhost\r\n hostBackups {\r\n result {\r\n jobid\r\n StatusCode\r\n Content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n sourcecluster\r\n modifiedbytes\r\n consistencymode\r\n sensitivity\r\n backuphost\r\n isbootvolume\r\n filename\r\n backuplock\r\n restorableobject\r\n uniquehostname\r\n catalogstate\r\n mappedhost\r\n systemstateCPU\r\n originatingcluster\r\n volumekey\r\n originatinguds\r\n hostconsistencydate\r\n systemstateMemory\r\n expirytries\r\n readyvm\r\n componenttype\r\n depth\r\n targetuds\r\n target\r\n esxhost\r\n transport\r\n systemstateBootDiskSize\r\n uniqueid\r\n targetcluster\r\n poolid\r\n policyid\r\n capacity\r\n characteristic\r\n vmname\r\n originalappid\r\n nvolumes\r\n dnsname\r\n preserved\r\n id\r\n consistencydate\r\n policyname\r\n label\r\n appid\r\n hostname\r\n backupdate\r\n expiration\r\n sourceuds\r\n flags\r\n jobclass\r\n modifydate\r\n originalbackupid\r\n virtualsize\r\n status\r\n mountedhost\r\n username\r\n backupname\r\n nasstaging\r\n volumelabel\r\n restorelock\r\n logtruncated\r\n systemstateNIC\r\n systemstateOSType\r\n sla {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n vmpath\r\n datastore\r\n apptype\r\n appname\r\n slpname\r\n prepdate\r\n sourceimage\r\n sltname\r\n isbootvmdk\r\n logicalname\r\n }\r\n }\r\n isvm\r\n vcenterhostid\r\n isclusterhost\r\n description\r\n timezone\r\n originalhostid\r\n id\r\n alternateip\r\n osversion\r\n uniquename\r\n ipaddress\r\n ostype\r\n installeddate\r\n svcname\r\n friendlypath\r\n modifydate\r\n hostSLA {\r\n id\r\n modifydate\r\n expirationoff\r\n slpid\r\n description\r\n createdate\r\n dedupasyncoff\r\n appid\r\n scheduleoff\r\n sltid\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationSyncback() {\r\n return gql`\r\n mutation syncback($syncbackInput: SyncbackInput) {\r\n syncback(syncbackInput: $syncbackInput) {\r\n success\r\n message\r\n Result {\r\n result {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from \"graphql-tag\";\r\n\r\nexport function mutationProcessJobStatus() {\r\n return gql`\r\n mutation getProcessJobStatus($processJobStatusInput: ProcessJobStatusInput) {\r\n ProcessJobStatus: getProcessJobStatus(processJobStatusInput: $processJobStatusInput) {\r\n success\r\n message\r\n processJobResponse {\r\n Id\t\r\n User_Id\t\r\n Process_Id\t\r\n Job_Id\t\r\n Customer_Id\t\r\n Precedence\t\r\n Status\t\r\n Name\t\r\n Created_UTC\t\r\n Start_UTC\t\r\n Finish_UTC\t\r\n Updated_UTC\t\r\n JobType\t\r\n JobStatus_Percentage\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { DpsApollo } from './dpsApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class DpsProxy {\r\n constructor(private dpsApollo: DpsApollo) {}\r\n\r\n getBackupsAll(getBackupsAllInput: input.GetBackupsAllInput): Observable {\r\n return this.dpsApollo.getBackupsAll(getBackupsAllInput);\r\n }\r\n\r\n getHostBackup(getHostBackupInput: input.GetHostBackupInput): Observable {\r\n return this.dpsApollo.getHostBackup(getHostBackupInput);\r\n }\r\n\r\n getHostBackups(getHostBackupsInput: input.GetHostBackupsInput): Observable {\r\n return this.dpsApollo.getHostBackups(getHostBackupsInput);\r\n }\r\n\r\n getDPSJobStatus(getDPSJobStatusInput: input.GetDPSJobStatusInput, pollingInterval: number = 0): Observable {\r\n return this.dpsApollo.getDPSJobStatus(getDPSJobStatusInput, pollingInterval);\r\n }\r\n\r\n getActiveMountStatus(getActiveMountStatusInput: input.GetActiveMountStatusInput): Observable {\r\n return this.dpsApollo.getActiveMountStatus(getActiveMountStatusInput);\r\n }\r\n\r\n getBackupPolicyTemplates(getBackupPolicyTemplatesInput: input.GetBackupPolicyTemplatesInput): Observable {\r\n return this.dpsApollo.getBackupPolicyTemplates(getBackupPolicyTemplatesInput);\r\n }\r\n\r\n getBackupPolicies(getBackupPoliciesInput: input.GetBackupPoliciesInput): Observable {\r\n return this.dpsApollo.getBackupPolicies(getBackupPoliciesInput);\r\n }\r\n\r\n getBackupProfiles(getBackupProfilesInput: input.GetBackupProfilesInput): Observable {\r\n return this.dpsApollo.getBackupProfiles(getBackupProfilesInput);\r\n }\r\n\r\n doDPSRestore(doDPSRestoreInput: input.DoDPSRestoreInput): Observable {\r\n return this.dpsApollo.doDPSRestore(doDPSRestoreInput);\r\n }\r\n\r\n doCloneProcess(doCloneProcessInput: input.DoCloneProcessInput): Observable {\r\n return this.dpsApollo.doCloneProcess(doCloneProcessInput);\r\n }\r\n\r\n doMountProcess(doMountProcessInput: input.DoMountProcessInput): Observable {\r\n return this.dpsApollo.doMountProcess(doMountProcessInput);\r\n }\r\n\r\n resumeProtection(resumeProtectionInput: input.ResumeProtectionInput): Observable {\r\n return this.dpsApollo.resumeProtection(resumeProtectionInput);\r\n }\r\n\r\n removeProtection(removeProtectionInput: input.RemoveProtectionInput): Observable {\r\n return this.dpsApollo.removeProtection(removeProtectionInput);\r\n }\r\n\r\n toggleProtection(toggleProtectionInput: input.ToggleProtectionInput): Observable {\r\n return this.dpsApollo.toggleProtection(toggleProtectionInput);\r\n }\r\n\r\n doMountBackProcess(doMountBackProcessInput: input.DoMountBackProcessInput): Observable {\r\n return this.dpsApollo.doMountBackProcess(doMountBackProcessInput);\r\n }\r\n\r\n doUnMountProcess(doUnMountProcessInput: input.DoUnMountProcessInput): Observable {\r\n return this.dpsApollo.doUnMountProcess(doUnMountProcessInput);\r\n }\r\n\r\n doImageExpire(doImageExpireInput: input.DoImageExpireInput): Observable {\r\n return this.dpsApollo.doImageExpire(doImageExpireInput);\r\n }\r\n\r\n doBackupOnDemand(doBackupOnDemandInput: input.DoBackupOnDemandInput): Observable {\r\n return this.dpsApollo.doBackupOnDemand(doBackupOnDemandInput);\r\n }\r\n\r\n applyBackupPolicy(applyBackupPolicyInput: input.ApplyBackupPolicyInput): Observable {\r\n return this.dpsApollo.applyBackupPolicy(applyBackupPolicyInput);\r\n }\r\n\r\n discoverVMByName(discoverVMByNameInput: input.DiscoverVMByNameInput): Observable {\r\n return this.dpsApollo.discoverVMByName(discoverVMByNameInput);\r\n }\r\n\r\n syncback(syncbackInput: input.SyncbackInput): Observable {\r\n return this.dpsApollo.syncback(syncbackInput);\r\n }\r\n\r\n getProcessJobStatus(processJobStatusInput: input.ProcessJobStatusInput, pollingInterval: number = 0): Observable {\r\n return this.dpsApollo.getProcessJobStatus(processJobStatusInput, pollingInterval);\r\n }\r\n\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class RdsApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getRecoveryUsages(getUsages: input.GetUsagesInput) {\r\n return this.apollo.query({\r\n query: query.queryGetRecoveryUsages(),\r\n variables: {\r\n getUsages: {\r\n initialDatasetSize: getUsages.initialDatasetSize,\r\n projectedDatasetSize: getUsages.projectedDatasetSize,\r\n changeRate: getUsages.changeRate,\r\n changeRateYOY: getUsages.changeRateYOY,\r\n schedule: getUsages.schedule,\r\n retention: getUsages.retention,\r\n bandwidthUsages: getUsages.bandwidthUsages\r\n }\r\n }\r\n });\r\n }\r\n \r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetRecoveryUsages() {\r\n return gql` \r\n query getRecoveryUsages($getUsages: GetUsagesInput) {\r\n getRecoveryUsages(getUsages: $getUsages) {\r\n success\r\n message\r\n usages {\r\n protectionProduct \r\n usage\r\n usageEncrypted\r\n usageS3\r\n minBandwidth\r\n minBandwidthEncrypted\r\n minBandwidthProjected\r\n minBandwidthEncryptedProjected\r\n supportsEncrypted\r\n supportsS3\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RdsApollo } from './rdsApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class RdsProxy {\r\n constructor(private rdsApollo: RdsApollo) {}\r\n\r\n getRecoveryUsages(getUsages: input.GetUsagesInput) {\r\n return this.rdsApollo.getRecoveryUsages(getUsages);\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as query from './schema/query';\r\nimport * as input from './schema/input/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class CloudvaletApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getSchedules(getSchedules: input.GetSchedulesInput) {\r\n return this.apollo.query({\r\n query: query.queryGetSchedules(),\r\n variables: {\r\n getSchedulesInput: {\r\n companyId: getSchedules.companyId,\r\n userId: getSchedules.userId,\r\n sessionId: getSchedules.sessionId\r\n }\r\n }\r\n });\r\n }\r\n\r\n public checkScheduleForHosts(checkScheduleForHosts: input.CheckScheduleForHostsInput) {\r\n return this.apollo.query({\r\n query: query.queryCheckScheduleForHosts(),\r\n variables: {\r\n checkScheduleForHostsInput: {\r\n scheduleId: checkScheduleForHosts.scheduleId\r\n }\r\n }\r\n });\r\n }\r\n\r\n public processScheduledHostEdit(processScheduledHostEdit: input.ProcessScheduledHostEditInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationProcessScheduledHostEdit(),\r\n variables: {\r\n processScheduledHostEditInput: {\r\n scheduleId: processScheduledHostEdit.scheduleId,\r\n name: processScheduledHostEdit.name,\r\n description: processScheduledHostEdit.description,\r\n utcOffset: processScheduledHostEdit.utcOffset,\r\n runDays: processScheduledHostEdit.runDays,\r\n startTime: processScheduledHostEdit.startTime,\r\n stopTime: processScheduledHostEdit.stopTime,\r\n enabled: processScheduledHostEdit.enabled,\r\n snoozed: processScheduledHostEdit.snoozed,\r\n runFor: processScheduledHostEdit.runFor,\r\n runUntil: processScheduledHostEdit.runUntil,\r\n resume: processScheduledHostEdit.resume,\r\n snoozeMode: processScheduledHostEdit.snoozeMode,\r\n companyId: processScheduledHostEdit.companyId,\r\n userId: processScheduledHostEdit.userId,\r\n sessionId: processScheduledHostEdit.sessionId\r\n }\r\n }\r\n });\r\n }\r\n\r\n public removeSchedule(removeSchedule: input.RemoveScheduleInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationRemoveSchedule(),\r\n variables: {\r\n removeScheduleInput: {\r\n scheduleId: removeSchedule.scheduleId\r\n }\r\n }\r\n });\r\n }\r\n\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetSchedules() {\r\n return gql`\r\n query getSchedules($getSchedulesInput: GetSchedulesInput) {\r\n getSchedules(getSchedulesInput: $getSchedulesInput) {\r\n success\r\n message\r\n scheduleResponse {\r\n result {\r\n id\r\n \t \t companyId \r\n \t \t name\r\n \t \t description\r\n \t \t uTCOffset\r\n \t \t runDays\r\n \t \t startTime\r\n \t \t stopTime\r\n \t \t enabled\r\n \t \t snoozed\r\n \t \t runFor\r\n \t \t runUntil\r\n \t \t resume\r\n \t \t snoozeMode\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryCheckScheduleForHosts() {\r\n return gql`\r\n query checkScheduleForHosts($checkScheduleForHostsInput: CheckScheduleForHostsInput) {\r\n checkScheduleForHosts(checkScheduleForHostsInput: $checkScheduleForHostsInput) {\r\n success\r\n message\r\n TypeScheduledHosts {\r\n result {\r\n id\r\n \t scheduleId\r\n hostId\r\n hostName\r\n hostDatacenterCode\r\n hostLocationId\r\n precedence\r\n delayStart\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationProcessScheduledHostEdit() {\r\n return gql`\r\n mutation processScheduledHostEdit($processScheduledHostEditInput: ProcessScheduledHostEditInput) {\r\n processScheduledHostEdit(processScheduledHostEditInput: $processScheduledHostEditInput) {\r\n success\r\n message\r\n ScheduledHostEditResponse {\r\n result {\r\n id\r\n \tcompanyId \r\n \tname\r\n \tdescription\r\n \tuTCOffset\r\n \trunDays\r\n \tstartTime\r\n \tstopTime\r\n \tenabled\r\n \tsnoozed\r\n \trunFor\r\n \trunUntil\r\n \tresume\r\n \tsnoozeMode\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationRemoveSchedule() {\r\n return gql`\r\n mutation removeSchedule($removeScheduleInput: RemoveScheduleInput) {\r\n removeSchedule(removeScheduleInput: $removeScheduleInput) {\r\n success\r\n message\r\n }\r\n }\r\n `;\r\n}","import { Injectable } from '@angular/core';\r\nimport { CloudvaletApollo } from './cloudvaletApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class CloudvaletProxy {\r\n constructor(private cloudvaletApollo: CloudvaletApollo) {}\r\n\r\n public getSchedules(getSchedules: input.GetSchedulesInput) {\r\n return this.cloudvaletApollo.getSchedules(getSchedules);\r\n }\r\n\r\n public checkScheduleForHosts(checkScheduleForHosts: input.CheckScheduleForHostsInput) {\r\n return this.cloudvaletApollo.checkScheduleForHosts(checkScheduleForHosts);\r\n }\r\n\r\n public processScheduledHostEdit(processScheduledHostEdit: input.ProcessScheduledHostEditInput) {\r\n return this.cloudvaletApollo.processScheduledHostEdit(processScheduledHostEdit);\r\n }\r\n\r\n public removeSchedule(removeSchedule: input.RemoveScheduleInput) {\r\n return this.cloudvaletApollo.removeSchedule(removeSchedule);\r\n }\r\n}\r\n","export class DeleteUserAndMembershipsInput {\r\n UserId: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class JwtHelper {\r\n private urlBase64Decode(str: string) {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += '==';\r\n break;\r\n case 3:\r\n output += '=';\r\n break;\r\n default:\r\n // tslint:disable-next-line:no-string-throw\r\n throw 'Illegal base64url string!';\r\n }\r\n return decodeURIComponent((window as any).escape(window.atob(output)));\r\n }\r\n\r\n public decodeToken(token: string = '') {\r\n if (token === null || token === '') { return { upn: '' }; }\r\n const parts = token.split('.');\r\n if (parts.length !== 3) {\r\n\r\n throw new Error('JWT must have 3 parts');\r\n }\r\n const decoded = this.urlBase64Decode(parts[1]);\r\n if (!decoded) {\r\n throw new Error('Cannot decode the token');\r\n }\r\n return JSON.parse(decoded);\r\n }\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport { AuthUser } from '@app/core/_models/user';\r\nimport { GetAuthentication } from './schema/input';\r\nimport { AuthenticationResponse } from 'src/app/core/gql/graphql/authenticate/schema/type';\r\nimport * as input from './schema/input/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class LoginApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getAuthentication(getAuth: GetAuthentication) {\r\n return this.apollo.query({\r\n query: query.queryGetAuthentication(),\r\n variables: { getAuth },\r\n fetchPolicy: \"no-cache\" \r\n }).pipe(map(user => this.getAuthUser(user.data)));\r\n }\r\n\r\n public getAuthenticationByUserId(getAuthByUserId: input.GetAuthenticationByUserId) {\r\n return this.apollo.query({\r\n query: query.queryGetAuthenticationByUserId(),\r\n variables: { getAuthByUserId },\r\n fetchPolicy: \"no-cache\" \r\n }).pipe(map(user => this.getAuthUser(user.data)));\r\n }\r\n\r\n public getLogin(getLoginInput: input.GetLoginInput) {\r\n return this.apollo.query({\r\n query: query.queryGetLogin(),\r\n variables: {\r\n getLoginInput: {\r\n username: getLoginInput.username,\r\n password: getLoginInput.password\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n public getLogins(getLoginsInput: input.GetLoginsInput) {\r\n return this.apollo.query({\r\n query: query.queryGetLogins(),\r\n variables: {\r\n getLoginsInput: {\r\n UserId: getLoginsInput.UserId,\r\n sessionId: getLoginsInput.sessionId\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n private getAuthUser(result: AuthenticationResponse) {\r\n\r\n const authUser = new AuthUser();\r\n\r\n authUser.roles = result['getAuthenticationByUserId'].roles;\r\n authUser.companyName = result['getAuthenticationByUserId'].companyName;\r\n // authUser.userName = result['getAuthenticationUserId'].userName;\r\n // authUser.sessionId = result['getAuthenticationByUserId'].sessionId;\r\n // authUser.profileUrl = result['getAuthenticationByUserId'].profileUrl;\r\n // authUser.bearerToken = result['getAuthenticationByUserId'].bearerToken;\r\n // authUser.displayName = result['getAuthenticationByUserId'].displayName;\r\n // authUser.refreshToken = result['getAuthenticationByUserId'].refreshToken;\r\n return authUser;\r\n }\r\n\r\n public checkUserPasscode(checkUserPasscodeInput: input.CheckUserPasscodeInput) {\r\n return this.apollo.query({\r\n query: query.queryCheckUserPasscode(),\r\n variables: {\r\n checkUserPasscodeInput: {\r\n membershipId: checkUserPasscodeInput.membershipId,\r\n passcode: checkUserPasscodeInput.passcode\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getMemberships(getMembershipsInput: input.GetMembershipsInput) {\r\n return this.apollo.query({\r\n query: query.queryGetMemberships(),\r\n variables: {\r\n getMembershipsInput: {\r\n userId: getMembershipsInput.userId\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n \r\n public getOrgsSimple(getOrgsSimpleInput: input.GetOrgsSimpleInput) {\r\n return this.apollo.query({\r\n query: query.queryGetOrgsSimple(),\r\n variables: {\r\n getOrgsSimpleInput: {\r\n UserId: getOrgsSimpleInput.UserId,\r\n getFull: getOrgsSimpleInput.getFull\r\n }\r\n }\r\n });\r\n }\r\n\r\n public changePassword(changePasswordInput: input.ChangePasswordInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationChangePassword(),\r\n variables: {\r\n changePasswordInput: {\r\n userId: changePasswordInput.userId,\r\n password: changePasswordInput.password,\r\n newPassword:changePasswordInput.newPassword\r\n }\r\n }\r\n });\r\n }\r\n\r\n public changePasswordWithToken(changePasswordWithTokenInput: input.ChangePasswordWithTokenInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationChangePasswordWithToken(),\r\n variables: {\r\n changePasswordWithTokenInput: {\r\n authToken: changePasswordWithTokenInput.authToken,\r\n newPassword: changePasswordWithTokenInput.newPassword\r\n }\r\n }\r\n });\r\n }\r\n\r\n public forgotPassword(forgotPasswordInput: input.ForgotPasswordInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationForgotPassword(),\r\n variables: {\r\n forgotPasswordInput: {\r\n changePwdUrl: forgotPasswordInput.changePwdUrl,\r\n email: forgotPasswordInput.email\r\n }\r\n }\r\n });\r\n }\r\n\r\n public createUserPSK(createUserPSKInput: input.CreateUserPSKInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationCreateUserPsk(),\r\n variables: {\r\n createUserPSKInput: {\r\n Username: createUserPSKInput.Username,\r\n UserId: createUserPSKInput.Username,\r\n Passcode: createUserPSKInput.Passcode,\r\n Enabled: createUserPSKInput.Enabled\r\n }\r\n }\r\n });\r\n }\r\n public updateUserPSK(updateUserPSKInput: input.UpdateUserPSKInput) {\r\n return this.apollo.query({\r\n query: mutation.mutationUpdateUserPsk(),\r\n variables: {\r\n Username: updateUserPSKInput.Username,\r\n MembershipId: updateUserPSKInput.MembershipId,\r\n UserId: updateUserPSKInput.UserId,\r\n Passcode: updateUserPSKInput.Passcode,\r\n Enabled: updateUserPSKInput.Enabled\r\n\r\n }\r\n });\r\n }\r\n public updateUserMembership(updateMembershipInput: input.UpdateMembershipInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationUpdateUserMembership(),\r\n variables: {\r\n updateMembershipInput: {\r\n MembershipId: updateMembershipInput.MembershipId,\r\n UserId: updateMembershipInput.UserId,\r\n ApplicationId: updateMembershipInput.ApplicationId,\r\n ApplicationLocationId: updateMembershipInput.ApplicationLocationId,\r\n Username: updateMembershipInput.Username,\r\n Password: updateMembershipInput.Password\r\n }\r\n }\r\n });\r\n }\r\n\r\n public deleteUserMembership(deleteUserMembershipInput: input.DeleteUserMembershipInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDeleteUserMembership(),\r\n variables: {\r\n deleteUserMembershipInput: {\r\n MembershipId: deleteUserMembershipInput.MembershipId,\r\n UserId: deleteUserMembershipInput.UserId \r\n }\r\n }\r\n });\r\n }\r\n\r\n public deleteUserAndMemberships(deleteUserAndMembershipsInput: input.DeleteUserAndMembershipsInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDeleteUserAndMemberships(),\r\n variables: {\r\n deleteUserAndMembershipsInput: {\r\n UserId: deleteUserAndMembershipsInput.UserId\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAuthentication() {\r\n return gql`\r\n query getAuthentication($getAuth: GetAuthentication) {\r\n getAuthentication(\r\n getAuth:$getAuth\r\n ) {\r\n sessionId\r\n userName\r\n bearerToken\r\n refreshToken\r\n roles {\r\n key\r\n value\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAuthenticationByUserId() {\r\n return gql`\r\n query getAuthenticationByUserId($getAuthByUserId: GetAuthenticationByUserId) {\r\n getAuthenticationByUserId(getAuthByUserId: $getAuthByUserId) {\r\n roles\r\n companyName\r\n companyId\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetLogin() {\r\n return gql`\r\n\tquery getLogin($getLoginInput: GetLoginInput) {\r\n\t getLogin(getLoginInput: $getLoginInput) {\r\n\t success\r\n\t message\r\n\t loginResponse {\r\n\t result {\r\n\t membershipId\r\n\t userId\r\n\t username\r\n\t password\r\n\t datacenterLocation\r\n\t applicationName\r\n\t applicationId\r\n\t applicationLocationId\r\n\t companyName\r\n\t companyId\r\n\t status\r\n\t roles\r\n\t useTwoFactorAuth\r\n\t }\r\n\t responseStatus {\r\n\t errorCode\r\n\t message\r\n\t errors {\r\n\t errorCode\r\n\t fieldName\r\n\t message\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t}\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetLogins() {\r\n\treturn gql`\r\n\tquery getLogins($getLoginsInput: GetLoginsInput) {\r\n\t getLogins(getLoginsInput: $getLoginsInput) {\r\n\t success\r\n\t message\r\n\t loginsResponse {\r\n\t membershipId\r\n\t userId\r\n\t username\r\n\t password\r\n\t datacenterLocation\r\n\t applicationName\r\n\t applicationId\r\n\t applicationLocationId\r\n\t companyName\r\n\t companyId\r\n\t status\r\n\t roles\r\n\t useTwoFactorAuth\r\n\t }\r\n\t }\r\n\t}\r\n\t\t\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryCheckUserPasscode() {\r\n\treturn gql`\r\n\t\tquery checkUserPasscode($checkUserPasscodeInput: CheckUserPasscodeInput ) {\r\n \t\t\tcheckUserPasscode(checkUserPasscodeInput:$checkUserPasscodeInput) {\r\n \t\t\tsuccess\r\n \t\t\tmessage\r\n \t\t\t\tpasscodeCheck {\r\n \t \t\t\tresult \r\n \t \t\t\tresponseStatus {\r\n \t\t\t \t\t\terrorCode\r\n \t\t\t \t\t\tmessage\r\n \t\t\t \t\t\terrors {\r\n \t \t\t\t\terrorCode\r\n \t \t\t\t\tfieldName\r\n \t \t\t\t\tmessage\r\n \t \t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t}\r\n \t\t\t}\r\n\t\t}\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetMemberships() {\r\n\treturn gql`\r\n\tquery getMemberships($getMembershipsInput: GetMembershipsInput) {\r\n\t getMemberships(getMembershipsInput: $getMembershipsInput) {\r\n\t success\r\n\t message\r\n\t getMembershipsResponse {\r\n\t result {\r\n\t id\r\n\t userId\r\n\t username\r\n\t password\r\n\t isEncrypted\r\n\t isApproved\r\n\t isLockedOut\r\n\t applicationId\r\n\t applicationName\r\n\t locationId\r\n\t location\r\n\t locationType\r\n\t datacenterCode\r\n\t companyName\r\n\t isDefault\r\n\t companyId\r\n\t roles\r\n\t membershipId\r\n\t useTwoFactorAuth\r\n\t }\r\n\t responseStatus {\r\n\t errorCode\r\n\t message\r\n\t errors {\r\n\t errorCode\r\n\t fieldName\r\n\t message\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t}\r\n\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetOrgsSimple() {\r\n return gql`\r\nquery getOrgsSimple($getOrgsSimpleInput: GetOrgsSimpleInput ) {\r\n\t\tgetOrgsSimple(getOrgsSimpleInput:$getOrgsSimpleInput) {\r\n\t\t success\r\n\t\t message\r\n\t\t orgsResponse{\r\n\t\t result {\r\n\t\t \tdatacenterLocation\r\n\t\t \thref\r\n\t\t \tname\r\n\t\t \tnetworks {\r\n\t\t \tcontent\r\n\t\t errorMessage\r\n\t\t errorCode\r\n\t\t errorStatus\r\n\t\t name\r\n\t\t nameChange\r\n\t\t primaryDNS\r\n\t\t secondaryDNS\r\n\t\t dNSSuffix\r\n\t\t gatewayAddress\r\n\t\t networkMask\r\n\t\t ipRange {\r\n\t\t ipRangeEnding\r\n\t\t ipRangeBegining\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\t\t}\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationChangePassword() {\r\n\treturn gql`\r\n\t\tmutation changePassword($changePasswordInput: ChangePasswordInput) {\r\n\t\t changePassword(changePasswordInput: $changePasswordInput) {\r\n\t\t success\r\n\t\t message\r\n\t\t passwordResponse {\r\n\t\t result {\r\n\t\t exception\r\n\t\t hasError\r\n\t\t message\r\n\t\t result\r\n\t\t }\r\n\t\t responseStatus {\r\n\t\t errorCode\r\n\t\t message\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\t\t}\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationChangePasswordWithToken() {\r\n\treturn gql`\r\n\t\tmutation changePasswordWithToken($changePasswordWithTokenInput: ChangePasswordWithTokenInput ) {\r\n\t\t changePasswordWithToken(changePasswordWithTokenInput:$changePasswordWithTokenInput) {\r\n\t\t success\r\n\t\t message\r\n\t\t passwordResponse {\r\n\t\t result {\r\n\t\t exception\r\n\t\t hasError\r\n\t\t message\r\n\t\t result\r\n\t\t }\r\n\t\t responseStatus {\r\n\t\t errorCode\r\n\t\t message\r\n\t\t }\r\n\t\t }\r\n\t\t }\r\n\t\t} \r\n\t`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationForgotPassword() {\r\n\treturn gql`\r\n\tmutation forgotPassword($forgotPasswordInput: ForgotPasswordInput ) {\r\n forgotPassword(forgotPasswordInput:$forgotPasswordInput) {\r\n success\r\n message\r\n forgotPasswordResponse {\r\n result {\r\n exception\r\n hasError\r\n message\r\n result\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n }\r\n }\r\n }\r\n}\r\n}\r\n\t`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationCreateUserPsk() {\r\n return gql`\r\n mutation createUserPSK($createUserPSKInput: CreateUserPSKInput ) {\r\n createUserPSK(createUserPSKInput:$createUserPSKInput) {\r\n success\r\n message\r\n createUserPSKResponse {\r\n result {\r\n exception\r\n hasError\r\n message\r\n result\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n }\r\n }\r\n }\r\n }\r\n\t`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdateUserPsk() {\r\n return gql`\r\n mutation updateUserPSK($updateUserPSKInput: UpdateUserPSKInput ) {\r\n updateUserPSK(updateUserPSKInput:$updateUserPSKInput) {\r\n success\r\n message\r\n updateUserPSKResponse {\r\n result {\r\n exception\r\n hasError\r\n message\r\n result\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n }\r\n }\r\n }\r\n}\r\n\t`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdateUserMembership() {\r\n return gql`\r\n mutation updateUserMembership($updateMembershipInput: UpdateMembershipInput) {\r\n updateUserMembership(updateMembershipInput: $updateMembershipInput) {\r\n success\r\n message\r\n updateUserMembershipResponse {\r\n result {\r\n isEncrypted\r\n comment\r\n failedPasswordAnswerAttemptWindowStart\r\n failedPasswordAnswerAttemptCount\r\n failedPasswordAttemptWindowStart\r\n failedPasswordAttemptCount\r\n lastLockoutDate\r\n lastPasswordChangedDate\r\n lastLoginDate\r\n createDate\r\n isLockedOut\r\n isApproved\r\n passwordAnswer\r\n passwordQuestion\r\n loweredEmail\r\n email\r\n mobilePIN\r\n passwordSale\r\n passwordFormat\r\n password\r\n username\r\n userId\r\n applicationLocationId\r\n applicationId\r\n membershipId\r\n isDefault\r\n updatePassword\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n }\r\n }\r\n }\r\n }\r\n\r\n\t`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationDeleteUserMembership() {\r\n return gql`\r\n mutation deleteUserMembership(\r\n $deleteUserMembershipInput: DeleteUserMembershipInput\r\n) {\r\n deleteUserMembership(deleteUserMembershipInput: $deleteUserMembershipInput) {\r\n success\r\n message\r\n userMembershipDeleteResponse {\r\n result\r\n responseStatus {\r\n stackTrace\r\n message\r\n errorCode\r\n errors {\r\n errorCode\r\n message\r\n fieldName\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\t`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationDeleteUserAndMemberships() {\r\n return gql`\r\n mutation deleteUserAndMemberships(\r\n $deleteUserAndMembershipsInput: DeleteUserAndMembershipsInput\r\n) {\r\n deleteUserAndMemberships(deleteUserAndMembershipsInput: $deleteUserAndMembershipsInput) {\r\n success\r\n message\r\n userAndMembershipsDeleteResponse {\r\n result\r\n responseStatus {\r\n stackTrace\r\n message\r\n errorCode\r\n errors {\r\n errorCode\r\n message\r\n fieldName\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\t`;\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { LoginApollo } from './loginApollo';\r\nimport { DeleteUserAndMembershipsInput, GetLogin, GetLogins } from './schema/input';\r\nimport { JwtHelper } from '@app/core/_helpers/jwt.parser';\r\nimport { AuthUser, KeycloakUser } from '@app/core/_models';\r\nimport { GetAuthentication, GetAuthenticationByUserId } from './schema/input';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class LoginProxy {\r\n constructor(private jwtHelper: JwtHelper,\r\n private loginApollo: LoginApollo) {}\r\n\r\n public getLogins(login: GetLogins) {\r\n return this.loginApollo.getLogins(login);\r\n }\r\n\r\n public getLogin(getLogin: GetLogin) {\r\n return this.loginApollo.getLogin(getLogin);\r\n }\r\n\r\n public getAuthentication(getAuth: GetAuthentication) : Observable {\r\n return this.loginApollo.getAuthentication(getAuth)\r\n .pipe(map(authUser => \r\n {\r\n this.setTokenFields.apply(this, [authUser, self]);\r\n return authUser;\r\n }));\r\n }\r\n\r\n public getAuthenticationByUserId(keycloakUser: KeycloakUser) : Observable {\r\n let getAuthByUserId = { UserId: keycloakUser.userid }\r\n return this.loginApollo.getAuthenticationByUserId(getAuthByUserId)\r\n .pipe(map(authUser => \r\n {\r\n this.mapKeycloakUser.apply(this, [keycloakUser, authUser, self]);\r\n return authUser;\r\n }));\r\n }\r\n\r\n public deleteUserAndMemberships(userId: string) {\r\n let input = new DeleteUserAndMembershipsInput();\r\n input.UserId = userId;\r\n return this.loginApollo.deleteUserAndMemberships(input);\r\n }\r\n\r\n private mapKeycloakUser(keycloakUser: KeycloakUser, authUser: AuthUser) {\r\n authUser.firstName = keycloakUser.given_name;\r\n authUser.lastName = keycloakUser.family_name;\r\n authUser.userName = keycloakUser.preferred_username\r\n authUser.bearerToken = keycloakUser.bearerToken;\r\n authUser.companyId = keycloakUser.companyid;\r\n authUser.userId = keycloakUser.userid;\r\n authUser.displayName = keycloakUser.name;\r\n }\r\n\r\n private setTokenFields(authUser: AuthUser) {\r\n const token = this.jwtHelper.decodeToken(authUser.bearerToken);\r\n authUser.userId = token.UserID;\r\n authUser.companyId = token.CompanyID;\r\n authUser.roles = token.roles;\r\n authUser.firstName = token.FirstName;\r\n authUser.lastName = token.LastName;\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class BackupApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getUserBackupAuth(getUserBackupAuthInput: input.GetUserBackupAuthInput) {\r\n return this.apollo.query({\r\n query: query.queryGetUserBackupAuth(),\r\n variables: {\r\n getUserBackupAuthInput: {\r\n sessionId: getUserBackupAuthInput.sessionId,\r\n datacenterLocation: getUserBackupAuthInput.datacenterLocation\r\n }\r\n }\r\n });\r\n }\r\n\r\n getBackupClusterInfo(getBackupClusterInfoInput: input.GetBackupClusterInfoInput) {\r\n return this.apollo.query({\r\n query: query.queryGetBackupClusterInfo(),\r\n variables: {\r\n getBackupClusterInfoInput: {\r\n sessionId: getBackupClusterInfoInput.sessionId,\r\n datacenterLocation: getBackupClusterInfoInput.datacenterLocation\r\n }\r\n }\r\n });\r\n }\r\n\r\n getTenantOfferingItemsByEdition(getTenantOfferingItemsByEditionInput: input.GetTenantOfferingItemsByEditionInput) {\r\n return this.apollo.query({\r\n query: query.queryGetTenantOfferingItemsByEdition(),\r\n variables: {\r\n getTenantOfferingItemsByEditionInput: {\r\n uuid: getTenantOfferingItemsByEditionInput.uuid,\r\n edition: \"pck_per_workload\",\r\n location: \"us-cloud.acronis.com\",\r\n environment: getTenantOfferingItemsByEditionInput.environment\r\n }\r\n }\r\n });\r\n }\r\n\r\n getTenantUsages(getTenantUsagesInput: input.GetTenantUsagesInput) {\r\n return this.apollo.query({\r\n query: query.queryGetAcronisTenantUsages(),\r\n variables: {\r\n getTenantUsagesInput: {\r\n TenantUuid: getTenantUsagesInput.TenantUuid,\r\n location: getTenantUsagesInput.location,\r\n environment: getTenantUsagesInput.environment\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetUserBackupAuth() {\r\n return gql`\r\n query getUserBackupAuth($getUserBackupAuthInput: GetUserBackupAuthInput) {\r\n getUserBackupAuth(getUserBackupAuthInput: $getUserBackupAuthInput) {\r\n success\r\n message\r\n backupAuth {\r\n result {\r\n datacenterLocation\r\n application\r\n sessionId\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n \t }\r\n }\r\n `;\r\n}\r\n\r\n\r\n\r\n\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetBackupClusterInfo() {\r\n return gql`\r\n query getBackupClusterInfo($getBackupClusterInfoInput: GetBackupClusterInfoInput) {\r\n BackupClusterInfo: getBackupClusterInfo(getBackupClusterInfoInput: $getBackupClusterInfoInput) {\r\n success\r\n message\r\n backupClusterInfo {\r\n vcenter\r\n bwschedule\r\n location\r\n dedupid\r\n clusterid\r\n defaultdiskpool\r\n esxhost\r\n ipaddress\r\n datastore\r\n bandwidth\r\n readyvm\r\n masterid\r\n id\r\n operativeip\r\n override\r\n description\r\n name\r\n thisisme\r\n disabled\r\n props\r\n datacenterLocation\r\n }\r\n \t }\r\n }\r\n `;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetTenantOfferingItemsByEdition() {\r\n return gql`\r\n query getTenantOfferingItemsByEdition($getTenantOfferingItemsByEditionInput: GetTenantOfferingItemsByEditionInput) {\r\n getTenantOfferingItemsByEdition(getTenantOfferingItemsByEditionInput: $getTenantOfferingItemsByEditionInput) {\r\n success\r\n message\r\n getOfferingItems {\r\n items {\r\n id\r\n usage_name\r\n infra_id\r\n application_id\r\n name\r\n measurement_unit\r\n type\r\n status\r\n updated_at\r\n quota {\r\n version\r\n value\r\n overage\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAcronisTenantUsages() {\r\n return gql`\r\n query getAcronisTenantUsages($getTenantUsagesInput: GetTenantUsagesInput) {\r\n getTenantUsages(getTenantUsagesInput: $getTenantUsagesInput) {\r\n success\r\n message\r\n getTenantUsages {\r\n notifications {\r\n NotifyLevel\r\n Message\r\n }\r\n resources {\r\n orgName\r\n totalStorage\r\n servers\r\n vms\r\n workstations\r\n mailboxes\r\n fcTotalStorage\r\n fcSeats\r\n webHostingServers\r\n o365Teams\r\n gSuiteSeats\r\n advServers\r\n advVMS\r\n advWorkstations\r\n advWebHostingServers\r\n packAdvManagement\r\n packAdvSecurity\r\n datacenterCode\r\n }\r\n }\r\n }\r\n }\r\n\r\n `;\r\n}","import { Injectable } from '@angular/core';\r\nimport { BackupApollo } from './backupApollo';\r\nimport * as input from './schema/input';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class BackupProxy {\r\n constructor(private backupApollo: BackupApollo) {}\r\n\r\n getUserBackupAuth(getUserBackupAuth: input.GetUserBackupAuthInput) {\r\n return this.backupApollo.getUserBackupAuth(getUserBackupAuth);\r\n }\r\n\r\n getBackupClusterInfo(getBackupClusterInfo: input.GetBackupClusterInfoInput) {\r\n return this.backupApollo.getBackupClusterInfo(getBackupClusterInfo);\r\n }\r\n\r\n getTenantOfferingItemsByEdition(getTenantOfferingItemsByEditionInput: input.GetTenantOfferingItemsByEditionInput) {\r\n return this.backupApollo.getTenantOfferingItemsByEdition(getTenantOfferingItemsByEditionInput);\r\n }\r\n\r\n getTenantUsages(getTenantUsagesInput: input.GetTenantUsagesInput) {\r\n return this.backupApollo.getTenantUsages(getTenantUsagesInput);\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as query from './schema/query/index';\r\nimport * as input from './schema/input/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class AuditApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getAuditLogsByCompany(getAuditLogsByCompany: input.GetAuditLogsByCompanyInput) {\r\n return this.apollo.query({\r\n query: query.queryGetAuditLogsByCompany(),\r\n variables: {\r\n getAuditLogsByCompany: {\r\n companyId: getAuditLogsByCompany.companyId,\r\n createdDate: getAuditLogsByCompany.createdDate,\r\n lessThan: getAuditLogsByCompany.LessThan\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAuditLogsByCompany() {\r\n return gql`\r\n query getAuditLogsByCompany($getAuditLogsByCompany: GetAuditLogsByCompanyInput) {\r\n getAuditLogsByCompany(getAuditLogsByCompany: $getAuditLogsByCompany) {\r\n success\r\n message\r\n auditLogs {\r\n Id\r\n UserId\r\n User\r\n CompanyId\r\n Application\r\n Host\r\n Type\r\n ObjectOriginal\r\n ObjectUpdated\r\n Source\r\n TimeUtc\r\n }\r\n }\r\n }\r\n`;\r\n}\r\n","import { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { AuditApollo } from './auditApollo';\r\nimport * as input from './schema/input/index';\r\nimport * as response from './schema/type/index';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class AuditProxy {\r\n constructor(private auditApollo: AuditApollo) { }\r\n\r\n private auditLogSubject: BehaviorSubject = new BehaviorSubject(undefined);\r\n public auditLogs: Observable;\r\n\r\n public getAuditLogsByCompany(getAuditLogsByCompany: input.GetAuditLogsByCompanyInput) {\r\n return this.auditApollo.getAuditLogsByCompany(getAuditLogsByCompany)\r\n .pipe(map(resp => {\r\n this.auditLogSubject.next((resp.data as any).getAuditLogsByCompany);\r\n this.auditLogs = this.auditLogSubject.asObservable();\r\n return resp;\r\n }));\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class ProductsApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getProducts(getProducts: input.GetProductsInput) {\r\n return this.apollo.query({\r\n query: query.queryGetProducts(),\r\n variables: {\r\n getProducts: {\r\n serviceId: getProducts.serviceId, \r\n datacenterCode: getProducts.datacenterCode\r\n }\r\n }\r\n });\r\n }\r\n\r\n getProductsByService(getProductsByService: input.GetProductsByServiceInput) {\r\n return this.apollo.query({\r\n query: query.queryGetProductsByService(),\r\n variables: {\r\n getProductsByService: {\r\n service: getProductsByService.service\r\n }\r\n }\r\n });\r\n }\r\n\r\n getProductPricing(getProductPricing: input.GetProductPricingInput) {\r\n return this.apollo.query({\r\n query: query.queryGetProductPricing(),\r\n variables: {\r\n getProductPricing: {\r\n customerId: getProductPricing.customerId,\r\n orderPriceReq: {\r\n Containers: getProductPricing.orderPriceReq.Containers\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n getProductSelfServicePricing(getProductSelfServicePricing: input.GetProductSelfServiceInput) {\r\n return this.apollo.query({\r\n query: query.queryGetProductSelfServicePricing(),\r\n variables: {\r\n getProductSelfServicePricing: {\r\n customerId: getProductSelfServicePricing.customerId\r\n }\r\n }\r\n });\r\n }\r\n\r\n provisionSelfServiceOrder(provisionSelfServiceOrderInput: input.ProvisionSelfServiceOrderInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationProvisionSelfServiceOrder(),\r\n variables: {\r\n provisionSelfServiceOrderInput: {\r\n companyId: provisionSelfServiceOrderInput.selfServiceModel.companyId,\r\n userId: provisionSelfServiceOrderInput.selfServiceModel.userId,\r\n action: \"provisionselfservice\",\r\n jobId: provisionSelfServiceOrderInput.selfServiceModel.jobId,\r\n correlationId: provisionSelfServiceOrderInput.selfServiceModel.correlationId,\r\n payload: provisionSelfServiceOrderInput.selfServiceModel.payload\r\n }\r\n }\r\n\r\n })\r\n }\r\n\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetProducts() {\r\n return gql`\r\n query getProducts($getProducts: GetProductsInput) {\r\n Products:getProducts(getProducts: $getProducts) {\r\n success\r\n message\r\n \tProductResponse{\r\n result{\r\n productId\r\n product\r\n serviceId\r\n service\r\n }\r\n responseStatus{\r\n message\r\n stackTrace\r\n errors{\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n errorCode\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetProductsByService() {\r\n return gql`\r\n query getProductsByService($getProductsByService: GetProductsByServiceInput) {\r\n getProductsByService(getProductsByService: $getProductsByService) {\r\n success\r\n message\r\n \tProductResponse{\r\n result{\r\n productId \r\n product\r\n serviceId \r\n service\r\n }\r\n responseStatus{\r\n errorCode\r\n message\r\n stackTrace\r\n errors{\r\n fieldName\r\n message\r\n errorCode\r\n }\r\n }\r\n }\r\n \t\t\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetProductPricing() {\r\n return gql`\r\n query getProductPricing($getProductPricing: GetProductPricingInput) {\r\n ProductPricing:getProductPricing(getProductPricing: $getProductPricing) {\r\n success\r\n message\r\n \tProductResponse{\r\n result{\r\n additionalCost\r\n containers{\r\n additionalCost\r\n id\r\n products{\r\n excludedProducts{\r\n calculatedQuantity\r\n datacenterCode\r\n hasError\r\n message\r\n parentProduct\r\n parentProductDiscount\r\n parentProductId\r\n parentProductPrice\r\n parentProductPricingRevision\r\n price\r\n product\r\n productDiscount\r\n productId\r\n productPrice\r\n productPricingRevision\r\n quantity\r\n service\r\n serviceFee\r\n serviceId\r\n }\r\n requestedProducts{\r\n calculatedQuantity\r\n datacenterCode\r\n hasError\r\n message\r\n parentProduct\r\n parentProductDiscount\r\n parentProductId\r\n parentProductPrice\r\n parentProductPricingRevision\r\n price\r\n product\r\n productDiscount\r\n productId\r\n productPrice\r\n productPricingRevision\r\n quantity\r\n service\r\n serviceFee\r\n serviceId\r\n }\r\n }\r\n totalContractedCost\r\n totalCost\r\n totalCostWithServiceFee\r\n totalServiceFeeCost\r\n }\r\n totalContractedCost\r\n totalCost\r\n totalCostWithServiceFee\r\n totalServiceFeeCost\r\n }\r\n responseStatus{\r\n message\r\n stackTrace\r\n errors{\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n errorCode\r\n }\r\n }\r\n } \r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetProductSelfServicePricing() {\r\n return gql`\r\n query getProductSelfServicePricing($getProductSelfServicePricing: GetProductSelfServicePricingInput) {\r\n ProductSelfServicePricing:getProductSelfServicePricing(getProductSelfServicePricing: $getProductSelfServicePricing) {\r\n success\r\n message\r\n ProductSelfServiceResponse{\r\n result{\r\n additionalCost\r\n containers{\r\n additionalCost\r\n id\r\n products{\r\n excludedProducts{\r\n calculatedQuantity\r\n datacenterCode\r\n hasError\r\n message\r\n parentProduct\r\n parentProductDiscount\r\n parentProductId\r\n parentProductPrice\r\n parentProductPricingRevision\r\n price\r\n product\r\n productDiscount\r\n productId\r\n productPrice\r\n productPricingRevision\r\n productServiceLevelPercent\r\n quantity\r\n service\r\n serviceFee\r\n serviceId\r\n selfServiceId\r\n }\r\n requestedProducts{\r\n calculatedQuantity\r\n datacenterCode\r\n hasError\r\n message\r\n parentProduct\r\n parentProductDiscount\r\n parentProductId\r\n parentProductPrice\r\n parentProductPricingRevision\r\n price\r\n product\r\n productDiscount\r\n productId\r\n productPrice\r\n productPricingRevision\r\n productServiceLevelPercent\r\n quantity\r\n service\r\n serviceFee\r\n serviceId\r\n selfServiceId\r\n }\r\n }\r\n totalContractedCost\r\n totalCost\r\n totalCostWithServiceFee\r\n totalServiceFeeCost\r\n }\r\n totalContractedCost\r\n totalCost\r\n totalCostWithServiceFee\r\n totalServiceFeeCost\r\n }\r\n responseStatus{\r\n message\r\n stackTrace\r\n errors{\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n errorCode\r\n }\r\n }\r\n } \r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationProvisionSelfServiceOrder() {\r\n return gql`\r\n mutation provisionSelfServiceOrder($provisionSelfServiceOrderInput: ProvisionSelfServiceOrderInput ) {\r\n provisionSelfServiceOrder(provisionSelfServiceOrderInput: $provisionSelfServiceOrderInput) {\r\n message\r\n success\r\n ProvisionSelfServiceOrderResponse {\r\n result {\r\n orderId\r\n status\r\n message\r\n jobId\r\n }\r\n }\r\n \r\n }\r\n }\r\n `; \r\n}","import { Injectable } from '@angular/core';\r\nimport { ProductsApollo } from './productsApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class ProductsProxy {\r\n constructor(private productsApollo: ProductsApollo) {}\r\n\r\n getProducts(getProducts: input.GetProductsInput) {\r\n return this.productsApollo.getProducts(getProducts);\r\n }\r\n\r\n getProductPricing(getProductPricing: input.GetProductPricingInput) {\r\n return this.productsApollo.getProductPricing(getProductPricing);\r\n }\r\n\r\n getProductsByService(getProductsByService: input.GetProductsByServiceInput) {\r\n return this.productsApollo.getProductsByService(getProductsByService);\r\n }\r\n\r\n getProductSelfServicePricing(getProductSelfServicePricing: input.GetProductSelfServiceInput) {\r\n return this.productsApollo.getProductSelfServicePricing(getProductSelfServicePricing);\r\n }\r\n\r\n provisionSelfServiceOrder(provisionSelfServiceOrderInput: input.ProvisionSelfServiceOrderInput) {\r\n return this.productsApollo.provisionSelfServiceOrder(provisionSelfServiceOrderInput);\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class RecoveryApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n failback(failbackInput: input.FailbackInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationFailback(),\r\n variables: {\r\n failbackInput: {\r\n appId: failbackInput.appId,\r\n sessionId: failbackInput.sessionId,\r\n datacenterLocation: failbackInput.datacenterLocation\r\n }\r\n }\r\n });\r\n }\r\n\r\n performFailover(performFailoverInput: input.PerformFailoverInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationPerformFailover(),\r\n variables: {\r\n performFailoverInput: {\r\n isTest: performFailoverInput.isTest,\r\n appId: performFailoverInput.appId,\r\n hostId: performFailoverInput.hostId,\r\n sessionId: performFailoverInput.sessionId,\r\n datacenterLocation: performFailoverInput.datacenterLocation\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeTestFailover(removeTestFailoverInput: input.RemoveTestFailoverInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationRemoveTestFailover(),\r\n variables: {\r\n removeTestFailoverInput: {\r\n sessionId: removeTestFailoverInput.sessionId,\r\n datacenterLocation: removeTestFailoverInput.datacenterLocation,\r\n image: removeTestFailoverInput.image\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationFailback() {\r\n return gql`\r\n mutation failback($failbackInput: FailbackInput) {\r\n failback(failbackInput: $failbackInput) {\r\n success\r\n message\r\n Result {\r\n result {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationPerformFailover() {\r\n return gql`\r\n mutation performFailover($performFailoverInput: PerformFailoverInput) {\r\n performFailover(performFailoverInput: $performFailoverInput) {\r\n code\r\n success\r\n message\r\n result {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationRemoveTestFailover() {\r\n return gql`\r\n mutation removeTestFailover($removeTestFailoverInput: RemoveTestFailoverInput) {\r\n removeTestFailover(removeTestFailoverInput: $removeTestFailoverInput) {\r\n code\r\n success\r\n message\r\n result {\r\n sessionId\r\n status\r\n content\r\n jobid\r\n errorcode\r\n errormessage\r\n statusCode\r\n result\r\n datacenterLocation\r\n }\r\n }\r\n }\r\n `; \r\n}","import { Injectable } from '@angular/core';\r\nimport { RecoveryApollo } from './recoveryApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class RecoveryProxy {\r\n constructor(private recoveryApollo: RecoveryApollo) {}\r\n\r\n failback(failback: input.FailbackInput) {\r\n return this.recoveryApollo.failback(failback);\r\n }\r\n\r\n performFailover(performFailover: input.PerformFailoverInput) {\r\n return this.recoveryApollo.performFailover(performFailover);\r\n }\r\n\r\n removeTestFailover(removeTestFailover: input.RemoveTestFailoverInput) {\r\n return this.recoveryApollo.removeTestFailover(removeTestFailover);\r\n }\r\n}\r\n","import { Membership } from '../../graphql/login/schema/type';\r\nimport { Login, Org } from '../../graphql/shared/schema/type';\r\nimport { Company, CompanyIdentifier } from '../../graphql/company/schema/type';\r\nimport { Roles } from '../../graphql/permissions/schema/type';\r\nimport { Session } from '../../graphql/backup/schema/type';\r\n\r\nexport class companyData {\r\n orgs: Org[];\r\n company: Company;\r\n logins: Login[];\r\n memberships: Membership[];\r\n companyIdentifiers: CompanyIdentifier[];\r\n roles: Roles[];\r\n backupAuth: Session[];\r\n}","\r\n\r\nexport class GetRolesInput {\r\n roles: string[];\r\n UserId: string;\r\n}","export class GetMembershipsInput {\r\n userId: string;\r\n}\r\n","export class GetCompanyIdentifiers {\r\n companyId: string;\r\n}\r\n","export class GetLoginsInput {\r\n UserId: string;\r\n sessionId: string;\r\n}\r\n","export class GetOrgsSimpleInput {\r\n UserId: string;\r\n getFull: boolean;\r\n}\r\n","\r\n\r\nexport class GetUserBackupAuthInput {\r\n sessionId: string;\r\n datacenterLocation: string;\r\n}","import { map } from 'rxjs/operators';\r\nimport { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport { GetLoginsInput, GetMembershipsInput } from '@app/core/gql/graphql/login/schema/input/index';\r\nimport { GetOrgsSimpleInput } from '@app/core/gql/graphql/login/schema/input';\r\nimport { GetCompanyIdentifiers } from '@app/core/gql/graphql/company/schema/input/index';\r\nimport { queryPrefetchCoreData } from '@app/core/gql/portal/query/queryPrefetchCoreData';\r\nimport { GetUserBackupAuthInput } from '@app/core/gql/graphql/backup/schema/input';\r\nimport { GetRolesInput } from '@app/core/gql/graphql/permissions/schema/input';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\n\r\nexport class PortalApollo {\r\n\r\n constructor(private apollo: Apollo) { }\r\n\r\n public getCompanyData(\r\n getUserBackupAuthInput: GetUserBackupAuthInput,\r\n companyId: string,\r\n getOrgsSimpleInput: GetOrgsSimpleInput,\r\n getCompanyIdentifiers: GetCompanyIdentifiers,\r\n getLoginsInput: GetLoginsInput,\r\n getMembershipsInput: GetMembershipsInput,\r\n getRolesInput: GetRolesInput\r\n ) {\r\n return this.apollo.query({\r\n query: queryPrefetchCoreData(),\r\n variables: {\r\n getUserBackupAuthInput,\r\n companyId,\r\n getOrgsSimpleInput,\r\n getCompanyIdentifiers,\r\n getLoginsInput,\r\n getMembershipsInput,\r\n getRolesInput\r\n },\r\n fetchPolicy: \"no-cache\" \r\n }).pipe(map(result => {\r\n return result;\r\n }));\r\n }\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function queryPrefetchCoreData() {\r\n return gql`\r\n query baseData(\r\n $getUserBackupAuthInput: GetUserBackupAuthInput\r\n $companyId: String\r\n $getOrgsSimpleInput: GetOrgsSimpleInput\r\n $getCompanyIdentifiers: GetCompanyIdentifiers\r\n $getLoginsInput: GetLoginsInput\r\n $getMembershipsInput: GetMembershipsInput\r\n $getRolesInput: GetRolesInput\r\n ) {\r\n Company: getCompany(getCompany: $companyId) {\r\n message\r\n company {\r\n companyId\r\n companyName\r\n companyNameShort\r\n isReseller\r\n }\r\n }\r\n Memberships: getMemberships(getMembershipsInput: $getMembershipsInput) {\r\n success\r\n message\r\n getMembershipsResponse {\r\n result {\r\n applicationName\r\n datacenterCode\r\n location\r\n useTwoFactorAuth\r\n membershipId\r\n applicationId\r\n locationId\r\n companyId\r\n isApproved\r\n isLockedOut\r\n }\r\n }\r\n }\r\n Orgs: getOrgsSimple(getOrgsSimpleInput: $getOrgsSimpleInput) {\r\n success\r\n message\r\n orgsResponse {\r\n result {\r\n id\r\n name\r\n datacenterLocation\r\n id\r\n }\r\n }\r\n }\r\n CompanyIdentifiers: getCompanyIdentifiers(\r\n getCompanyIdentifiers: $getCompanyIdentifiers\r\n ) {\r\n success\r\n message\r\n companyIdentifiers {\r\n companyIdentifierId\r\n companyId\r\n locationId\r\n applicationId\r\n orgName\r\n orgUserName\r\n orgIdentifier\r\n isRemote\r\n applicationName\r\n companyName\r\n location\r\n locationType\r\n datacenterCode\r\n datacenterName\r\n companyNameShort\r\n }\r\n }\r\n BackupAuth: getUserBackupAuth(getUserBackupAuthInput: $getUserBackupAuthInput) {\r\n success\r\n message\r\n backupAuth {\r\n result {\r\n application\r\n datacenterLocation\r\n sessionId\r\n }\r\n }\r\n }\r\n UserLogins: getLogins(getLoginsInput: $getLoginsInput) {\r\n success\r\n message\r\n loginsResponse {\r\n userId\r\n applicationName\r\n datacenterLocation\r\n }\r\n }\r\n Roles: getRoles(getRolesInput: $getRolesInput) {\r\n success\r\n message\r\n code\r\n loginAPIResponse {\r\n result {\r\n role\r\n roleDescription\r\n roleId\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import { companyData } from '@app/core/gql/portal/type/companyData';\r\nimport { LoginAPIResponse } from './../graphql/permissions/schema/type/loginAPIResponse';\r\nimport { GetRolesInput } from './../graphql/permissions/schema/input/getRolesInput';\r\nimport { map } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { Org } from 'src/app/core/_models/org';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { PortalApollo } from '../portal/portalApollo';\r\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type/index';\r\nimport { Company } from 'src/app/core/gql/graphql/company/schema/type/index';\r\nimport { Membership } from 'src/app/core/gql/graphql/login/schema/type/index';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type/index';\r\nimport { GetMembershipsInput } from './../graphql/login/schema/input/getMembershipsInput';\r\nimport { GetCompanyIdentifiers } from 'src/app/core/gql/graphql/company/schema/input/index';\r\nimport { GetLoginsInput, GetOrgsSimpleInput } from '../graphql/login/schema/input';\r\nimport { GetUserBackupAuthInput } from '../graphql/backup/schema/input';\r\nimport { Roles } from '../graphql/permissions/schema/type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class PortalProxy {\r\n\r\n public orgs: Observable;\r\n public logins: Observable;\r\n public company: Observable;\r\n public memberships: Observable;\r\n public companyIdentifiers: Observable;\r\n public roles: Observable;\r\n\r\n private orgsSubject = new BehaviorSubject([]);\r\n private loginsSubject = new BehaviorSubject([]);\r\n private membershipsSubject = new BehaviorSubject([]);\r\n private companySubject = new BehaviorSubject(new Company());\r\n private companyIdentifiersSubject = new BehaviorSubject([]);\r\n private rolesSubject = new BehaviorSubject([]);\r\n\r\n public get getOrgsValue(): Org[] {\r\n return this.orgsSubject.value;\r\n }\r\n\r\n public get getLoginsValue(): Login[] {\r\n return this.loginsSubject.value;\r\n }\r\n\r\n public get getCompanyValue(): Company {\r\n return this.companySubject.value;\r\n }\r\n\r\n public get getMembershipsValue(): Membership[] {\r\n return this.membershipsSubject.value;\r\n }\r\n\r\n public get getCompanyIdentifiersValue(): CompanyIdentifier[] {\r\n return this.companyIdentifiersSubject.value;\r\n }\r\n\r\n public get getRolesValue(): Roles[] {\r\n return this.rolesSubject.value;\r\n }\r\n\r\n constructor(private portalApollo: PortalApollo, private n3tStore: N3TStore) {\r\n this.orgs = n3tStore.selectOrgs();\r\n this.company = n3tStore.selectCompany();\r\n this.logins = n3tStore.selectUserLogins();\r\n this.memberships = n3tStore.selectMembeships();\r\n this.companyIdentifiers = n3tStore.selectCompanyIdentifiers();\r\n this.roles = n3tStore.selectRoles();\r\n\r\n this.orgs.subscribe(x => this.orgsSubject.next(x));\r\n this.company.subscribe(x => this.companySubject.next(x));\r\n this.logins.subscribe(x => this.loginsSubject.next(x));\r\n this.memberships.subscribe(x => this.membershipsSubject.next(x));\r\n this.companyIdentifiers.subscribe(x => this.companyIdentifiersSubject.next(x));\r\n this.roles.subscribe(x => this.rolesSubject.next(x));\r\n }\r\n\r\n public getCompanyData(userId: string, companyId: string): Observable {\r\n\r\n const getLoginsInput: GetLoginsInput = new GetLoginsInput();\r\n const getOrgsSimpleInput: GetOrgsSimpleInput = new GetOrgsSimpleInput();\r\n const getCompanyIdentifiers: GetCompanyIdentifiers = new GetCompanyIdentifiers();\r\n const getMembershipsInput: GetMembershipsInput = new GetMembershipsInput();\r\n const getUserBackupAuthInput: GetUserBackupAuthInput = new GetUserBackupAuthInput();\r\n const getRolesInput: GetRolesInput = new GetRolesInput();\r\n\r\n getLoginsInput.UserId = userId;\r\n getLoginsInput.sessionId = '';\r\n getCompanyIdentifiers.companyId = companyId;\r\n getOrgsSimpleInput.UserId = userId;\r\n getMembershipsInput.userId = userId;\r\n getRolesInput.UserId = userId;\r\n\r\n return this.portalApollo.getCompanyData(getUserBackupAuthInput, companyId, getOrgsSimpleInput, getCompanyIdentifiers, getLoginsInput, getMembershipsInput, getRolesInput)\r\n .pipe(map(result => {\r\n let cmpData: companyData = new companyData();\r\n cmpData.company = result.data.Company.company;\r\n cmpData.logins = result.data.UserLogins.loginsResponse;\r\n cmpData.memberships = result.data.Memberships.getMembershipsResponse.result;\r\n cmpData.companyIdentifiers = result.data.CompanyIdentifiers.success ? result.data.CompanyIdentifiers.companyIdentifiers : [];\r\n cmpData.orgs = result.data.Orgs.success ? result.data.Orgs.orgsResponse.result : [];\r\n cmpData.roles = result.data.Roles.loginAPIResponse.result;\r\n cmpData.backupAuth = result.data.BackupAuth.backupAuth.result;\r\n return cmpData;\r\n }));\r\n }\r\n }\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class NetworkApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getNetworksByLocation(getNetworksByLocationInput: input.GetNetworksByLocationInput) {\r\n return this.apollo.query({\r\n query: query.queryGetNetworksByLocation(),\r\n variables: {\r\n getNetworksByLocationInput: {\r\n userId: getNetworksByLocationInput.userId,\r\n datacenterLocation: getNetworksByLocationInput.datacenterLocation\r\n }\r\n }\r\n });\r\n } \r\n\r\n getVpnsByLocation(getVpnsByLocationInput: input.GetVpnsByLocationInput) {\r\n return this.apollo.query({\r\n query: query.queryGetVpnsByLocation(),\r\n variables: {\r\n getVpnsByLocationInput: {\r\n userId: getVpnsByLocationInput.userId,\r\n datacenterLocation: getVpnsByLocationInput.datacenterLocation\r\n }\r\n }\r\n })\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetNetworksByLocation() {\r\n return gql`\r\n query getNetworksByLocation($getNetworksByLocationInput: GetNetworksByLocationInput) {\r\n NetworksByLocation:getNetworksByLocation(getNetworksByLocationInput: $getNetworksByLocationInput) {\r\n success,\r\n message,\r\n networks {\r\n vpcs {\r\n cidrBlock\r\n cidrBlockAssociationSet {\r\n associationId\r\n cidrBlock\r\n cidrBlockState {\r\n state {\r\n value\r\n }\r\n }\r\n }\r\n dhcpOptionsId\r\n instanceTenancy {\r\n value\r\n }\r\n ipv6CidrBlockAssociationSet {\r\n associationId\r\n cidrBlock\r\n cidrBlockState {\r\n state {\r\n value\r\n }\r\n }\r\n }\r\n isDefault\r\n state {\r\n value\r\n }\r\n tags {\r\n key\r\n value\r\n }\r\n vpcId\r\n }\r\n vpns {\r\n category\r\n customerGatewayConfiguration\r\n customerGatewayId\r\n options {\r\n staticRoutesOnly\r\n }\r\n routes {\r\n destinationCidrBlock\r\n source {\r\n value\r\n }\r\n state {\r\n value\r\n }\r\n }\r\n state {\r\n value\r\n }\r\n tags {\r\n key\r\n value\r\n }\r\n type {\r\n value\r\n }\r\n vgwTelemetry {\r\n acceptedRouteCount\r\n lastStatusChange\r\n outsideIpAddress\r\n status {\r\n value\r\n }\r\n statusMessage\r\n }\r\n vpnConnectionId\r\n vpnGatewayId\r\n }\r\n gateways {\r\n attachments {\r\n state {\r\n value\r\n }\r\n vpcId\r\n }\r\n internetGatewayId\r\n tags {\r\n key\r\n value\r\n }\r\n }\r\n subnets {\r\n assignIpv6AddressOnCreation\r\n availabilityZone\r\n availableIpAddressCount\r\n cidrBlock\r\n defaultForAz\r\n ipv6CidrBlockAssociationSet {\r\n associationId\r\n ipv6CidrBlock\r\n ipv6CidrBlockState {\r\n value\r\n }\r\n }\r\n mapPublicIpOnLaunch\r\n state {\r\n value\r\n }\r\n subnetId\r\n tags {\r\n key\r\n value\r\n }\r\n vpcId\r\n }\r\n networkInterfaces {\r\n subnetId\r\n status {\r\n value\r\n }\r\n sourceDestCheck\r\n requesterManaged\r\n requesterId\r\n privateIpAddresses {\r\n association {\r\n allocationId\r\n associationId\r\n ipOwnerId\r\n publicDnsName\r\n publicIp\r\n }\r\n primary\r\n privateDnsName\r\n privateIpAddress\r\n }\r\n privateIpAddress\r\n privateDnsName\r\n tagSet {\r\n key\r\n value\r\n }\r\n ownerId\r\n macAddress\r\n ipv6Addresses {\r\n ipv6Address\r\n }\r\n interfaceType {\r\n value\r\n }\r\n groups {\r\n groupId\r\n groupName\r\n }\r\n description\r\n availabilityZone\r\n attachment {\r\n attachmentId\r\n attachTime\r\n deleteOnTermination\r\n deviceIndex\r\n instanceId\r\n instanceOwnerId\r\n status {\r\n value\r\n }\r\n }\r\n association {\r\n allocationId\r\n associationId\r\n ipOwnerId\r\n publicDnsName\r\n publicIp\r\n }\r\n networkInterfaceId\r\n vpcId\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetVpnsByLocation() {\r\n return gql`\r\n query getVpnsByLocation($getVpnsByLocationInput: GetVpnsByLocationInput ) {\r\n getVpnsByLocation(getVpnsByLocationInput:$getVpnsByLocationInput) {\r\n code\r\n success\r\n message \r\n vpns{\r\n category\r\n customerGatewayId\r\n options {\r\n staticRoutesOnly\r\n }\r\n routes {\r\n state {\r\n value\r\n } \r\n }\r\n state {\r\n value\r\n }\r\n tags {\r\n key\r\n value\r\n }\r\n type {\r\n value\r\n }\r\n vgwTelemetry {\r\n acceptedRouteCount\r\n lastStatusChange\r\n outsideIpAddress\r\n status {\r\n value\r\n }\r\n statusMessage\r\n }\r\n vpnConnectionId\r\n vpnGatewayId\r\n }\r\n } \r\n }\r\n `;\r\n}\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { NetworkApollo } from './networkApollo';\r\nimport * as input from './schema/input'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class NetworkProxy {\r\n constructor(private networkApollo: NetworkApollo) {}\r\n\r\n getNetworksByLocation(getNetworksByLocation: input.GetNetworksByLocationInput) {\r\n return this.networkApollo.getNetworksByLocation(getNetworksByLocation);\r\n }\r\n\r\n getVpnsByLocation(getVpnsByLocation: input.GetVpnsByLocationInput) {\r\n return this.networkApollo.getVpnsByLocation(getVpnsByLocation);\r\n }\r\n}\r\n","import { GatewayType } from './../../../network/schema/type/gatewayType';\r\nimport gql from 'graphql-tag';\r\n\r\nexport function queryGetCompute() {\r\n return gql`\r\n\tquery getCompute($getCompute: GetCompute) {\r\n\t\tCompute:getCompute(getCompute: $getCompute) {\r\n message\r\n success\r\n compute {\r\n countVDCs\r\n countVApps\r\n countVMs\r\n result {\r\n id\r\n name\r\n orgName\r\n datacenterLocation\r\n type\r\n region\r\n allocationModel\r\n memoryAllocationMB\r\n memoryUsedMB\r\n memoryLimitMB\r\n storageAllocationMB\r\n storageUsedMB\r\n storageLimitMB\r\n cpuAllocationMhz\r\n cpuUsedMhz\r\n cpuLimitMhz\r\n vAppsCount\r\n vmCount\r\n vApps {\r\n name\r\n cpuAllocationMhz\r\n memoryAllocationMB\r\n vMsCount\r\n storageKB\r\n id\r\n vms {\r\n name\r\n numberOfCpus\r\n moref\r\n memory\r\n memoryMB\r\n memoryMBSpecified\r\n cpu\r\n cpuHotAddEnabled\r\n cpuHotAddEnabledSpecified\r\n diskCount\r\n diskSize\r\n disks {\r\n autoDelete\r\n boot\r\n deviceName\r\n index\r\n kind\r\n mode\r\n source\r\n type\r\n size\r\n }\r\n guestOs\r\n hardwareVersion\r\n hardwareVersionSpecified\r\n hasDR\r\n id\r\n isBusy\r\n isBusySpecified\r\n isDRActive\r\n isDeleted\r\n isDeletedSpecified\r\n isDeployed\r\n isDeployedSpecified\r\n isInMaintenanceMode\r\n isInMaintenanceModeSpecified\r\n isPublished\r\n isPublishedSpecified\r\n isVAppTemplate\r\n isVAppTemplateSpecified\r\n memoryHotAddEnabled\r\n memoryHotAddEnabledSpecified\r\n networkInfoRaw\r\n nics {\r\n nicId\r\n nicName\r\n isPrimaryNic\r\n iPAddress\r\n }\r\n numberOfCpusSpecified\r\n numberOfCpus\r\n status\r\n vmHostType\r\n vmInstanceType\r\n vmToolsVersion\r\n vmToolsVersionSpecified\r\n }\r\n }\r\n edgeGateways {\r\n id\r\n href\r\n name\r\n status\r\n description\r\n configuration {\r\n gatewayBackingConfig\r\n gatewayInterfaces {\r\n name\r\n displayName\r\n network {\r\n href\r\n name\r\n type\r\n }\r\n interfaceType\r\n subnetParticipation {\r\n gateway\r\n netmask\r\n ipAddress\r\n ipRanges {\r\n startAddress\r\n endAddress\r\n }\r\n applyRateLimit\r\n inRateLimit\r\n outRateLimit\r\n }\r\n applyRateLimit\r\n inRateLimit\r\n outRateLimit\r\n useForDefaultRoute\r\n }\r\n edgeGatewayServiceConfiguration { \r\n firewallService {\r\n isEnabled\r\n defaultAction\r\n logDefaultAction\r\n firewallRules {\r\n isEnabled\r\n matchOnTranslate\r\n description\r\n policy\r\n proctocols {\r\n name\r\n isEnabled\r\n }\r\n port\r\n destinationPortRange\r\n destinationIp\r\n sourcePort\r\n sourcePortRange\r\n sourceIp\r\n enableLogging\r\n }\r\n }\r\n natService {\r\n isEnabled\r\n natType\r\n policy\r\n natRules {\r\n description\r\n ruleType\r\n isEnabled\r\n gatewayNatRule {\r\n interface {\r\n href\r\n id\r\n type\r\n name\r\n }\r\n originalIp\r\n originalPort\r\n translatedIp\r\n translatedPort\r\n protocol\r\n icmpSubType\r\n }\r\n }\r\n }\r\n gatewayIpsecVpnService {\r\n isEnabled\r\n tunnels {\r\n name\r\n description\r\n ipsecVpnThirdPartyPeer {\r\n peerId\r\n }\r\n peerIpAddress\r\n peerId\r\n localIpAddress\r\n localId\r\n localSubnets {\r\n name\r\n gateway\r\n netmask\r\n } \r\n peerSubnets {\r\n name\r\n gateway\r\n netmask\r\n } \r\n sharedSecret\r\n sharedSecretEncrypted\r\n encryptionProtocol\r\n mtu\r\n isEnabled\r\n isOperational\r\n }\r\n }\r\n }\r\n haEnabled\r\n useDefaultRouteForDnsRelay\r\n advancedNetworkingEnabled\r\n distributedRoutingEnabled\r\n fipsModeEnabled\r\n backwardCompatibilityMode\r\n }\r\n gatewayBackingRef {\r\n vCRef {\r\n id\r\n name\r\n type\r\n }\r\n gatewayId\r\n }\r\n }\r\n networks {\r\n id\r\n href\r\n name\r\n description\r\n type\r\n providerInfo\r\n configuration {\r\n fenceMode\r\n retainNetInfoAcrossDeployments\r\n ipScopes {\r\n dns1\r\n dns2\r\n dnsSuffix\r\n gateway\r\n netmask\r\n ipRanges {\r\n startAddress\r\n endAddress\r\n }\r\n isEnabled\r\n isInherited\r\n }\r\n backwardCompatibilityMode\r\n subInterface\r\n distributedInterface\r\n guestVlanAllowed\r\n connected\r\n dualStackNetwork\r\n }\r\n }\r\n networkQuota\r\n usedNetworkQuota\r\n }\r\n }\r\n }\r\n\t}\r\n `;\r\n}","\r\nimport { Guid } from 'guid-typescript';\r\nimport { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\nimport { DatacenterLocations } from '../shared/schema/enums';\r\nimport { TasksService } from './../../../_services/tasks.service';\r\nimport { QueryRefService } from '@app/core/_services/query-ref.service';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class ComputeApollo {\r\n constructor(\r\n\t\tprivate apollo: Apollo,\r\n\t\tprivate tasksService: TasksService,\r\n\t\tprivate queryRefService: QueryRefService\r\n\t\t) {}\r\n\r\n\tgetCompute(userid: string, correlationId, datapointId: Guid, pollingInterval: number = 0) {\r\n\t\tlet getCompute: input.GetCompute = { UserId: userid, CorrelationId: correlationId };\r\n\t\tthis.queryRefService._computeQueryRef = this.apollo.watchQuery({\r\n\t\t\tquery: query.queryGetCompute(),\r\n\t\t\tpollInterval: pollingInterval,\r\n\t\t\tvariables: {\r\n\t\t\t\tgetCompute: getCompute,\r\n\t\t\t},\r\n\t\t\tcontext: {\r\n\t\t\t\theaders: new HttpHeaders().set(\"datapointId\", datapointId.toString())\r\n\t\t\t},\r\n\t\t\tfetchPolicy: \"no-cache\" \r\n\t\t})\r\n\t\treturn this.queryRefService._computeQueryRef.valueChanges;\r\n\t}\r\n\r\n\tgetComputeRef(userid: string, correlationId: string, pollingInterval: number = 0) {\r\n\t\tlet getCompute: input.GetCompute = { UserId: userid, CorrelationId: correlationId };\r\n\t\treturn this.apollo.watchQuery({\r\n\t\t\tquery: query.queryGetCompute(),\r\n\t\t\tpollInterval: pollingInterval,\r\n\t\t\tvariables: {\r\n\t\t\t\tgetCompute: getCompute\r\n\t\t\t},\r\n\t\t\tfetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t}\r\n\r\n\r\n\tgetVMWareProviderTokens(getVMWareProviderTokensInput: input.GetVMWareProviderTokensInput) {\r\n\treturn this.apollo.query({\r\n\t\tquery: query.queryGetVMWareProviderTokens(),\r\n\t\tvariables: {\r\n\t\tgetVMWareProviderTokensInput: {\r\n\t\t\tuserId: getVMWareProviderTokensInput.userId,\r\n\t\t}\r\n\t\t},\r\n\t\tfetchPolicy: \"no-cache\" \r\n\t});\r\n\t} //getVMWareProviderTokens\r\n\r\n\tgetVMScreenTicket(getVMScreenTicketInput: input.GetVMScreenTicketInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetVMScreenTicket(),\r\n\t\t\tfetchPolicy:\"network-only\",\r\n\t\t\tvariables: {\r\n\t\t\tgetVMScreenTicketInput: {\r\n\t\t\t\tuserId: getVMScreenTicketInput.userId,\r\n\t\t\t\tapp: getVMScreenTicketInput.app,\r\n\t\t\t\tvmId: getVMScreenTicketInput.vmId,\r\n\t\t\t\tdatacenterLocation: getVMScreenTicketInput.datacenterLocation\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //getVMScreenTicket\r\n\tupdatePowerStatus(updatePowerStatusInput: input.UpdatePowerStatusInput) {\r\n\t\treturn this.apollo.mutate({\r\n\t\t\tmutation: mutation.mutationUpdatePowerStatus(),\r\n\t\t\tvariables: {\r\n\t\t\t\tupdatePowerStatusInput: {\r\n\t\t\t\t\tapp: updatePowerStatusInput.app,\r\n\t\t\t\t\tdatacenterLocation: updatePowerStatusInput.datacenterLocation,\r\n\t\t\t\t\tpowerOn: updatePowerStatusInput.powerOn,\r\n\t\t\t\t\tuserId: updatePowerStatusInput.userId,\r\n\t\t\t\t\tvmNameOrId: updatePowerStatusInput.vmNameOrId\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //updatePowerStatus\r\n\tupdateCpuCount(updateCpuCountInput: input.UpdateCpuCountInput) {\r\n\t\treturn this.apollo.mutate({\r\n\t\t\tmutation: mutation.mutationUpdateCpuCount(),\r\n\t\t\tvariables: {\r\n\t\t\tupdateCpuCountInput: {\r\n\t\t\t\tnumCpus: updateCpuCountInput.numCpus,\r\n\t\t\t\tuserId: updateCpuCountInput.userId,\r\n\t\t\t\torg: updateCpuCountInput.org,\r\n\t\t\t\tdatacenterLocation: updateCpuCountInput.datacenterLocation,\r\n\t\t\t\tvmName: updateCpuCountInput.vmName\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //updateCpuCount\r\n\tupdateMemory(updateMemoryInput: input.UpdateMemoryInput) {\r\n\t\treturn this.apollo.mutate({\r\n\t\t\tmutation: mutation.mutationUpdateMemory(),\r\n\t\t\tvariables: {\r\n\t\t\tupdateMemoryInput: {\r\n\t\t\t\tmemCount: updateMemoryInput.memCount,\r\n\t\t\t\tuserId: updateMemoryInput.userId,\r\n\t\t\t\torg: updateMemoryInput.org,\r\n\t\t\t\tdatacenterLocation: updateMemoryInput.datacenterLocation,\r\n\t\t\t\tvmName: updateMemoryInput.vmName\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //updateMemory\r\n\tcreateVMSnap(createVMSnapInput: input.CreateVMSnapInput) {\r\n\t\treturn this.apollo.mutate({\r\n\t\t\tmutation: mutation.mutationCreateVMSnap(),\r\n\t\t\tvariables: {\r\n\t\t\tcreateVMSnapInput: {\r\n\t\t\t\tuserId: createVMSnapInput.userId,\r\n\t\t\t\torgname: createVMSnapInput.orgname,\r\n\t\t\t\tdatacenterLocation: createVMSnapInput.datacenterLocation,\r\n\t\t\t\tvmname: createVMSnapInput.vmname,\r\n\t\t\t\tvmOrVappId: createVMSnapInput.vmOrVappId\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //createVMSnap\r\n\tremoveVMSnap(removeVMSnapInput: input.RemoveVMSnapInput) {\r\n\t\treturn this.apollo.mutate({\r\n\t\t\tmutation: mutation.mutationRemoveVMSnap(),\r\n\t\t\tvariables: {\r\n\t\t\tremoveVMSnapInput: {\r\n\t\t\t\tuserId: removeVMSnapInput.userId,\r\n\t\t\t\torgname: removeVMSnapInput.orgname,\r\n\t\t\t\tdatacenterLocation: removeVMSnapInput.datacenterLocation,\r\n\t\t\t\tvmname: removeVMSnapInput.vmname,\r\n\t\t\t\tvmid: removeVMSnapInput.vmid\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //removeVMSnap\r\n\trevertVMSnap(revertVMSnapInput: input.RevertVMSnapInput) {\r\n\t\treturn this.apollo.mutate({\r\n\t\t\tmutation: mutation.mutationRevertVMSnap(),\r\n\t\t\tvariables: {\r\n\t\t\trevertVMSnapInput: {\r\n\t\t\t\tuserId: revertVMSnapInput.userId,\r\n\t\t\t\torgname: revertVMSnapInput.orgname,\r\n\t\t\t\tdatacenterLocation: revertVMSnapInput.datacenterLocation,\r\n\t\t\t\tvmname: revertVMSnapInput.vmname,\r\n\t\t\t\tvmid: revertVMSnapInput.vmid\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} //revertVMSnap\r\n\tgetAppBackupTemplate(getAppBackupTemplateInput: input.GetAppBackupTemplateInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetAppBackupTemplate(),\r\n\t\t\tvariables: {\r\n\t\t\tsessionid: getAppBackupTemplateInput.sessionid,\r\n\t\t\ttemplateid: getAppBackupTemplateInput.templateid, \r\n\t\t\tdatacenterLocation: getAppBackupTemplateInput.datacenterLocation\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getAppBackupTemplate\r\n\tgetAppBackup(getAppBackupInput: input.GetAppBackupInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetAppBackup(),\r\n\t\t\tvariables: {\r\n\t\t\tsessionid: getAppBackupInput.sessionid,\r\n\t\t\tappid: getAppBackupInput.appid, \r\n\t\t\tdatacenterLocation: getAppBackupInput.datacenterLocation\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getAppBackup\r\n\tgetComputeStats(getComputeStatsInput: input.GetComputeStatsInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetComputeStats(),\r\n\t\t\tvariables: {\r\n\t\t\tuserId: getComputeStatsInput.userId,\r\n\t\t\tdatacenterLocation: getComputeStatsInput.datacenterLocation,\r\n\t\t\tvmid: getComputeStatsInput.vmid\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getComputeStats\r\n\tgetComputeTemplates(getComputeTemplatesInput: input.GetComputeTemplatesInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetComputeTemplates(),\r\n\t\t\tvariables: {\r\n\t\t\tDatacenterLocations: getComputeTemplatesInput.DatacenterLocations\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getComputeTemplates\r\n\tgetFilteredNetworks(getFilteredNetworksInput: input.GetFilteredNetworksInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetFilteredNetworks(),\r\n\t\t\tvariables: {\r\n\t\t\t\tuserId: getFilteredNetworksInput.userId,\r\n\t\t\t\torgName: getFilteredNetworksInput.orgName,\r\n\t\t\t\tdatacenterLocation: getFilteredNetworksInput.datacenterLocation,\r\n\t\t\t\tvmId: getFilteredNetworksInput.vmId\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getFilteredNetworks\r\n\tgetSnapProtectStatus(getSnapProtectStatusInput: input.GetSnapProtectStatusInput) {\r\n\t\treturn this.apollo.query({\r\n\t\t\tquery: query.queryGetSnapProtectStatus(),\r\n\t\t\tvariables: {\r\n\t\t\t\tgetSnapProtectStatusInput: {\r\n\t\t\t\t\tuserId: getSnapProtectStatusInput.userId,\r\n\t\t\t\t\torgName: getSnapProtectStatusInput.orgName,\r\n\t\t\t\t\tdatacenterLocation: getSnapProtectStatusInput.datacenterLocation,\r\n\t\t\t\t\tvmName: getSnapProtectStatusInput.vmName,\r\n\t\t\t\t\tvmOrVappId: getSnapProtectStatusInput.vmOrVappId\r\n\t\t\t\t}\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getSnapProtectStatus\r\n\tgetMeteringVmProperties(getMeteringVmPropertiesInput: input.GetMeteringVmPropertiesInput) {\r\n\t\treturn this.apollo.query({\r\n\t\tquery: query.queryGetMeteringVmProperties(),\r\n\t\tvariables: {\r\n\t\t\tdatacenterLocation: getMeteringVmPropertiesInput.datacenterLocation,\r\n\t\t\tvms: getMeteringVmPropertiesInput.vms\r\n\t\t},\r\n\t\tfetchPolicy: \"no-cache\" \r\n\t\t});\r\n\t} //getMeteringVmProperties\r\n\tgetTasks(getTasksInput: input.GetTasksInput) {\r\n\t\treturn this.apollo.watchQuery({\r\n\t\t\tquery: query.queryGetTasks(),\r\n\t\t\tvariables: {\r\n\t\t\t\tgetTasksInput: {\r\n\t\t\t\t\tdatacenterLocation: DatacenterLocations[getTasksInput.datacenterLocation],\r\n\t\t\t\t\tapp: getTasksInput.app,\r\n\t\t\t\t\tcompanyId: getTasksInput.companyId\r\n\t\t\t\t}\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t}).valueChanges;\r\n\t} //getTasks\r\n\tgetTask(getTaskInput: input.GetTaskInput) {\r\n\t\treturn this.apollo.watchQuery({\r\n\t\t\tquery: query.queryGetTask(),\r\n\t\t\tvariables: {\r\n\t\t\t\tdatacenterLocation: DatacenterLocations[getTaskInput.datacenterLocation],\r\n\t\t\t\tapp: getTaskInput.app,\r\n\t\t\t\ttaskId: getTaskInput.taskId,\r\n\t\t\t\tuserId: getTaskInput.userId\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t}).valueChanges;\r\n\t} //getTask\r\n\tgetAllTasks(getAllTasksInput: input.GetAllTasksInput, pollingInterval: number = 0) {\r\n\t\t\r\n\t\t// let dclocations = new Array();\r\n\r\n\t\t// getAllTasksInput.taskLocations.forEach(function (loc) {\r\n\t\t// \tvar dc: {[k: string]: any} = {};\r\n\t\t// \tdc.datacenterLocation = DatacenterLocations[loc.datacenterLocation];\r\n\t\t// \tdc.app = loc.app;\r\n\t\t// \tdc.companyId = loc.companyId;\r\n\t\t// \tdclocations.push(dc);\r\n\t\t// }); \r\n\r\n\t\tthis.tasksService.tasksQueryRef = this.apollo.watchQuery({\r\n\t\t\tquery: query.queryGetAllTasks(),\r\n\t\t\tpollInterval: pollingInterval,\r\n\t\t\tvariables: {\r\n\t\t\t\tgetAllTasksInput: {\r\n\t\t\t\t\ttaskLocations: getAllTasksInput.taskLocations //dclocations\r\n\t\t\t\t}\r\n\t\t\t},\r\n fetchPolicy: \"no-cache\" \r\n\t\t})//.valueChanges;\r\n\r\n\t\treturn this.tasksService.tasksQueryRef.valueChanges;\r\n\t} //getAllTasks\r\n\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetVMWareProviderTokens() {\r\n return gql`\r\n\tquery getVMWareProviderTokens($getVMWareProviderTokensInput: GetVMWareProviderTokensInput) {\r\n\t ComputeTokens:getVMWareProviderTokens(getVMWareProviderTokensInput: $getVMWareProviderTokensInput) {\r\n\t success\r\n\t message\r\n\t tokens {\r\n\t\tprovider\r\n\t\torgName\r\n\t\tdatacenterLocation\r\n\t\ttoken\r\n\t\tcontent\r\n\t\terrorMessage\r\n\t\terrorCode\r\n\t\terrorStatus\r\n\t }\r\n\t}\r\n\t}\r\n `; //queryGetVMWareProviderTokens\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetVMScreenTicket() {\r\n return gql`\r\n\tquery getVMScreenTicket($getVMScreenTicketInput: GetVMScreenTicketInput ) {\r\n\t ScreenTicket:getVMScreenTicket(getVMScreenTicketInput:$getVMScreenTicketInput) {\r\n\t\tsuccess\r\n\t\tmessage\r\n\t\t screenTicket { \r\n\t\t\t result {\r\n\t\t\thasError\r\n\t\t\tmessage\r\n\t\t\tresult {\r\n\t\t\t host\r\n\t\t\t vmx\r\n\t\t\t ticket\r\n\t\t\t port\r\n\t\t\t}\r\n\t\t } \r\n\t\t}\r\n\t }\r\n\t}\r\n `; //queryGetVMScreenTicket\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdatePowerStatus() {\r\n return gql`\r\n\tmutation updatePowerStatus($updatePowerStatusInput: UpdatePowerStatusInput ) {\r\n\t\tupdatePowerStatus(updatePowerStatusInput:$updatePowerStatusInput) {\r\n\t\tsuccess\r\n\t\tmessage\r\n\t\tpowerStatus{\r\n\t\t\tresult{\r\n\t\t\t\thasError\r\n \t\tmessage\r\n\t\t\t\tresult{\r\n\t\t\t\t\tid\r\n\t\t\t\t\ttype\r\n\t\t\t\t\thref\r\n\t\t\t\t\tname\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\tstartTime\r\n\t\t\t\t\texpiryTime\r\n\t\t\t\t\toperation\r\n\t\t\t\t\toperationName\r\n\t\t\t\t\tcancelRequested\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t}\r\n\t}\r\n`; //mutationUpdatePowerStatus\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdateCpuCount() {\r\n return gql`\r\n\tmutation updateCpuCount($updateCpuCountInput: UpdateCpuCountInput ) {\r\n updateCpuCount(updateCpuCountInput:$updateCpuCountInput) {\r\n\t\tmessage\r\n \tsuccess\r\n \tcpuCount {\r\n \t\tmemoryMB\r\n \tmemoryMBSpecified\r\n \t\t\tnumberOfCpus\r\n \t\t\tnumberOfCpusSpecified\r\n \t\t\tstorageProfileName\r\n \t\t\tvdc\r\n \t\t\thasDR\r\n \t\t\tisDRActive\r\n \t\t\tcpuHotAddEnabledSpecified\r\n \t\t\tcpuHotAddEnabled\r\n \t\t\tisVAppTemplateSpecified\r\n \t\t\tmemoryHotAddEnabledSpecified\r\n \t\t\tvmToolsVersion\r\n \t\t\tvmToolsVersionSpecified\r\n \t\t\tvc\r\n \t\t\tmoref\r\n \t\t\thostName\r\n \t\t\tvmHostType\r\n \t\t\tnetworkInfoRaw\r\n \t\t\tvmInstanceType\r\n \t\t\tmetric {\r\n \t\tname\r\n \t\tunit\r\n \t\tvalue\r\n \t}\r\n \t\t\tdisks {\r\n\t\t\t\tautoDelete\r\n\t\t\t\tboot\r\n\t\t\t\tdeviceName\r\n\t\t\t\tindex\r\n\t\t\t\tkind\r\n\t\t\t\tmode\r\n\t\t\t\tsource\r\n\t\t\t\ttype\r\n\t\t\t\tsize\r\n\t\t\t}\r\n \t\t\tmemoryHotAddEnabled\r\n \t\t\tisVAppTemplate\r\n \t\t\tisPublishedSpecified\r\n \t\t\tisPublished\r\n \t\t\tname\r\n \t\t\tnameLong\r\n \t\t\tstatus\r\n \t\t\tcpu\r\n \t\t\tmemory\r\n \t\t\tdiskSize\r\n \t\t\thref\r\n \t\t\tid\r\n \t\t\tdiskCount\r\n \t\t\tcatalogName\r\n \t\t\tcontainer\r\n \t\t\tcontainerName\r\n \t\t\tguestOs\r\n \t\t\thardwareVersion\r\n \t\t\thardwareVersionSpecified\r\n \t\t\tisBusy\r\n \t\t\tisBusySpecified\r\n \t\t\tisDeleted\r\n \t\t\tisDeletedSpecified\r\n \t\t\tisDeployed\r\n \t\t\tisDeployedSpecified\r\n \t\t\tisInMaintenanceMode\r\n \t\t\tisInMaintenanceModeSpecified\r\n \t\t\tnics {\r\n\t\t\t\tvMId\r\n\t\t\t\tvMName\r\n\t\t\t\tnicId\r\n\t\t\t\tnicName\r\n\t\t\t\tisConnected\r\n\t\t\t\tnetworkName\r\n\t\t\t\tnetworkId\r\n\t\t\t\tisPrimaryNic\r\n\t\t\t\tiPMode\r\n\t\t\t\tiPAddress\r\n\t\t\t\tmacAddress\r\n\t\t\t\tnetworkAdapterType\r\n\t\t\t}\r\n \t\t\tnetworkConnectionSection {\r\n \t\t\t\tinfo\r\n \t\tprimaryNetworkConnectionIndex\r\n \t\tnetworkConnection {\r\n\t\t\t\t\tnetworkConnectionIndex\r\n\t\t\t\t\tipAddress\r\n\t\t\t\t\texternalIpAddress\r\n\t\t\t\t\tisConnected\r\n\t\t\t\t\tmACAddress\r\n\t\t\t\t\tipAddressAllocationMode\r\n\t\t\t\t\tneedsCustomization\r\n\t\t\t\t\tnetwork\r\n \t\t}\r\n \t\tlink {\r\n \t\t\thref\r\n \t\t\tid\r\n \t\t\ttype\r\n \t\t\tname\r\n \t\t\trel\r\n \t\t}\r\n \t\trequired\r\n \t\thref\r\n \t\ttype\r\n \t\t\t}\r\n \t\t\tcontent \r\n \t\t\terrorMessage \r\n \t\t\terrorCode \r\n \t\t\terrorStatus \r\n \t}\r\n }\r\n}\r\n`; //mutationUpdateCpuCount\r\n\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdateMemory() {\r\n return gql`\r\nmutation updateMemory($updateMemoryInput: UpdateMemoryInput ) {\r\n updateMemory(updateMemoryInput:$updateMemoryInput) {\r\n\t\tmessage\r\n \tsuccess\r\n \tcpuCount {\r\n \t\tmemoryMB\r\n \tmemoryMBSpecified\r\n \t\t\tnumberOfCpus\r\n \t\t\tnumberOfCpusSpecified\r\n \t\t\tstorageProfileName\r\n \t\t\tvdc\r\n \t\t\thasDR\r\n \t\t\tisDRActive\r\n \t\t\tcpuHotAddEnabledSpecified\r\n \t\t\tcpuHotAddEnabled\r\n \t\t\tisVAppTemplateSpecified\r\n \t\t\tmemoryHotAddEnabledSpecified\r\n \t\t\tvmToolsVersion\r\n \t\t\tvmToolsVersionSpecified\r\n \t\t\tvc\r\n \t\t\tmoref\r\n \t\t\thostName\r\n \t\t\tvmHostType\r\n \t\t\tnetworkInfoRaw\r\n \t\t\tvmInstanceType\r\n \t\t\tmetric {\r\n \t\tname\r\n \t\tunit\r\n \t\tvalue\r\n \t}\r\n \t\t\tdisks {\r\n\t\t\t\tautoDelete\r\n\t\t\t\tboot\r\n\t\t\t\tdeviceName\r\n\t\t\t\tindex\r\n\t\t\t\tkind\r\n\t\t\t\tmode\r\n\t\t\t\tsource\r\n\t\t\t\ttype\r\n\t\t\t\tsize\r\n\t\t\t}\r\n \t\t\tmemoryHotAddEnabled\r\n \t\t\tisVAppTemplate\r\n \t\t\tisPublishedSpecified\r\n \t\t\tisPublished\r\n \t\t\tname\r\n \t\t\tnameLong\r\n \t\t\tstatus\r\n \t\t\tcpu\r\n \t\t\tmemory\r\n \t\t\tdiskSize\r\n \t\t\thref\r\n \t\t\tid\r\n \t\t\tdiskCount\r\n \t\t\tcatalogName\r\n \t\t\tcontainer\r\n \t\t\tcontainerName\r\n \t\t\tguestOs\r\n \t\t\thardwareVersion\r\n \t\t\thardwareVersionSpecified\r\n \t\t\tisBusy\r\n \t\t\tisBusySpecified\r\n \t\t\tisDeleted\r\n \t\t\tisDeletedSpecified\r\n \t\t\tisDeployed\r\n \t\t\tisDeployedSpecified\r\n \t\t\tisInMaintenanceMode\r\n \t\t\tisInMaintenanceModeSpecified\r\n \t\t\tnics {\r\n\t\t\t\tvMId\r\n\t\t\t\tvMName\r\n\t\t\t\tnicId\r\n\t\t\t\tnicName\r\n\t\t\t\tisConnected\r\n\t\t\t\tnetworkName\r\n\t\t\t\tnetworkId\r\n\t\t\t\tisPrimaryNic\r\n\t\t\t\tiPMode\r\n\t\t\t\tiPAddress\r\n\t\t\t\tmacAddress\r\n\t\t\t\tnetworkAdapterType\r\n\t\t\t}\r\n \t\t\tnetworkConnectionSection {\r\n \t\t\t\tinfo\r\n \t\tprimaryNetworkConnectionIndex\r\n \t\tnetworkConnection {\r\n\t\t\t\t\tnetworkConnectionIndex\r\n\t\t\t\t\tipAddress\r\n\t\t\t\t\texternalIpAddress\r\n\t\t\t\t\tisConnected\r\n\t\t\t\t\tmACAddress\r\n\t\t\t\t\tipAddressAllocationMode\r\n\t\t\t\t\tneedsCustomization\r\n\t\t\t\t\tnetwork\r\n \t\t}\r\n \t\tlink {\r\n \t\t\thref\r\n \t\t\tid\r\n \t\t\ttype\r\n \t\t\tname\r\n \t\t\trel\r\n \t\t}\r\n \t\trequired\r\n \t\thref\r\n \t\ttype\r\n \t\t\t}\r\n \t\t\tcontent \r\n \t\t\terrorMessage \r\n \t\t\terrorCode \r\n \t\t\terrorStatus \r\n \t}\r\n }\r\n}\r\n`; //mutationUpdateMemory\r\n\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationCreateVMSnap() {\r\n return gql`\r\nmutation createVMSnap($createVMSnapInput: CreateVMSnapInput ) {\r\n createVMSnap(createVMSnapInput:$createVMSnapInput) {\r\n\t\tmessage\r\n success\r\n snapResponse {\r\n id\r\n type\r\n href\r\n name\r\n status\r\n startTime\r\n expiryTime\r\n operation\r\n operationName\r\n cancelRequested\r\n }\r\n \r\n }\r\n}\r\n`; //mutationCreateVMSnap\r\n\r\n}\r\n\r\n/**\r\n * snapResponse {\r\n exists\r\n createDate\r\n snap {\r\n info\r\n snapshot {\r\n size\r\n poweredOn\r\n created\r\n }\r\n type\r\n href\r\n required\r\n }\r\n content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n }\r\n */","import gql from 'graphql-tag';\r\n\r\nexport function mutationRemoveVMSnap() {\r\n return gql`\r\nmutation removeVMSnap($removeVMSnapInput: RemoveVMSnapInput ) {\r\n\t removeVMSnap(removeVMSnapInput:$removeVMSnapInput) {\r\n\t\t\tmessage\r\n\t success\r\n\t\t}\r\n\t}\r\n`; //mutationRemoveVmSnap\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationRevertVMSnap() {\r\n return gql`\r\n\tmutation revertVMSnap($revertVMSnapInput: RevertVMSnapInput ) {\r\n\t revertVMSnap(revertVMSnapInput:$revertVMSnapInput) {\r\n\t\t\tmessage\r\n\t success\r\n\t\t}\r\n\t}\r\n`; //mutationRevertVmSnap\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAppBackupTemplate() {\r\n return gql`\r\n\tquery getAppBackupTemplate($getAppBackupTemplateInput: GetAppBackupTemplateInput ) {\r\n\t\tgetAppBackupTemplate(getAppBackupTemplateInput:$getAppBackupTemplateInput) {\r\n\t\t\tsuccess\r\n\t\t\tmessage\r\n\t\t\tbackupTemplate {\r\n\t\t\t\tid\r\n\t\t\t\toverride\r\n\t\t\t\tdescription \r\n\t\t\t\tname \r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAppBackup() {\r\n return gql`\r\n\tquery getAppBackup($getAppBackupInput: GetAppBackupInput ) {\r\n\t\tgetAppBackup(getAppBackupInput:$getAppBackupInput) {\r\n\t\t\tsuccess\r\n\t\t\tmessage\r\n\t\t\tappBackupResponse{\r\n\t\t\t\tresult {\r\n\t\t\t\t\tpathname\r\n\t\t\t\t\tnetworkip\r\n\t\t\t\t\tnetworkname\r\n\t\t\t\t\tignore\r\n\t\t\t\t\tfriendlytype\r\n\t\t\t\t\tfailoverstate\r\n\t\t\t\t\tapptype\r\n\t\t\t\t\toriginalappid\r\n\t\t\t\t\tsourcecluster\r\n\t\t\t\t\tisclustered\r\n\t\t\t\t\tappname\r\n\t\t\t\t\tlastfailover\r\n\t\t\t\t\thostid\r\n\t\t\t\t\tusername\r\n\t\t\t\t\tvolumes\r\n\t\t\t\t\tmorecredentials\r\n\t\t\t\t\tappversion\r\n\t\t\t\t\tprotectable\r\n\t\t\t\t\tauxinfo\r\n\t\t\t\t\tid\r\n\t\t\t\t\tdescription\r\n\t\t\t\t\tsla {\r\n\t\t\t\t\t\tid\r\n\t\t\t\t\t\tmodifydate\r\n\t\t\t\t\t\texpirationoff\r\n\t\t\t\t\t\tslpid\r\n\t\t\t\t\t\tdescription\r\n\t\t\t\t\t\tcreatedate\r\n\t\t\t\t\t\tdedupasyncoff\r\n\t\t\t\t\t\tappid\r\n\t\t\t\t\t\tscheduleoff\r\n\t\t\t\t\t\tsltid\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tresponseStatus{\r\n\t\t\t\t\terrorCode\r\n\t\t\t\t\tmessage\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\t\r\n\t}\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetComputeStats() {\r\n return gql`\r\n\tquery getComputeStats($getComputeStatsInput: GetComputeStatsInput ) {\r\n\t\tgetComputeStats(getComputeStatsInput:$getComputeStatsInput) {\r\n\t\t\tsuccess\r\n\t\t\tmessage\r\n\t\t\tcomputeStatsResponse {\r\n\t\t\t\tresult {\r\n\t\t\t\t\tlink {\r\n\t\t\t\t\t\trel\r\n\t\t\t\t\t\thref\r\n\t\t\t\t\t\ttype\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmetric {\r\n\t\t\t\t\t\tname\r\n\t\t\t\t\t\tunit\r\n\t\t\t\t\t\tvalue\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetComputeTemplates() {\r\n return gql`\r\n\tquery getComputeTemplates($getComputeTemplatesInput: GetComputeTemplatesInput ) {\r\n\t\tgetComputeTemplates(getComputeTemplatesInput:$getComputeTemplatesInput) {\r\n\t\t\tsuccess\r\n\t\t\tmessage\r\n\t\t\tcomputeTemplates {\r\n\t\t\t\tid\r\n\t\t\t\tdatacenter\r\n\t\t\t\torgTemplateCreatorHref\r\n\t\t\t\tvdcName\r\n\t\t\t\tvdcNetworks{\r\n\t\t\t\t\tname\r\n\t\t\t\t\tprimaryDNS\r\n\t\t\t\t\tgatewayAddress\r\n\t\t\t\t\tnetworkMask\r\n\t\t\t\t\tipRange {\r\n\t\t\t\t\t\tipRangeBegining\r\n\t\t\t\t\t\tipRangeEnding\r\n\t\t\t\t\t}\r\n\t\t\t\t\terrorCode\r\n\t\t\t\t\terrorStatus\r\n\t\t\t\t}\r\n\t\t\t\tcatalogName\r\n\t\t\t\tvAppTemplateName\r\n\t\t\t\tvms {\r\n\t\t\t\t\tname\r\n\t\t\t\t\tstatus\r\n\t\t\t\t\tcpu\r\n\t\t\t\t\tmemory\r\n\t\t\t\t\tdiskSize\r\n\t\t\t\t\thref\r\n\t\t\t\t\tid\r\n\t\t\t\t\tdiskCount\r\n\t\t\t\t\tcontainer\r\n\t\t\t\t\tcontainerName\r\n\t\t\t\t\tguestOs\r\n\t\t\t\t\thardwareVersion\r\n\t\t\t\t\thardwareVersionSpecified\r\n\t\t\t\t\tisBusy\r\n\t\t\t\t\tisBusySpecified\r\n\t\t\t\t\tisDeleted\r\n\t\t\t\t\tisDeletedSpecified\r\n\t\t\t\t\tisDeployed\r\n\t\t\t\t\tisDeployedSpecified\r\n\t\t\t\t\tisInMaintenanceMode\r\n\t\t\t\t\tisInMaintenanceModeSpecified\r\n\t\t\t\t\tisPublished\r\n\t\t\t\t\tisPublishedSpecified\r\n\t\t\t\t\tisVAppTemplate\r\n\t\t\t\t\tisVAppTemplateSpecified\r\n\t\t\t\t\tmemory\r\n\t\t\t\t\tmemoryMBSpecified\r\n\t\t\t\t\tnumberOfCpus\r\n\t\t\t\t\tnumberOfCpusSpecified\r\n\t\t\t\t\thasDR\r\n\t\t\t\t\tisDRActive\r\n\t\t\t\t\tcpuHotAddEnabledSpecified\r\n\t\t\t\t\tcpuHotAddEnabled\r\n\t\t\t\t\tvmToolsVersion\r\n\t\t\t\t\tvmToolsVersionSpecified\r\n\t\t\t\t\tvc\r\n\t\t\t\t\tmoref\r\n\t\t\t\t\tvmHostType\r\n\t\t\t\t\tdisks {\r\n\t\t\t\t\t\tautoDelete\r\n\t\t\t\t\t\tboot\r\n\t\t\t\t\t\tdeviceName\r\n\t\t\t\t\t\tindex\r\n\t\t\t\t\t\ttype\r\n\t\t\t\t\t\tsize\r\n\t\t\t\t\t\terrorCode\r\n\t\t\t\t\t\terrorStatus\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnics {\r\n\t\t\t\t\t\tisConnected\r\n\t\t\t\t\t\tisPrimaryNic\r\n\t\t\t\t\t\tmacAddress\r\n\t\t\t\t\t\terrorCode\r\n\t\t\t\t\t\terrorStatus\r\n\t\t\t\t\t}\r\n\t\t\t\t\terrorCode\r\n\t\t\t\t\terrorStatus\r\n\t\t\t\t}\r\n\t\t\t\terrorCode\r\n\t\t\t\terrorStatus\r\n\t\t\t} \r\n\t\t}\r\n\t}\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetFilteredNetworks() {\r\n return gql`\r\n\tquery getFilteredNetworks($getFilteredNetworksInput: GetFilteredNetworksInput ) {\r\n\t\tgetFilteredNetworks(getFilteredNetworksInput:$getFilteredNetworksInput) {\r\n\t\t\tsuccess\r\n\t\t\tmessage\r\n\t\t\tfilteredNetworks {\r\n\t\t\t\tname\r\n\t\t\t\tprimaryDNS\r\n\t\t\t\tgatewayAddress\r\n\t\t\t\tnetworkMask\r\n\t\t\t\tipRange {\r\n\t\t\t\t\tipRangeBegining\r\n\t\t\t\t\tipRangeEnding\r\n\t\t\t\t}\r\n\t\t\t\terrorCode\r\n\t\t\t\terrorStatus\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetSnapProtectStatus() {\r\n return gql`\r\n\tquery getSnapProtectStatus($getSnapProtectStatusInput: GetSnapProtectStatusInput ) {\r\n\t\tgetSnapProtectStatus(getSnapProtectStatusInput:$getSnapProtectStatusInput) {\r\n\t\t\tsuccess\r\n\t\t\tmessage\r\n\t\t\tSnapshot:snapProtectStatusResponse {\r\n\t\t\t\tresult{\r\n\t\t\t\t\tcreated\r\n\t\t\t\t\tpoweredOn\r\n\t\t\t\t\tsize\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetMeteringVmProperties() {\r\n\treturn gql`\r\nquery getMeteringVmProperties($getMeteringVmPropertiesInput: GetMeteringVmPropertiesInput) {\r\n getMeteringVmProperties(getMeteringVmPropertiesInput: $getMeteringVmPropertiesInput) {\r\n success\r\n message\r\n vmProperties {\r\n \thasError\r\n result {\r\n resourceName\r\n resourceId\r\n property {\r\n name\r\n value\r\n }\r\n }\r\n }\r\n }\r\n} \r\n\t\t\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetTasks() {\r\n return gql`\r\n query getTasks($getTasksInput: GetTasksInput) {\r\n Tasks:getTasks(getTasksInput: $getTasksInput) {\r\n code\r\n success\r\n message\r\n tasksResponse {\r\n id\r\n type\r\n href\r\n name\r\n status\r\n startTime\r\n expiryTime\r\n operation\r\n operationName\r\n cancelRequested\r\n }\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetTask() {\r\n return gql`\r\n query getTask($getTaskInput: GetTaskInput) {\r\n Task:getTask(getTaskInput: $getTaskInput) {\r\n code\r\n success\r\n message\r\n taskResponse {\r\n id\r\n type\r\n href\r\n name\r\n status\r\n startTime\r\n expiryTime\r\n operation\r\n operationName\r\n cancelRequested\r\n }\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function queryGetAllTasks() {\r\n return gql`\r\n query getAllTasks($getAllTasksInput: GetAllTasksInput) \r\n { \r\n getAllTasks(getAllTasksInput: $getAllTasksInput) {\r\n code\r\n success\r\n message\r\n \t tasksResponse{\r\n id\r\n type\r\n href\r\n name\r\n status\r\n startTime\r\n expiryTime\r\n operation\r\n operationName\r\n cancelRequested\r\n owner {\r\n name\r\n }\r\n user {\r\n name\r\n }\r\n datacenterCode\r\n applicationName\r\n } \r\n } \r\n }\r\n `;\r\n}","import { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ComputeApollo } from './computeApollo';\r\nimport * as response from './schema/type/index';\r\nimport { ProviderLink, VDC, VMFlat } from './schema/type';\r\nimport * as input from './schema/input/index';\r\nimport { map } from 'rxjs/operators';\r\nimport { CloudmanageService } from '@app/core/_services/cloudmanage.service';\r\nimport { QueryRef } from 'apollo-angular';\r\nimport { Guid } from 'guid-typescript';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class ComputeProxy {\r\n constructor(\r\n private computeApollo: ComputeApollo, \r\n private n3tStore: N3TStore\r\n ) { }\r\n\r\n public providerLinks: Observable;\r\n private providerLinksSubject = new BehaviorSubject>([]);\r\n\r\n public getProviderLinksValue(): ProviderLink[] {\r\n return this.providerLinksSubject.value;\r\n }\r\n\r\n public compute: Observable;\r\n public computeSubject = new BehaviorSubject([]);\r\n\t\r\n\tpublic getComputeValue(): VDC[] {\r\n\t return this.computeSubject.value;\r\n\t}\r\n\r\n public computeFlat: Observable;\r\n\tpublic computeFlatSubject = new BehaviorSubject([]);\r\n\r\n\tpublic getComputeFlatValue(): VMFlat[] {\r\n\t return this.computeFlatSubject.value;\r\n\t}\r\n\r\n //#region Compute Logic\r\n getCompute(userId: string, correlationId: string, datapointId: Guid): Observable { \r\n return this.computeApollo.getCompute(userId, correlationId, datapointId, 300000)\r\n .pipe(map(result => {\r\n let vdcs: VDC[] = new Array();\r\n vdcs = result.data['Compute'].compute.result;\r\n this.computeSubject.next(vdcs);\r\n return vdcs;\r\n }));\r\n }\r\n\r\n getComputeRef(userId: string, correlationId: string): QueryRef {\r\n return this.computeApollo.getComputeRef(userId, correlationId, 300000);\r\n }\r\n\r\n getComputeStats(getComputeStatsInput: input.GetComputeStatsInput): Observable {\r\n return this.computeApollo.getComputeStats(getComputeStatsInput);\r\n }\r\n\r\n getComputeTemplates(getComputeTemplatesInput: input.GetComputeTemplatesInput): Observable {\r\n return this.computeApollo.getComputeTemplates(getComputeTemplatesInput);\r\n }\r\n\r\n getFilteredNetworks(getFilteredNetworksInput: input.GetFilteredNetworksInput): Observable {\r\n return this.computeApollo.getFilteredNetworks(getFilteredNetworksInput);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region App backup and templates\r\n\r\n getAppBackupTemplate(getAppBackupTemplateInput: input.GetAppBackupTemplateInput): Observable {\r\n return this.computeApollo.getAppBackupTemplate(getAppBackupTemplateInput);\r\n }\r\n\r\n getAppBackup(getAppBackupInput: input.GetAppBackupInput): Observable {\r\n return this.computeApollo.getAppBackup(getAppBackupInput);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Power Status\r\n\r\n updatePowerStatus(updatePowerStatusInput: input.UpdatePowerStatusInput): Observable {\r\n return this.computeApollo.updatePowerStatus(updatePowerStatusInput);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region VM resource changes\r\n\r\n updateCpuCount(updateCpuCountInput: input.UpdateCpuCountInput): Observable {\r\n return this.computeApollo.updateCpuCount(updateCpuCountInput);\r\n }\r\n\r\n updateMemory(updateMemoryInput: input.UpdateMemoryInput): Observable {\r\n return this.computeApollo.updateMemory(updateMemoryInput);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region VM Snap logic\r\n\r\n createVMSnap(createVMSnapInput: input.CreateVMSnapInput): Observable {\r\n return this.computeApollo.createVMSnap(createVMSnapInput);\r\n }\r\n\r\n removeVMSnap(removeVMSnapInput: input.RemoveVMSnapInput): Observable {\r\n return this.computeApollo.removeVMSnap(removeVMSnapInput);\r\n }\r\n\r\n revertVMSnap(revertVMSnapInput: input.RevertVMSnapInput): Observable {\r\n return this.computeApollo.revertVMSnap(revertVMSnapInput);\r\n }\r\n\r\n getSnapProtectStatus(getSnapProtectStatusInput: input.GetSnapProtectStatusInput): Observable {\r\n return this.computeApollo.getSnapProtectStatus(getSnapProtectStatusInput);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Providers logic\r\n\r\n getProviderTokens(info: input.GetVMWareProviderTokensInput): Observable {\r\n return this.computeApollo.getVMWareProviderTokens(info);\r\n }\r\n\r\n getVMScreenTicket(getVMScreenTicketInput: input.GetVMScreenTicketInput): Observable {\r\n return this.computeApollo.getVMScreenTicket(getVMScreenTicketInput);\r\n }\r\n\r\n getVMWareProviderTokens(getVMWareProviderTokensInput: input.GetVMWareProviderTokensInput): Observable {\r\n return this.computeApollo.getVMWareProviderTokens(getVMWareProviderTokensInput);\r\n }\r\n \r\n //#endregion\r\n\r\n //#region Tasks logic\r\n\r\n getTask(getTaskInput: input.GetTaskInput): Observable {\r\n return this.computeApollo.getTask(getTaskInput);\r\n }\r\n\r\n getTasks(getTasksInput: input.GetTasksInput): Observable {\r\n return this.computeApollo.getTasks(getTasksInput);\r\n }\r\n getAllTasks(getAllTasksInput: input.GetAllTasksInput, pollingInterval: number = 0): Observable {\r\n return this.computeApollo.getAllTasks(getAllTasksInput, pollingInterval);\r\n }\r\n \r\n //#endregion\r\n \r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class SchedulerApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getVMSchedule(getVMSchedule: input.GetVMScheduleInput) {\r\n return this.apollo.query({\r\n query: query.queryGetVMSchedule(),\r\n variables: {\r\n getVMSchedule: {\r\n vmid: getVMSchedule.vmid\r\n }\r\n }\r\n });\r\n }\r\n\r\n getScheduleList(getScheduleList: input.GetScheduleListInput) {\r\n return this.apollo.query({\r\n query: query.queryGetScheduleList(),\r\n variables: {\r\n getScheduleList: {\r\n custId: getScheduleList.custId\r\n }\r\n }\r\n });\r\n }\r\n\r\n addVMToSchedule(addVMToSchedule: input.AddVMToScheduleInput) {\r\n return this.apollo.query({\r\n query: mutation.mutationAddVMToSchedule(),\r\n variables: {\r\n addVMToSchedule: {\r\n vmid: addVMToSchedule.vmid,\r\n datacenter: addVMToSchedule.datacenter,\r\n vmName: addVMToSchedule.vmName,\r\n schedId: addVMToSchedule.schedId\r\n }\r\n }\r\n });\r\n }\r\n\r\n removeVMFromSchedule(removeVMFromSchedule: input.RemoveVMFromScheduleInput) {\r\n return this.apollo.query({\r\n query: mutation.mutationRemoveVMFromSchedule(),\r\n variables: {\r\n removeVMFromSchedule: {\r\n hostId: removeVMFromSchedule.hostId,\r\n schedId: removeVMFromSchedule.schedId\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetVMSchedule() {\r\n return gql`\r\n query getVMSchedule($getVMSchedule: GetVMScheduleInput) {\r\n getVMSchedule(getVMSchedule: $getVMSchedule) {\r\n success\r\n message\r\n \tTypeVMToScheduleResponse{\r\n result {\r\n item1{\r\n id\r\n scheduleId\r\n hostId\r\n hostName\r\n hostDatacenterCode\r\n hostLocationId\r\n precedence\r\n delayStart\r\n }\r\n item2{\r\n id\r\n companyId\r\n name\r\n description\r\n utcOffset\r\n runDays\r\n startTime\r\n stopTime\r\n enabled\r\n snoozed\r\n }\r\n }\r\n }\r\n }\r\n \r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetScheduleList() {\r\n return gql`\r\n query getScheduleList($getScheduleList: GetScheduleListInput) {\r\n getScheduleList(getScheduleList: $getScheduleList) {\r\n success\r\n message\r\n \tSHResponse{\r\n result{\r\n id\r\n scheduleId\r\n hostId\r\n hostName\r\n hostDatacenterCode\r\n hostLocationId\r\n precedence\r\n delayStart\r\n }\r\n responseStatus{\r\n errorCode\r\n message\r\n stackTrace\r\n errors{\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationAddVMToSchedule() {\r\n return gql`\r\n mutation addVMToSchedule($addVMToSchedule: AddVMToScheduleInput) {\r\n addVMToSchedule(addVMToSchedule: $addVMToSchedule) {\r\n success,\r\n \t\t \tmessage,\r\n \t\t \tScheduledHostResponse{\r\n result{\r\n id\r\n scheduleId\r\n hostId\r\n hostName\r\n hostDatacenterCode\r\n hostLocationId\r\n precedence\r\n delayStart\r\n }\r\n responseStatus{\r\n errorCode\r\n message\r\n stackTrace\r\n errors{\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n } \r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationRemoveVMFromSchedule() {\r\n return gql`\r\n mutation removeVMFromSchedule($removeVMFromSchedule: RemoveVMFromScheduleInput) {\r\n removeVMFromSchedule(removeVMFromSchedule: $removeVMFromSchedule) {\r\n success,\r\n \t \tmessage,\r\n \t \tremoveResponse{\r\n success\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SchedulerApollo } from './schedulerApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class SchedulerProxy {\r\n constructor(private schedulerApollo: SchedulerApollo) {}\r\n\r\n getVMSchedule(getVMSchedule: input.GetVMScheduleInput) {\r\n return this.schedulerApollo.getVMSchedule(getVMSchedule);\r\n }\r\n\r\n getScheduleList(getScheduleList: input.GetScheduleListInput) {\r\n return this.schedulerApollo.getScheduleList(getScheduleList);\r\n }\r\n\r\n addVMToSchedule(addVMToSchedule: input.AddVMToScheduleInput) {\r\n return this.schedulerApollo.addVMToSchedule(addVMToSchedule);\r\n }\r\n\r\n removeVMFromSchedule(removeVMFromSchedule: input.RemoveVMFromScheduleInput) {\r\n return this.schedulerApollo.removeVMFromSchedule(removeVMFromSchedule);\r\n }\r\n}\r\n","import { DatacenterLocation } from './../shared/schema/enums/datacenterLocation';\r\nimport { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\nimport { DatacenterLocations } from '../shared/schema/enums';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class TemplatesApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getTemplates(getTemplates: input.GetTemplatesInput) {\r\n let tmpLocs = new Array();\r\n getTemplates.datacenterLocations.forEach(function (value) {\r\n tmpLocs.push(DatacenterLocations[DatacenterLocations[value]].toString());\r\n });\r\n\r\n return this.apollo.query({\r\n query: query.queryGetTemplates(),\r\n variables: {\r\n getTemplatesInput: {\r\n datacenterLocations: tmpLocs //getTemplates.datacenterLocations\r\n }\r\n }\r\n });\r\n }\r\n\r\n getJobStatus(getJobStatus: input.GetJobStatusInput) {\r\n return this.apollo.query({\r\n query: query.queryGetJobStatus(),\r\n variables: {\r\n getJobStatusInput: {\r\n status: getJobStatus.status\r\n }\r\n }\r\n })\r\n }\r\n\r\n postTemplate(postTemplate: input.PostTemplateInput) {\r\n return this.apollo.query({\r\n query: mutation.mutationPostTemplate(),\r\n variables: {\r\n postTemplateInput: {\r\n job: postTemplate.job\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetTemplates() {\r\n return gql`\r\n query getTemplates($getTemplatesInput: GetTemplatesInput) {\r\n Templates:getTemplates(getTemplatesInput:$getTemplatesInput) {\r\n success\r\n message\r\n templates {\r\n id\r\n datacenter\r\n orgTemplateCreatorHref\r\n orgTemplateCreator\r\n orgName\r\n vdcName\r\n vdcNetworks {\r\n content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n name\r\n nameChange\r\n primaryDNS\r\n secondaryDNS\r\n dNSSuffix\r\n gatewayAddress\r\n networkMask\r\n ipRange {\r\n ipRangeBegining\r\n ipRangeEnding\r\n }\r\n }\r\n catalogName\r\n vAppTemplateName\r\n newvAppName\r\n newvAppDescription\r\n vms {\r\n content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n isVAppTemplateSpecified\r\n memoryMB\r\n memoryMBSpecified\r\n numberOfCpus\r\n numberOfCpusSpecified\r\n storageProfileName\r\n vdc\r\n hasDR\r\n isDRActive\r\n cpuHotAddEnabledSpecified\r\n isVAppTemplate\r\n cpuHotAddEnabled\r\n memoryHotAddEnabled\r\n vmToolsVersion\r\n vmToolsVersionSpecified\r\n vc\r\n moref\r\n hostName\r\n vmHostType\r\n networkInfoRaw\r\n vmInstanceType\r\n metric {\r\n name\r\n unit\r\n value\r\n }\r\n memoryHotAddEnabledSpecified\r\n disks {\r\n content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n autoDelete\r\n boot\r\n deviceName\r\n index\r\n interface__\r\n kind\r\n licenses\r\n mode\r\n source\r\n type\r\n size\r\n }\r\n isPublishedSpecified\r\n isInMaintenanceModeSpecified\r\n name\r\n nameLong\r\n status\r\n cpu\r\n memory\r\n \t\t\t\tdiskSize\r\n \t\t\t\thref\r\n \t\t\t\tid\r\n \t\t\t\tdiskCount\r\n \t\t\t\tcatalogName\r\n \t\t\t\tisPublished\r\n \t\t\t\tcontainer\r\n \t\t\t\tguestOs\r\n \t\t\t\thardwareVersion\r\n \t\t\t\thardwareVersionSpecified\r\n \t\t\t\tisBusy\r\n \t\t\t\tisBusySpecified\r\n \t\t\t\tisDeleted\r\n \t\t\t\tisDeletedSpecified\r\n \t\t\t\tisDeployed\r\n \t\t\t\tisDeployedSpecified\r\n \t\t\t\tisInMaintenanceMode\r\n \t\t\t\tcontainerName\r\n \t\t\t\tnics {\r\n content\r\n errorMessage\r\n errorCode\r\n errorStatus\r\n vMId\r\n vMName\r\n nicId\r\n nicName\r\n isConnected\r\n networkName\r\n networkId\r\n isPrimaryNic\r\n iPMode\r\n iPAddress\r\n macAddress\r\n networkAdapterType\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetJobStatus() {\r\n return gql`\r\n query getJobStatus($getJobStatusInput: GetJobStatusInput) {\r\n getJobStatus(getJobStatusInput: $getJobStatusInput) {\r\n success\r\n message\r\n statusResponse {\r\n result {\r\n provider\r\n message {\r\n CreatedDate\r\n priority\r\n retryAttempts\r\n replyId\r\n replyTo\r\n options\r\n error {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n tag\r\n body\r\n }\r\n host\r\n port\r\n error\r\n hasError\r\n queueFound\r\n locationChanged\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationPostTemplate() {\r\n return gql`\r\n mutation postTemplate($postTemplateInput: PostTemplateInput) {\r\n postTemplate(postTemplateInput: $postTemplateInput) {\r\n success\r\n message\r\n templateResponse {\r\n result {\r\n provider\r\n message {\r\n CreatedDate\r\n priority\r\n retryAttempts\r\n replyId\r\n replyTo\r\n options\r\n error {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n tag\r\n body\r\n }\r\n host\r\n port\r\n error\r\n hasError\r\n queueFound\r\n locationChanged\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n } \r\n `;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TemplatesApollo } from './templatesApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class TemplatesProxy {\r\n constructor(private templatesApollo: TemplatesApollo) {}\r\n\r\n getTemplates(getTemplates: input.GetTemplatesInput) {\r\n return this.templatesApollo.getTemplates(getTemplates);\r\n }\r\n\r\n getJobStatus(getJobStatus: input.GetJobStatusInput) {\r\n return this.templatesApollo.getJobStatus(getJobStatus);\r\n }\r\n\r\n postTemplate(postTemplate: input.PostTemplateInput) {\r\n return this.templatesApollo.postTemplate(postTemplate);\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class PermissionsApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getRoles(getRolesInput: input.GetRolesInput) {\r\n return this.apollo.query({\r\n query: query.queryGetRoles(),\r\n variables: {\r\n getRolesInput: {\r\n roles: getRolesInput.roles,\r\n UserId: getRolesInput.UserId\r\n }\r\n }\r\n });\r\n }\r\n\r\n getRolesByUser(getRolesByUserInput: input.GetRolesByUserInput) {\r\n return this.apollo.query({\r\n query: query.queryGetRolesByUser(),\r\n variables: {\r\n getRolesByUserInput: {\r\n UserId: getRolesByUserInput.UserId\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n getCompanyUsers(getCompanyUsersInput: input.GetCompanyUsersInput) {\r\n return this.apollo.query({\r\n query: query.queryGetCompanyUsers(),\r\n variables: {\r\n getCompanyUsersInput: {\r\n companyId: getCompanyUsersInput.companyId\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n updateRolesByUser(updateRolesByUserInput: input.UpdateRolesByUserInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationUpdateRolesByUser(),\r\n variables: {\r\n updateRolesByUserInput: {\r\n UserId: updateRolesByUserInput.UserId,\r\n roles: updateRolesByUserInput.roles\r\n }\r\n }\r\n });\r\n }\r\n\r\n createCompanyUser(createCompanyUserInput: input.CreateCompanyUserInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationCreateCompanyUser(),\r\n variables: {\r\n createCompanyUserInput: {\r\n UserId: createCompanyUserInput.UserId,\r\n FirstName: createCompanyUserInput.FirstName,\r\n LastName: createCompanyUserInput.LastName,\r\n Email: createCompanyUserInput.Email,\r\n FullName: createCompanyUserInput.FullName,\r\n IsActive: createCompanyUserInput.IsActive,\r\n CompanyId: createCompanyUserInput.CompanyId,\r\n CompanyName: createCompanyUserInput.CompanyName,\r\n CreatedOn: createCompanyUserInput.CreatedOn,\r\n CreatedBy: createCompanyUserInput.CreatedBy,\r\n ModifiedOn: createCompanyUserInput.ModifiedOn,\r\n ModifiedBy: createCompanyUserInput.ModifiedBy,\r\n Comment: createCompanyUserInput.Comment,\r\n Roles: createCompanyUserInput.Roles,\r\n Company: createCompanyUserInput.Company,\r\n UseTwoFactorAuth: createCompanyUserInput.UseTwoFactorAuth,\r\n Passcode: createCompanyUserInput.Passcode\r\n }\r\n }\r\n });\r\n }\r\n\r\n createProviderMembership(createProviderMembershipInput: input.CreateProviderMembershipInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationCreateProviderMembership(),\r\n variables: {\r\n createProviderMembershipInput: {\r\n user: {\r\n UserId: createProviderMembershipInput.user.UserId,\r\n Username: createProviderMembershipInput.user.Username,\r\n Password: createProviderMembershipInput.user.Password,\r\n DatacenterURL: createProviderMembershipInput.user.DatacenterURL,\r\n LocationType: createProviderMembershipInput.user.LocationType,\r\n Location: createProviderMembershipInput.user.Location,\r\n DatacenterLocation: createProviderMembershipInput.user.DatacenterLocation,\r\n ApplicationName: createProviderMembershipInput.user.ApplicationName,\r\n ApplicationId: createProviderMembershipInput.user.ApplicationId,\r\n ApplicationLocationId: createProviderMembershipInput.user.ApplicationLocationId,\r\n CompanyName: createProviderMembershipInput.user.CompanyName,\r\n CompanyId: createProviderMembershipInput.user.CompanyId,\r\n FirstName: createProviderMembershipInput.user.FirstName,\r\n LastName: createProviderMembershipInput.user.LastName \r\n },\r\n orgId: createProviderMembershipInput.orgId,\r\n sessionId: createProviderMembershipInput.sessionId\r\n }\r\n }\r\n });\r\n }\r\n\r\n createPortalMembership(createPortalMembershipInput: input.CreatePortalMembershipInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationCreatePortalMembership(),\r\n variables: {\r\n createPortalMembershipInput: {\r\n ApplicationId: createPortalMembershipInput.ApplicationId,\r\n ApplicationLocationId: createPortalMembershipInput.ApplicationLocationId,\r\n Username: createPortalMembershipInput.Username,\r\n Password: createPortalMembershipInput.Password,\r\n IsApproved: createPortalMembershipInput.IsApproved,\r\n IsLockedOut: createPortalMembershipInput.IsLockedOut,\r\n IsEncrypted: createPortalMembershipInput.IsEncrypted,\r\n IsDefault: createPortalMembershipInput.IsDefault,\r\n UserId: createPortalMembershipInput.UserId\r\n }\r\n }\r\n });\r\n }\r\n\r\n createUserMembership(createUserMembershipInput: input.CreateUserMembershipInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationCreateUserMembership(),\r\n variables: {\r\n createUserMembershipInput: {\r\n membership: createUserMembershipInput.membership\r\n }\r\n }\r\n });\r\n }\r\n\r\n deleteProviderUserAndMemberships(deleteProviderUserAndMembershipsInput: input.DeleteProviderUserAndMembershipsInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDeleteProviderUserAndMemberships(),\r\n variables: {\r\n deleteProviderUserAndMembershipsInput: {\r\n datacenterLocation: deleteProviderUserAndMembershipsInput.datacenterLocation,\r\n username: deleteProviderUserAndMembershipsInput.username,\r\n orgId: deleteProviderUserAndMembershipsInput.orgId\r\n }\r\n }\r\n });\r\n }\r\n\r\n updateProviderUserMemberships(updateProviderUserMembershipsInput: input.UpdateProviderUserMembershipInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationUpdateProviderUserMembership(),\r\n variables: {\r\n MembershipId: updateProviderUserMembershipsInput.user.MembershipId,\r\n UserId: updateProviderUserMembershipsInput.user.UserId,\r\n ApplicationId: updateProviderUserMembershipsInput.user.ApplicationId,\r\n ApplicationLocationId: updateProviderUserMembershipsInput.user.ApplicationLocationId,\r\n Username: updateProviderUserMembershipsInput.user.Username,\r\n Password: updateProviderUserMembershipsInput.user.Password\r\n }\r\n })\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetRoles() {\r\n return gql`\r\n query getRoles($getRolesInput: GetRolesInput) {\r\n getRoles(getRolesInput: $getRolesInput) {\r\n success\r\n message\r\n loginAPIResponse {\r\n result {\r\n id\r\n roleId\r\n role\r\n roleDescription\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n \t }\r\n }\r\n `;\r\n}\r\n\r\n\r\n\r\n\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetRolesByUser() {\r\n return gql`\r\n query getRolesByUser($getRolesByUserInput: GetRolesByUserInput) {\r\n getRolesByUser(getRolesByUserInput: $getRolesByUserInput) {\r\n success\r\n message\r\n loginAPIResponse {\r\n result {\r\n id\r\n roleId\r\n role\r\n roleDescription\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n \t }\r\n }\r\n `;\r\n}\r\n\r\n\r\n\r\n\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetCompanyUsers() {\r\n return gql`\r\n query getCompanyUsers($getCompanyUsersInput: GetCompanyUsersInput) {\r\n getCompanyUsers(getCompanyUsersInput: $getCompanyUsersInput) {\r\n success\r\n message\r\n companyUsersResponse {\r\n result {\r\n userId\r\n firstName\r\n lastName\r\n email\r\n fullName\r\n isActive\r\n companyId\r\n roles\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n \t}\r\n }\r\n `;\r\n}\r\n\r\n\r\n\r\n\r\n","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdateRolesByUser() {\r\n return gql`\r\n mutation updateRolesByUser($updateRolesByUserInput: UpdateRolesByUserInput) {\r\n updateRolesByUser(updateRolesByUserInput: $updateRolesByUserInput) {\r\n code\r\n success\r\n message\r\n updateRolesResponse {\r\n result {\r\n id\r\n role\r\n roleId\r\n roleDescription\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n \t }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationCreateCompanyUser() {\r\n return gql`\r\n mutation createCompanyUser($createCompanyUserInput: CreateCompanyUserInput) {\r\n createCompanyUser(createCompanyUserInput: $createCompanyUserInput) {\r\n success\r\n message\r\n createUserResponse {\r\n result {\r\n useTwoFactorAuth\r\n company{\r\n companyId\r\n parentCompanyId\r\n companyName\r\n website\r\n companyNameShort\r\n isReseller\r\n separateInvoice\r\n typeCompanyStatusId\r\n modifiedBy\r\n modifiedDate\r\n }\r\n roles\r\n comment\r\n modifiedBy\r\n modifiedOn\r\n createdBy\r\n presharedKey\r\n createdOn\r\n companyId\r\n isActive\r\n fullName\r\n email\r\n lastName\r\n firstName\r\n userId\r\n companyName\r\n passcode\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationCreateProviderMembership() {\r\n return gql`\r\n mutation createProviderMembership($createProviderMembershipInput: CreateProviderMembershipInput) {\r\n createProviderMembership(createProviderMembershipInput: $createProviderMembershipInput) {\r\n success\r\n message\r\n orgUserResponse {\r\n result {\r\n passcode\r\n presharedKey\r\n useTwoFactorAuth\r\n attributes {\r\n attributeType\r\n attributeValue\r\n attributeDataType\r\n }\r\n permissions\r\n roles\r\n sessionId\r\n rights\r\n status\r\n companyId\r\n id\r\n companyName\r\n applicationId\r\n applicationName\r\n datacenterLocation\r\n location\r\n locationType\r\n datacenterURL\r\n password\r\n username\r\n userId\r\n membershipId\r\n applicationLocationId\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationCreatePortalMembership() {\r\n return gql`\r\n mutation createPortalMembership($createPortalMembershipInput: CreatePortalMembershipInput) {\r\n createPortalMembership(createPortalMembershipInput: $createPortalMembershipInput) {\r\n success\r\n message\r\n portalMembership {\r\n result {\r\n membershipId\r\n applicationId\r\n applicationLocationId\r\n userId\r\n passwordFormat\r\n isApproved\r\n isLockedOut\r\n createDate\r\n lastLoginDate\r\n lastPasswordChangedDate\r\n lastLockoutDate\r\n failedPasswordAttemptCount\r\n failedPasswordAttemptWindowStart\r\n failedPasswordAnswerAttemptCount\r\n failedPasswordAnswerAttemptWindowStart\r\n isEncrypted\r\n isDefault\r\n updatePassword\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationCreateUserMembership() {\r\n return gql`\r\n mutation createUserMembership($createUserMembershipInput: CreateUserMembershipInput) {\r\n createUserMembership(createUserMembershipInput: $createUserMembershipInput) {\r\n success\r\n message\r\n userMembership {\r\n result {\r\n membershipId\r\n applicationId\r\n applicationLocationId\r\n userId\r\n passwordFormat\r\n isApproved\r\n isLockedOut\r\n createDate\r\n lastLoginDate\r\n lastPasswordChangedDate\r\n lastLockoutDate\r\n failedPasswordAttemptCount\r\n failedPasswordAttemptWindowStart\r\n failedPasswordAnswerAttemptCount\r\n failedPasswordAnswerAttemptWindowStart\r\n isEncrypted\r\n isDefault\r\n updatePassword\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationDeleteProviderUserAndMemberships() {\r\n return gql`\r\n mutation deleteProviderUserAndMemberships($deleteProviderUserAndMembershipsInput: DeleteProviderUserAndMembershipsInput) {\r\n deleteProviderUserAndMemberships(deleteProviderUserAndMembershipsInput: $deleteProviderUserAndMembershipsInput) {\r\n success\r\n message\r\n deleteProviderResponse {\r\n result {\r\n passcode\r\n presharedKey \r\n useTwoFactorAuth\r\n attributes {\r\n attributeType\r\n attributeValue\r\n attributeDataType\r\n }\r\n permissions\r\n roles\r\n sessionId\r\n rights\r\n status\r\n companyId\r\n id\r\n companyName\r\n applicationId\r\n applicationName\r\n datacenterLocation\r\n location\r\n locationType\r\n datacenterURL\r\n password\r\n username\r\n userId\r\n membershipId\r\n applicationLocationId\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationUpdateProviderUserMembership() {\r\n return gql`\r\n mutation updateProviderUserMembership($updateProviderUserMembershipInput: updateProviderUserMembershipInput) {\r\n updateProviderUserMembership(updateProviderUserMembershipInput: $updateProviderUserMembershipInput) {\r\n success\r\n message\r\n updateMembership {\r\n result {\r\n passcode\r\n presharedKey\r\n useTwoFactorAuth\r\n attributes {\r\n attributeType\r\n attributeValue\r\n attributeDataType\r\n }\r\n permissions\r\n roles\r\n sessionId\r\n rights\r\n status\r\n companyId\r\n id\r\n companyName\r\n applicationId\r\n applicationName\r\n datacenterLocation\r\n location\r\n locationType\r\n datacenterURL\r\n password\r\n username\r\n userId\r\n membershipId\r\n applicationLocationId\r\n }\r\n responseStatus {\r\n errorCode\r\n message\r\n stackTrace\r\n errors {\r\n errorCode\r\n fieldName\r\n message\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `; \r\n}","import { PermissionsApollo } from './permissionsApollo';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class PermissionsProxy {\r\n constructor(private permissionsApollo: PermissionsApollo) {}\r\n\r\n getRoles(getRoles: input.GetRolesInput) {\r\n return this.permissionsApollo.getRoles(getRoles);\r\n }\r\n\r\n getRolesByUser(getRolesByUser: input.GetRolesByUserInput) {\r\n return this.permissionsApollo.getRolesByUser(getRolesByUser);\r\n }\r\n\r\n getCompanyUsers(getCompanyUsers: input.GetCompanyUsersInput) {\r\n return this.permissionsApollo.getCompanyUsers(getCompanyUsers);\r\n }\r\n\r\n updateRolesByUser(updateRolesByUser: input.UpdateRolesByUserInput) {\r\n return this.permissionsApollo.updateRolesByUser(updateRolesByUser);\r\n }\r\n\r\n createCompanyUser(createCompanyUser: input.CreateCompanyUserInput) {\r\n return this.permissionsApollo.createCompanyUser(createCompanyUser);\r\n }\r\n\r\n createPortalMembership(createPortalMembership: input.CreatePortalMembershipInput) {\r\n return this.permissionsApollo.createPortalMembership(createPortalMembership);\r\n }\r\n\r\n createUserMembership(createUserMembership: input.CreateUserMembershipInput) {\r\n return this.permissionsApollo.createUserMembership(createUserMembership);\r\n }\r\n\r\n createProviderMembership(createProviderMembership: input.CreateProviderMembershipInput) {\r\n return this.permissionsApollo.createProviderMembership(createProviderMembership);\r\n }\r\n\r\n deleteProviderUserAndMemberships(deleteProviderUserAndMemberships: input.DeleteProviderUserAndMembershipsInput) {\r\n return this.permissionsApollo.deleteProviderUserAndMemberships(deleteProviderUserAndMemberships);\r\n }\r\n\r\n // updateProviderUserMembership\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class AuthenticateApollo {\r\n constructor(private apollo: Apollo) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthenticateApollo } from './authenticateApollo';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class AuthenticateProxy {\r\n constructor(private authenticateApollo: AuthenticateApollo) {}\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MonitorApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n getBRSEventLogsByCompany(getBRSEventLogsByCompany: input.GetBRSEventLogsByCompanyInput) {\r\n return this.apollo.query({\r\n query: query.queryGetBRSEventLogsByCompany(),\r\n variables: {\r\n getBRSAlertLogsByCompany: {\r\n companyId: getBRSEventLogsByCompany.companyId,\r\n startDate: getBRSEventLogsByCompany.startDate,\r\n endDate: getBRSEventLogsByCompany.endDate\r\n }\r\n }\r\n });\r\n }\r\n\r\n getBRSAlertLogsByCompany(getBRSAlertLogsByCompany: input.GetBRSAlertLogsByCompanyInput) {\r\n return this.apollo.query({\r\n query: query.queryGetBRSAlertLogsByCompany(),\r\n variables: {\r\n getBRSAlertLogsByCompany: {\r\n companyId: getBRSAlertLogsByCompany.companyId,\r\n startDate: getBRSAlertLogsByCompany.startDate,\r\n endDate: getBRSAlertLogsByCompany.endDate\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetBRSEventLogsByCompany() {\r\n return gql`\r\n query getBRSEventLogsByCompany($getBRSEventLogsByCompany: GetBRSEventLogsByCompanyInput) {\r\n getBRSEventLogsByCompany(getBRSEventLogsByCompany: $getBRSEventLogsByCompany) {\r\n success\r\n message\r\n zertoEvent{\r\n Description,\r\n EntityType,\r\n EventCategory,\r\n EventCompletedSuccessfully,\r\n EventIdentifier,\r\n EventType,\r\n HelpLink,\r\n Link{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n OccurredOn,\r\n RelatedEntities{\r\n Alerts{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n FlrSessions{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n Hosts{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n Sites{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n Vpgs{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n Zorgs{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n }\r\n },\r\n SiteIdentifier,\r\n SiteName,\r\n UserName,\r\n Vpgs{\r\n Link{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n VpgIdentifier,\r\n VpgName\r\n },\r\n ZorgIdentifier,\r\n ZorgName\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetBRSAlertLogsByCompany() {\r\n return gql`\r\n query getBRSAlertLogsByCompany($getBRSAlertLogsByCompany: GetBRSAlertLogsByCompanyInput) {\r\n getBRSAlertLogsByCompany(getBRSAlertLogsByCompany: $getBRSAlertLogsByCompany) {\r\n success\r\n message\r\n ExecuteResults{\r\n HasError,\r\n Messages,\r\n Errors,\r\n Result{\r\n Description,\r\n Entity,\r\n HelpIdentifier,\r\n IsDismissed,\r\n Level,\r\n TurnedOn,\r\n AffectedVpgs{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n AffectedZorgs{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n Link{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n },\r\n Site{\r\n href,\r\n identifier,\r\n rel,\r\n type\r\n }\r\n },\r\n Exception\r\n }\r\n }\r\n }`;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MonitorApollo } from './monitorApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MonitorProxy {\r\n constructor(private monitorApollo: MonitorApollo) {}\r\n\r\n getBRSEventLogsByCompany(getBRSEventLogsByCompany: input.GetBRSEventLogsByCompanyInput) {\r\n return this.monitorApollo.getBRSEventLogsByCompany(getBRSEventLogsByCompany);\r\n }\r\n\r\n getBRSAlertLogsByCompany(getBRSAlertLogsByCompany: input.GetBRSAlertLogsByCompanyInput) {\r\n return this.monitorApollo.getBRSAlertLogsByCompany(getBRSAlertLogsByCompany);\r\n }\r\n}\r\n","import { Guid } from 'guid-typescript';\r\nimport { Apollo } from \"apollo-angular\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport * as query from \"./schema/query/index\";\r\nimport * as input from \"./schema/input/index\";\r\nimport * as response from \"./schema/type/index\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class CompanyApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getCompany(companyId: string) {\r\n return this.apollo.query({\r\n query: query.queryGetCompany(),\r\n variables: {\r\n getcompany: companyId\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n public getCompanyIdentifiers(companyId: input.GetCompanyIdentifiers) {\r\n return this.apollo.query({\r\n query: query.queryGetCompanyIdentifiers(),\r\n variables: {\r\n companyId: {\r\n companyId: companyId.companyId,\r\n },\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n public getCompanyChannel(getChannelCompanies: input.GetChannelCompanies) {\r\n return this.apollo.query({\r\n query: query.queryGetCompanyChannel(),\r\n variables: {\r\n getChannelCompanies: getChannelCompanies\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n public getCompanyChannelAdmin(companyId: string) {\r\n return this.apollo.query({\r\n query: query.queryGetCompanyChannelAdmin(),\r\n variables: {\r\n getChannelAdmin: companyId\r\n }\r\n });\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetCompany() {\r\n return gql`\r\n query getCompany($getCompany) {\r\n getCompany(getCompany: $getCompany){\r\n success\r\n message\r\n company {\r\n companyId\r\n parentCompanyId\r\n companyName\r\n website\r\n companyNameShort\r\n isReseller\r\n separateInvoice\r\n typeCompanyStatusId\r\n modifiedBy\r\n channelCompanies {\r\n companyId\r\n parentCompanyId\r\n companyName\r\n website\r\n companyNameShort\r\n isReseller\r\n separateInvoice\r\n typeCompanyStatusId\r\n modifiedBy\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetCompanyIdentifiers() {\r\n return gql`\r\n query getCompanyIdentifiers($getCompanyIdentifiers) {\r\n getCompanyIdentifiers(getCompanyIdentifiers: $getCompanyIdentifiers) {\r\n success\r\n message\r\n CompanyIdentfiers {\r\n companyIdentifierId\r\n companyId\r\n locationId\r\n applicationId\r\n orgName\r\n orgUserName\r\n orgIdentifier\r\n isRemote\r\n applicationName\r\n companyName\r\n location\r\n locationType\r\n datacenterCode\r\n datacenterName\r\n companyNameShort\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetCompanyChannel() {\r\n return gql`\r\n query getCompanyChannel($getChannelCompanies: GetChannelCompanies) {\r\n Companies:getCompanyChannel(getChannelCompanies: $getChannelCompanies) {\r\n success\r\n message\r\n companyChannel {\r\n companyId\r\n parentCompanyId\r\n companyName\r\n website\r\n companyNameShort\r\n isReseller\r\n separateInvoice\r\n typeCompanyStatusId\r\n modifiedBy\r\n channelCompanies {\r\n companyId\r\n parentCompanyId\r\n companyName\r\n website\r\n companyNameShort\r\n isReseller\r\n separateInvoice\r\n typeCompanyStatusId\r\n modifiedBy\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetCompanyChannelAdmin() {\r\n return gql`\r\n query getCompanyChannelAdmin($getChannelAdmin: String) {\r\n ChannelAdmin:getCompanyChannelAdmin(getChannelAdmin: $getChannelAdmin) {\r\n success\r\n message\r\n companyChannelAdmin {\r\n membershipId\r\n userId\r\n datacenterLocation\r\n applicationName\r\n applicationId\r\n applicationLocationId\r\n companyName\r\n companyId\r\n status\r\n roles\r\n useTwoFactorAuth\r\n }\r\n }\r\n }`;\r\n}\r\n","import { CompanyApollo } from \"./companyApollo\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { GetChannelCompanies } from './schema/input/getChannelCompanies';\r\nimport { GetCompanyIdentifiers } from \"./schema/input\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class CompanyProxy {\r\n constructor(private companyApollo: CompanyApollo) {}\r\n\r\n public getCompany(companyId: string) {\r\n return this.companyApollo.getCompany(companyId);\r\n }\r\n\r\n public getCompanyIdentifiers(companyId: GetCompanyIdentifiers) {\r\n return this.companyApollo.getCompanyIdentifiers(companyId);\r\n }\r\n\r\n public getCompanyChannel(getChannelCompanies: GetChannelCompanies) {\r\n return this.companyApollo.getCompanyChannel(getChannelCompanies);\r\n }\r\n\r\n public getCompanyChannelAdmin(companyId: string) {\r\n return this.companyApollo.getCompanyChannelAdmin(companyId);\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable, Attribute } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as mutation from './schema/mutation';\r\nimport * as response from './schema/type/index';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class KeycloakApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getClients(getClientsInput: input.GetClientsInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetClients(),\r\n variables: {\r\n getClientsInput\r\n },\r\n fetchPolicy: \"no-cache\" \r\n }).valueChanges;\r\n }\r\n\r\n public addUser(addUserInput: input.AddUserInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationAddUser(),\r\n variables: {\r\n addUserInput\r\n }\r\n });\r\n }\r\n\r\n public getKeycloakSession(getKeycloakSessionInput: input.GetKeycloakSessionInput) {\r\n return this.apollo.query({\r\n query: query.queryGetKeycloakSession(),\r\n variables: {\r\n getKeycloakSessionInput\r\n },\r\n fetchPolicy: \"no-cache\" \r\n });\r\n }\r\n\r\n public userActions(userActionsInput: input.UserActionsInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationUserActions(),\r\n variables: {\r\n userActionsInput\r\n }\r\n });\r\n }\r\n\r\n public getUserByEmail(getUserByEmailInput: input.GetUserByEmailInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetUserByEmail(),\r\n variables: {\r\n getUserByEmailInput\r\n },\r\n fetchPolicy: \"no-cache\" \r\n }).valueChanges;\r\n }\r\n\r\n public deleteUser(deleteUserInput: input.DeleteUserInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationDeleteUser(),\r\n variables: {\r\n deleteUserInput\r\n }\r\n });\r\n }\r\n\r\n public getUserGroups(getUserGroupsInput: input.GetUserGroupsInput) {\r\n return this.apollo.query({\r\n query: query.queryGetUserGroups(),\r\n variables: {\r\n getUserGroupsInput\r\n }\r\n });\r\n }\r\n\r\n public updateUser(updateUserInput: input.UpdateUserInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationUpdateUser(),\r\n variables: {\r\n updateUserInput \r\n // : {\r\n // userId: updateUserInput.userId,\r\n // sessionId: updateUserInput.sessionId,\r\n // user: {\r\n // attributes: {\r\n // userId: updateUserInput.userId,\r\n // isAutomation: \"True\"\r\n // },\r\n // id: updateUserInput.user.id,\r\n // email: updateUserInput.user.email,\r\n // firstName: updateUserInput.user.firstName,\r\n // lastName: updateUserInput.user.lastName,\r\n // username: updateUserInput.user.username,\r\n // groups: updateUserInput.user.groups\r\n \r\n // }\r\n // }\r\n }\r\n });\r\n }\r\n\r\n public getGroupByName(getGroupByNameInput: input.GetGroupByNameInput) {\r\n return this.apollo.query({\r\n query: query.queryGetGroupByName(),\r\n variables: {\r\n getGroupByNameInput\r\n }\r\n });\r\n }\r\n\r\n public addUserToGroup(addUserGroupInput: input.AddUserGroupInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationAddUserToGroup(),\r\n variables: {\r\n addUserGroupInput\r\n }\r\n })\r\n }\r\n\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetClients() {\r\n return gql`\r\n query getClients($getClientsInput: GetClientsInput) {\r\n getClients(getClientsInput: $getClientsInput) {\r\n success\r\n message\r\n getClientsResponse{\r\n clientRepresentation {\r\n id\r\n clientId\r\n name\r\n description \r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationAddUser() {\r\n return gql`\r\n mutation addUser($addUserInput: AddUserInput) {\r\n addUser(addUserInput: $addUserInput) {\r\n success\r\n message\r\n addUser\r\n }\r\n }\r\n `; //addUser\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetKeycloakSession() {\r\n return gql`\r\n query getKeycloakSession($getKeycloakSessionInput: GetKeycloakSessionInput) {\r\n getKeycloakSession(getKeycloakSessionInput: $getKeycloakSessionInput) {\r\n success\r\n message\r\n session {\r\n datacenterLocation \r\n application\r\n sessionId \r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationUserActions() {\r\n return gql`\r\n mutation userActions($userActionsInput: UserActionsInput) {\r\n userActions(userActionsInput: $userActionsInput) {\r\n success\r\n message\r\n userActions\r\n }\r\n }\r\n `; //addUser\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetUserByEmail() {\r\n return gql`\r\n query getUserByEmail($getUserByEmailInput: GetUserByEmailInput) {\r\n getUserByEmail(getUserByEmailInput: $getUserByEmailInput) {\r\n success\r\n message\r\n getUser{\r\n id\r\n email\r\n username\r\n firstName\r\n attributes {\r\n userId\r\n isAutomation\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationDeleteUser() {\r\n return gql`\r\n mutation deleteUser($deleteUserInput: DeleteUserInput) {\r\n deleteUser(deleteUserInput: $deleteUserInput) {\r\n success\r\n message\r\n deleteUser\r\n }\r\n }\r\n `; //addUser\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetUserGroups() {\r\n return gql`\r\n query getUserGroups($getUserGroupsInput: GetUserGroupsInput) {\r\n getUserGroups(getUserGroupsInput: $getUserGroupsInput) {\r\n success\r\n message\r\n getUserGroups{\r\n id\r\n name\r\n path\r\n subGroups {\r\n id\r\n name\r\n path\r\n }\r\n }\r\n }\r\n }`;\r\n}","import gql from \"graphql-tag\";\r\n\r\nexport function mutationUpdateUser() {\r\n return gql`\r\n mutation updateUser($updateUserInput: UpdateUserInput) {\r\n updateUser(updateUserInput: $updateUserInput) {\r\n success\r\n message\r\n updateUser\r\n }\r\n }\r\n `; //updateUser\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetGroupByName() {\r\n return gql`\r\n query getGroupByName($getGroupByNameInput: GetGroupByNameInput) {\r\n getGroupByName(getGroupByNameInput: $getGroupByNameInput) {\r\n success\r\n message\r\n getGroup{ \r\n id\r\n name\r\n path\r\n subGroups {\r\n id\r\n name\r\n path\r\n subGroups {\r\n id\r\n name\r\n path\r\n subGroups {\r\n id\r\n name\r\n path\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }`;\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationAddUserToGroup() {\r\n return gql`\r\n mutation addUserToGroup($addUserGroupInput: AddUserGroupInput) {\r\n addUserGroup(addUserGroupInput: $addUserGroupInput) {\r\n success\r\n message\r\n addUserGroup\r\n }\r\n }\r\n `; //addUser\r\n}\r\n","import { KeycloakApollo } from './keycloakApollo';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class KeycloakProxy {\r\n constructor(private keycloakApollo: KeycloakApollo) {}\r\n\r\n //#region Keycloak\r\n\r\n getClients(getClientsInput: input.GetClientsInput): Observable {\r\n return this.keycloakApollo.getClients(getClientsInput);\r\n }\r\n\r\n addUser(addUserInput: input.AddUserInput): Observable {\r\n return this.keycloakApollo.addUser(addUserInput);\r\n }\r\n\r\n getKeycloakSession(getKeycloakSessionInput: input.GetKeycloakSessionInput): Observable {\r\n return this.keycloakApollo.getKeycloakSession(getKeycloakSessionInput);\r\n }\r\n\r\n userActions(userActionsInput: input.UserActionsInput): Observable {\r\n return this.keycloakApollo.userActions(userActionsInput);\r\n }\r\n\r\n getUserByEmail(getUserByEmailInput: input.GetUserByEmailInput): Observable {\r\n return this.keycloakApollo.getUserByEmail(getUserByEmailInput);\r\n }\r\n\r\n deleteKeycloakUser(deleteUserInput: input.DeleteUserInput): Observable {\r\n return this.keycloakApollo.deleteUser(deleteUserInput);\r\n }\r\n\r\n getUserGroups(getUserGroupsInput: input.GetUserGroupsInput): Observable {\r\n return this.keycloakApollo.getUserGroups(getUserGroupsInput);\r\n }\r\n\r\n updateUser(updateUserInput: input.UpdateUserInput): Observable {\r\n return this.keycloakApollo.updateUser(updateUserInput);\r\n }\r\n\r\n getGroupByName(getGroupByNameInput: input.GetGroupByNameInput): Observable {\r\n return this.keycloakApollo.getGroupByName(getGroupByNameInput);\r\n }\r\n\r\n addUserToGroup(addUserGroupInput: input.AddUserGroupInput): Observable {\r\n return this.keycloakApollo.addUserToGroup(addUserGroupInput);\r\n }\r\n\r\n //#endregion\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function addDatapoint() {\r\n\treturn gql`\r\n mutation addDatapoint ($addDatapointInput : addDatapointInput) {\r\n addDatapoint (addDatapointInput: $addDatapointInput) {\r\n success,\r\n message,\r\n result\r\n }\r\n }\r\n `;\r\n}","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\nimport * as mutation from './schema/mutation/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MetricsApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public addCorrelation(addCorrelationInput: input.addCorrelationInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.addCorrelation(),\r\n variables: {\r\n addCorrelationInput: {\r\n userId: addCorrelationInput.userId\r\n }\r\n }\r\n });\r\n }\r\n\r\n public addCorrelationById(addCorrelationByIdInput: input.addCorrelationByIdInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.addCorrelationById(),\r\n variables: {\r\n addCorrelationByIdInput: {\r\n userId: addCorrelationByIdInput.userId,\r\n correlationId: addCorrelationByIdInput.correlationId\r\n }\r\n }\r\n });\r\n }\r\n\r\n public addDatapoint(addDatapointInput: input.addDatapointInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.addDatapoint(),\r\n variables: {\r\n addDatapointInput: {\r\n correlationId: addDatapointInput.correlationId,\r\n statNamespace: addDatapointInput.statNamespace,\r\n datapoint: addDatapointInput.datapoint\r\n }\r\n }\r\n });\r\n }\r\n\r\n public addDatapointAndTimestamp(addDatapointAndTimestampInput: input.addDatapointAndTimestampInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.addDatapointAndTimestamp(),\r\n variables: {\r\n addDatapointAndTimestampInput: {\r\n correlationId: addDatapointAndTimestampInput.correlationId,\r\n statNamespace: addDatapointAndTimestampInput.statNamespace,\r\n datapoint: addDatapointAndTimestampInput.datapoint,\r\n datapointTimestamp: addDatapointAndTimestampInput.datapointTimestamp\r\n }\r\n }\r\n });\r\n }\r\n\r\n public addDatapointByLocation(addDatapointByLocationInput: input.addDatapointByLocationInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.addDatapoint(),\r\n variables: {\r\n addDatapointByLocationInput: {\r\n correlationId: addDatapointByLocationInput.correlationId,\r\n locationId: addDatapointByLocationInput.locationId,\r\n statNamespace: addDatapointByLocationInput.statNamespace,\r\n datapoint: addDatapointByLocationInput.datapoint\r\n }\r\n }\r\n });\r\n }\r\n\r\n public addDatapointByLocationAndTimestamp(addDatapointByLocationAndTimestampInput: input.addDatapointByLocationAndTimestampInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.addDatapoint(),\r\n variables: {\r\n addDatapointByLocationAndTimestampInput: {\r\n correlationId: addDatapointByLocationAndTimestampInput.correlationId,\r\n locationId: addDatapointByLocationAndTimestampInput.locationId,\r\n statNamespace: addDatapointByLocationAndTimestampInput.statNamespace,\r\n datapoint: addDatapointByLocationAndTimestampInput.datapoint,\r\n datapointTimestamp: addDatapointByLocationAndTimestampInput.datapointTimestamp\r\n }\r\n }\r\n });\r\n }\r\n\r\n public getDatapointsByUser(getDatapointsByUserInput: input.getDatapointsByUserInput) {\r\n return this.apollo.watchQuery({\r\n query: query.getDatapointsByUser(),\r\n variables: {\r\n getDatapointsByUserInput: {\r\n userId: getDatapointsByUserInput.userId,\r\n fromDate: getDatapointsByUserInput.fromDate,\r\n toDate: getDatapointsByUserInput.toDate\r\n }\r\n }\r\n }).valueChanges;\r\n }\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function addCorrelation() {\r\n\treturn gql`\r\n mutation addCorrelation ($addCorrelationInput : addCorrelationInput) {\r\n addCorrelation (addCorrelationInput: $addCorrelationInput) {\r\n message,\r\n success,\r\n result\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function addCorrelationById() {\r\n\treturn gql`\r\n mutation addCorrelationById ($addCorrelationByIdInput : addCorrelationByIdInput) {\r\n addCorrelationById (addCorrelationByIdInput: $addCorrelationByIdInput) {\r\n message,\r\n success,\r\n result\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function addDatapointAndTimestamp() {\r\n\treturn gql`\r\n mutation addDatapointAndTimestamp ($addDatapointAndTimestampInput : addDatapointAndTimestampInput) {\r\n addDatapointAndTimestamp (addDatapointAndTimestampInput: $addDatapointAndTimestampInput) {\r\n success,\r\n message,\r\n result\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function getDatapointsByUser() {\r\n\treturn gql`\r\n query getDatapointsByUser ($getDatapointsByUserInput : getDatapointsByUserInput) {\r\n getDatapointsByUser(getDatapointsByUserInput: $getDatapointsByUserInput) {\r\n result {\r\n userId,\r\n correlationId,\r\n path,\r\n depth,\r\n user,\r\n firstName,\r\n lastName,\r\n location,\r\n datacenter,\r\n namespace,\r\n name,\r\n type,\r\n dataBoolean,\r\n dataDateTime,\r\n dataNumeric,\r\n dataText,\r\n timestamp\r\n }\r\n }\r\n }\r\n `;\r\n}","import { MetricsApollo } from './MetricsApollo';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MetricsProxy {\r\n constructor(private metricsApollo: MetricsApollo) {}\r\n\r\n public addCorrelation(addCorrelationInput: input.addCorrelationInput) {\r\n return this.metricsApollo.addCorrelation(addCorrelationInput);\r\n }\r\n\r\n public addCorrelationById(addCorrelationByIdInput: input.addCorrelationByIdInput) {\r\n return this.metricsApollo.addCorrelationById(addCorrelationByIdInput);\r\n }\r\n\r\n public addDatapoint(addDatapointInput: input.addDatapointInput) {\r\n return this.metricsApollo.addDatapoint(addDatapointInput);\r\n }\r\n\r\n public addDatapointAndTimestamp(addDatapointAndTimestampInput: input.addDatapointAndTimestampInput) {\r\n return this.metricsApollo.addDatapointAndTimestamp(addDatapointAndTimestampInput);\r\n }\r\n\r\n public addDatapointByLocation(addDatapointByLocationInput: input.addDatapointByLocationInput) {\r\n return this.metricsApollo.addDatapointByLocation(addDatapointByLocationInput);\r\n }\r\n\r\n public addDatapointByLocationAndTimestamp(addDatapointByLocationAndTimestampInput: input.addDatapointByLocationAndTimestampInput) {\r\n return this.metricsApollo.addDatapointByLocationAndTimestamp(addDatapointByLocationAndTimestampInput);\r\n }\r\n\r\n public getDatapointsByUser(getDatapointsByUserInput: input.getDatapointsByUserInput) {\r\n return this.metricsApollo.getDatapointsByUser(getDatapointsByUserInput); \r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class N3TAPIApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getCrossSiteResource(getCrossSiteResourceInput: input.getCrossSiteResourceInput) {\r\n return this.apollo.query({\r\n query: query.getCrossSiteResource(),\r\n variables: {\r\n getCrossSiteResourceInput: {\r\n host: getCrossSiteResourceInput.host,\r\n resource: getCrossSiteResourceInput.resource\r\n }\r\n }\r\n });\r\n }\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function getCrossSiteResource() {\r\n\treturn gql`\r\n query getCrossSiteResource ($getCrossSiteResourceInput : getCrossSiteResourceInput) {\r\n getCrossSiteResource(getCrossSiteResourceInput: $getCrossSiteResourceInput) {\r\n result\r\n }\r\n }\r\n `;\r\n}","import { Injectable } from '@angular/core';\r\nimport { N3TAPIApollo } from './N3TAPIApollo';\r\nimport * as input from './schema/input/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class N3TAPIProxy {\r\n constructor(private metricsApollo: N3TAPIApollo) {}\r\n\r\n public getCrossSiteResource(getDatapointsByUserInput: input.getCrossSiteResourceInput) {\r\n return this.metricsApollo.getCrossSiteResource(getDatapointsByUserInput); \r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport * as query from './schema/query/index';\r\nimport * as response from './schema/type/index';\r\nimport * as mutation from './schema/mutation/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MessageQueueApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n public getJobStatus(getJobStatusInput: input.GetJobStatusInput) {\r\n return this.apollo.watchQuery({\r\n query: query.queryGetJobStatus(),\r\n variables: {\r\n getJobStatusInput: {\r\n status: getJobStatusInput.status\r\n }\r\n },\r\n fetchPolicy: \"no-cache\" \r\n }).valueChanges;\r\n }\r\n\r\n public postJob(postJobInput: input.PostJobInput) {\r\n return this.apollo.watchQuery({\r\n query: mutation.mutationPostJob(),\r\n variables: {\r\n postJobInput: {\r\n job: postJobInput.job,\r\n }\r\n }\r\n }).valueChanges;\r\n }\r\n}\r\n","import gql from 'graphql-tag';\r\n\r\nexport function queryGetJobStatus() {\r\n return gql`\r\n query getJobStatus ($getJobStatusInput : getJobStatusInput) {\r\n getJobStatus(getJobStatusInput: $getJobStatusInput) {\r\n statusResponse {\r\n result {\r\n hasError,\r\n error,\r\n message {\r\n body\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}","import gql from 'graphql-tag';\r\n\r\nexport function mutationPostJob() {\r\n return gql`\r\n query postJob ($postJobInput : postJobInput) {\r\n postJob(postJobInput: $postJobInput) {\r\n statusResponse {\r\n result {\r\n hasError,\r\n error,\r\n message {\r\n body\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `;\r\n}","import { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\nimport { MessageQueueApollo } from './messageQueueApollo';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MessageQueueProxy {\r\n constructor(private messageQueueApollo: MessageQueueApollo) {}\r\n\r\n public postJob(postJobInput: input.PostJobInput) {\r\n return this.messageQueueApollo.postJob(postJobInput); \r\n }\r\n\r\n public getJobStatus(getJobStatusInput: input.GetJobStatusInput) {\r\n return this.messageQueueApollo.getJobStatus(getJobStatusInput);\r\n }\r\n}\r\n","import { Apollo } from 'apollo-angular';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input/index';\r\n//import * as query from './schema/query/index';\r\nimport * as mutation from './schema/mutation/index';\r\nimport * as response from './schema/type/index';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class NotifierApollo {\r\n constructor(private apollo: Apollo) {}\r\n\r\n\r\n sendNotifierMessageInput(sendNotifierMessageInput: input.SendNotifierMessageInput) {\r\n return this.apollo.mutate({\r\n mutation: mutation.mutationSendNotifierMessage(),\r\n variables: {\r\n\r\n // sendNotifierMessageInput: {\r\n // userId: \"\",\r\n // messageType: \"something\",\r\n // messageTo: \"jwolfram@n3t.com\",\r\n // messageFrom: \"noreply@n3t.com\",\r\n // messageSubject: \"This is a test of the system.\",\r\n // messageBody: \"Well then, this seems to work.

Does it now?

\"\r\n // }\r\n\r\n sendNotifierMessageInput: {\r\n userId: sendNotifierMessageInput.userId,\r\n messageType: sendNotifierMessageInput.messageType,\r\n messageTo: sendNotifierMessageInput.messageTo,\r\n // messageCC: sendNotifierMessageInput.messageCC,\r\n // messageBCC: sendNotifierMessageInput.messageBCC,\r\n messageFrom: sendNotifierMessageInput.messageFrom,\r\n messageSubject: sendNotifierMessageInput.messageSubject,\r\n messageBody: sendNotifierMessageInput.messageBody\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import gql from \"graphql-tag\";\r\n\r\nexport function mutationSendNotifierMessage () {\r\n return gql`\r\n mutation mutationSendNotifierMessage($sendNotifierMessageInput: SendNotifierMessageInput) {\r\n sendNotifierMessage(sendNotifierMessageInput: $sendNotifierMessageInput) {\r\n success\r\n message \r\n }\r\n }\r\n `; \r\n}","import { NotifierApollo } from './notifierApollo';\r\nimport { Injectable } from '@angular/core';\r\nimport * as input from './schema/input';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class NotifierProxy {\r\n constructor(private notifierApollo: NotifierApollo) {}\r\n\r\n sendNotifierMessage(sendMessage: input.SendNotifierMessageInput) {\r\n return this.notifierApollo.sendNotifierMessageInput(sendMessage);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BrsProxy } from './graphql/brs/brsProxy';\r\nimport { PortalProxy } from './portal/portalProxy';\r\nimport { CostProxy } from './graphql/cost/costProxy';\r\nimport { AuditProxy } from './graphql/audit/auditProxy';\r\nimport { LoginProxy } from './graphql/login/loginProxy';\r\nimport { BackupProxy } from './graphql/backup/backupProxy';\r\nimport { ComputeProxy } from './graphql/compute/computeProxy';\r\nimport { CloudvaletProxy } from './graphql/cloudvalet/cloudvaletProxy';\r\nimport { PermissionsProxy } from './graphql/permissions/permissionsProxy';\r\nimport { AuthenticateProxy } from './graphql/authenticate/authenticateProxy';\r\nimport { DpsProxy } from './graphql/dps/dpsProxy';\r\nimport { MonitorProxy } from './graphql/monitor/monitorProxy';\r\nimport { NetworkProxy } from './graphql/network/networkProxy';\r\nimport { ProductsProxy } from './graphql/products/productsProxy';\r\nimport { RdsProxy } from './graphql/rds/rdsProxy';\r\nimport { RecoveryProxy } from './graphql/recovery/recoveryProxy';\r\nimport { SchedulerProxy } from './graphql/scheduler/schedulerProxy';\r\nimport { TemplatesProxy } from './graphql/templates/templatesProxy';\r\nimport { CompanyProxy } from './graphql/company/companyProxy';\r\nimport { KeycloakProxy } from './graphql/keycloak/keycloakProxy';\r\nimport { MetricsProxy } from './graphql/metrics/metricsProxy';\r\nimport { N3TAPIProxy } from './graphql/n3tapi/n3tapiProxy';\r\nimport { MessageQueueProxy } from './graphql/messageQueue/messageQueueProxy';\r\nimport { NotifierProxy } from './graphql/notifier/notifierProxy';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class gql {\r\n /* proxies */\r\n public cost: CostProxy;\r\n public brs: BrsProxy;\r\n public dps: DpsProxy;\r\n public rds: RdsProxy;\r\n public cloudvalet: CloudvaletProxy;\r\n public backup: BackupProxy;\r\n public login: LoginProxy;\r\n public audit: AuditProxy;\r\n public portal: PortalProxy;\r\n public compute: ComputeProxy;\r\n public monitor: MonitorProxy;\r\n public network: NetworkProxy;\r\n public products: ProductsProxy;\r\n public recovery: RecoveryProxy;\r\n public permission: PermissionsProxy;\r\n public scheduler: SchedulerProxy;\r\n public templates: TemplatesProxy;\r\n public authenticate: AuthenticateProxy;\r\n public company: CompanyProxy;\r\n public keycloak: KeycloakProxy;\r\n public metrics: MetricsProxy;\r\n public n3tapi: N3TAPIProxy;\r\n public messageQueue: MessageQueueProxy;\r\n public notifier: NotifierProxy;\r\n\r\n constructor(costProxy: CostProxy,\r\n brsProxy: BrsProxy,\r\n dpsProxy: DpsProxy,\r\n rdsProxy: RdsProxy,\r\n cloudvaletProxy: CloudvaletProxy,\r\n loginProxy: LoginProxy,\r\n backupProxy: BackupProxy,\r\n auditProxy: AuditProxy,\r\n productsProxy: ProductsProxy,\r\n recoveryProxy: RecoveryProxy,\r\n portalProxy: PortalProxy,\r\n networkProxy: NetworkProxy,\r\n computeProxy: ComputeProxy,\r\n schedulerProxy: SchedulerProxy,\r\n templatesProxy: TemplatesProxy,\r\n permissionsProxy: PermissionsProxy,\r\n authenticateProxy: AuthenticateProxy,\r\n monitorProxy: MonitorProxy,\r\n companyProxy: CompanyProxy,\r\n keycloakProxy: KeycloakProxy,\r\n metricsProxy: MetricsProxy,\r\n n3tapiProxy: N3TAPIProxy,\r\n messageQueueProxy: MessageQueueProxy,\r\n notifierProxy: NotifierProxy,) {\r\n this.cost = costProxy;\r\n this.cloudvalet = cloudvaletProxy;\r\n this.brs = brsProxy;\r\n this.dps = dpsProxy;\r\n this.rds = rdsProxy;\r\n this.login = loginProxy;\r\n this.backup = backupProxy;\r\n this.audit = auditProxy;\r\n this.network = networkProxy;\r\n this.monitor = monitorProxy;\r\n this.portal = portalProxy;\r\n this.products = productsProxy;\r\n this.recovery = recoveryProxy;\r\n this.compute = computeProxy;\r\n this.scheduler = schedulerProxy;\r\n this.templates = templatesProxy;\r\n this.permission = permissionsProxy;\r\n this.authenticate = authenticateProxy;\r\n this.company = companyProxy;\r\n this.keycloak = keycloakProxy;\r\n this.metrics = metricsProxy;\r\n this.n3tapi = n3tapiProxy;\r\n this.messageQueue = messageQueueProxy;\r\n this.notifier = notifierProxy;\r\n }\r\n}\r\n","import { Guid } from 'guid-typescript';\r\n\r\nexport class Company {\r\n companyId: Guid;\r\n parentCompanyId: string;\r\n companyName: string;\r\n website: string;\r\n companyNameShort: string;\r\n isReseller: boolean;\r\n separateInvoice: boolean;\r\n typeCompanyStatusId: number;\r\n modifiedBy: Guid;\r\n channelCompanies: Company[];\r\n}\r\n\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\n\r\nexport class GetSnapProtectStatusInput {\r\n userId: string;\r\n vmOrVappId: string; \r\n vmName: string; \r\n orgName: string; \r\n datacenterLocation: DatacenterLocations;\r\n}","export class Membership {\r\n id: string;\r\n userId: string;\r\n username: string;\r\n password: string;\r\n isEncrypted: boolean;\r\n isApproved: boolean;\r\n isLockedOut: boolean;\r\n applicationId: string;\r\n applicationName: string;\r\n locationId: string;\r\n location: string;\r\n locationType: string;\r\n datacenterCode: string;\r\n companyName: string;\r\n isDefault: boolean;\r\n companyId: string;\r\n roles: string;\r\n membershipId: number;\r\n useTwoFactorAuth: boolean;\r\n }","\r\n\r\nexport class CreatePortalMembershipInput {\r\n ApplicationId: string;\r\n ApplicationLocationId: string;\r\n Username: string;\r\n Password: string;\r\n IsApproved: boolean;\r\n IsLockedOut: boolean;\r\n IsEncrypted: boolean;\r\n IsDefault: boolean;\r\n UserId: string;\r\n }","import { TypeLoginInput } from './index';\r\n\r\nexport class CreateProviderMembershipInput {\r\n user: TypeLoginInput;\r\n orgId: string;\r\n sessionId: string; \r\n }","\r\n\r\nexport class GetCompanyUsersInput {\r\n companyId: string;\r\n}","import { RolesInput } from './index';\r\n\r\nexport class UpdateRolesByUserInput {\r\n UserId: string;\r\n roles: RolesInput[];\r\n}","export enum App {\r\n Acronis = \"Acronis\",\r\n Actifio = \"Actifio\",\r\n AWSEC2 = \"AWSEC2\",\r\n Billing = \"Billing\",\r\n ChargebackManager = \"ChargebackManager\",\r\n GoogleCloudPlatform = \"GoogleCloudPlatform\",\r\n N3TLoginPortal = \"N3TLoginPortal\",\r\n Onboarding = \"Onboarding\",\r\n vCloudDirector = \"vCloudDirector\",\r\n Zerto = \"Zerto\",\r\n ZertoCloudManager = \"ZertoCloudManager\",\r\n MicrosoftAzure = \"MicrosoftAzure\",\r\n ConnectWise = \"ConnectWise\",\r\n Auvik = \"Auvik\",\r\n Veeam = \"Veeam\",\r\n VROPSMetering = \"VROPSMetering\",\r\n}\r\n","export enum DatacenterLocations {\r\n ACD,\r\n GMU,\r\n SPA,\r\n LAS,\r\n DEV,\r\n VCD,\r\n AWS,\r\n GCP,\r\n UAT,\r\n AZU,\r\n CNW,\r\n AUV,\r\n ATL\r\n}","
\n
\n
\n Loading...\n \n \n \n \n \n \n
\n
\n
\n
\n Gathering information about associated Channel Companies.\n
\n
\n
\n\n
\n
\n
\n Operate as {{ (company$ | async)?.companyName }}?\n
\n
\n
\n \n
\n
\n
\n
\n\n

OR

\n\n
\n
\n Select a Channel Company\n
\n
\n
\n
\n
\n \n \n
\n
Company is required.
\n
\n
\n
\n \n
\n
\n
\n
\n\n\n\n
\n","import { ShoppingCartService } from './../../../core/_services/shoppingcart.service';\nimport { Router } from \"@angular/router\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { Company } from \"@app/core/gql/graphql/company/schema/type\";\nimport {\n ChannelService,\n AlertService,\n} from \"@app/core/_services\";\nimport { QueryRefService } from \"@app/core/_services/query-ref.service\"\nimport { N3TStore } from \"@app/core/_services/n3tStore.service\";\nimport { Observable } from \"rxjs\";\nimport { FormGroup, FormControl, Validators } from \"@angular/forms\";\nimport { Select2Data, Select2Option } from \"ng-select2-component\";\nimport { N3TKeycloakService } from \"@app/core/_services/n3tKeycloak.service\";\n\n@Component({\n selector: \"pvdc-login-channel\",\n templateUrl: \"./login-channel.component.html\",\n styleUrls: [\"./login-channel.component.scss\"],\n})\nexport class LoginChannelComponent implements OnInit {\n companies$: Observable;\n company$: Observable;\n companySelected: string = \"\";\n companyList: Select2Data = new Array();\n loading: boolean = true;\n channelCompanyId: string = \"\";\n\n loaded$: boolean = false;\n errorMsg$: string;\n isError$: boolean = false;\n\n constructor(\n private channelService: ChannelService,\n private alertService: AlertService,\n private n3tStore: N3TStore,\n private router: Router,\n private n3tKeycloakService: N3TKeycloakService,\n private queryRefService: QueryRefService,\n private shoppingCartSvc: ShoppingCartService\n ) {}\n\n ngOnInit(): void {\n this.company$ = this.n3tStore.selectCompany();\n this.company$.subscribe();\n\n this.n3tStore.selectCompanyDataResult().subscribe((result) => {\n this.loaded$ = result.isLoaded;\n this.isError$ = result.hasError;\n this.errorMsg$ = result.error;\n });\n // this.n3tStore.selectPVDCsResult().subscribe((result) => {\n // this.loaded$ = result.isLoaded;\n // this.isError$ = result.hasError;\n // this.errorMsg$ = result.error;\n // });\n\n this.n3tStore.selectAuthUserResult().subscribe((result) => {\n if (result.callState == \"COMPLETE\") {\n this.channelService.getChannelCompanies().subscribe();\n this.n3tKeycloakService.getKeycloakSession();\n }\n });\n\n this.companies$ = this.n3tStore.selectChannelCompanies();\n this.companies$.subscribe(data => { \n data.sort((a, b) => a.companyName.localeCompare(b.companyName));\n data.forEach((company) => {\n const item : Select2Option = {\n value: company.companyId.toString(), \n label: `${company.companyName} (${company.companyNameShort})`, \n };\n this.companyList.push(item);\n });\n });\n\n this.n3tStore.selectAdminUserResult().subscribe((result) => {\n this.loaded$ = result.isLoaded;\n this.isError$ = result.hasError;\n this.errorMsg$ = result.error;\n\n if (result.hasError) {\n this.alertService.error(result.error);\n }\n\n if (result.isLoaded) {\n this.queryRefService.stopComputePolling();\n this.router.navigate([\"/\"]);\n }\n });\n \n }\n\n public proceedCompany() {\n this.shoppingCartSvc.clearCart();\n this.router.navigate([\"/\"]);\n }\n\n public proceedChannelCompany() {}\n\n form = new FormGroup({\n channel: new FormControl(\"\", Validators.required),\n });\n\n get f() {\n return this.form.controls;\n }\n\n submit() {\n this.channelService.getChannelCompanyAdmin(this.channelCompanyId);\n this.shoppingCartSvc.clearCart();\n // this.n3tStore.selectAdminUserResult().subscribe((result) => {\n // this.loaded$ = result.isLoaded;\n // this.isError$ = result.hasError;\n // this.errorMsg$ = result.error;\n\n // if (result.hasError) {\n // this.alertService.error(result.error);\n // }\n\n // if (result.isLoaded) {\n // this.queryRefService.stopComputePolling();\n // this.router.navigate([\"/\"]);\n // }\n // });\n }\n\n changeChannel(e) {\n this.channelCompanyId = e?.value;\n console.log(e?.value);\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '@app/core/_services/authentication.service';\n\n@Component({ templateUrl: 'layout.component.html' })\nexport class LayoutComponent {\n constructor(\n private router: Router,\n private authService: AuthenticationService\n ) {\n // redirect to home if already logged in\n if (this.authService.isAuthenticated) {\n// this.router.navigate(['/']);\n }\n }\n}\n","
\n \n
","
\r\n

Login

\r\n
\r\n
\r\n
\r\n
\r\n Loading...\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Username is required
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Password is required
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
","import { N3TKeycloakService } from './../../core/_services/n3tKeycloak.service';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { AlertService } from '@app/core/_services';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { AuthenticationResponse } from '@app/core/gql/graphql/authenticate/schema/type';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { AuthenticationService } from '@app/core/_services/authentication.service';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\n\r\n@Component({ templateUrl: 'login.component.html' })\r\nexport class LoginComponent implements OnInit {\r\n form: FormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n\r\n user: Observable;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private formBuilder: FormBuilder,\r\n private alertService: AlertService,\r\n private authService: AuthenticationService,\r\n private n3tStore: N3TStore,\r\n private n3tKeycloakService: N3TKeycloakService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n username: ['', Validators.required],\r\n password: ['', Validators.required]\r\n });\r\n\r\n this.n3tStore.selectAuthUserResult().subscribe((result) => {\r\n if(result.callState == \"INIT\" || result.hasError){\r\n this.loading = false;\r\n }\r\n else {\r\n this.n3tKeycloakService.getKeycloakSession();\r\n this.loading = !result.isLoaded;\r\n }\r\n });\r\n \r\n // get return url from route parameters or default to '/'\r\n this.returnUrl = this.route.snapshot.queryParams.returnUrl || '/';\r\n }\r\n\r\n get f() { return this.form.controls; }\r\n\r\n onSubmit() {\r\n this.submitted = true;\r\n this.alertService.clear();\r\n\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n }\r\n}\r\n","
\r\n

Register

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
First Name is required
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Last Name is required
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Username is required
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
Password is required
\r\n
Password must be at least 6 characters
\r\n
\r\n
\r\n
\r\n \r\n Cancel\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\n\r\nimport { AccountService, AlertService } from '@app/core/_services';\r\n\r\n@Component({ templateUrl: 'register.component.html' })\r\nexport class RegisterComponent implements OnInit {\r\n form: FormGroup;\r\n loading = false;\r\n submitted = false;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private accountService: AccountService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n username: ['', Validators.required],\r\n password: ['', [Validators.required, Validators.minLength(6)]]\r\n });\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() { return this.form.controls; }\r\n\r\n onSubmit() {\r\n this.submitted = true;\r\n\r\n // reset alerts on submit\r\n this.alertService.clear();\r\n\r\n // stop here if form is invalid\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n this.accountService.register(this.form.value)\r\n .pipe(first())\r\n .subscribe(\r\n data => {\r\n this.alertService.success('Registration successful', { keepAfterRouteChange: true });\r\n this.router.navigate(['../login'], { relativeTo: this.route });\r\n },\r\n error => {\r\n this.alertService.error(error);\r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","import { LoginChannelComponent } from './login-channel/login-channel.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { LayoutComponent } from './layout.component';\r\nimport { LoginComponent } from './login.component';\r\nimport { RegisterComponent } from './register.component';\r\nimport { LogoutComponent } from './logout.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '', component: LayoutComponent,\r\n children: [\r\n { path: 'login', component: LoginComponent, runGuardsAndResolvers: 'always' },\r\n { path: 'register', component: RegisterComponent },\r\n { path: 'channel', component: LoginChannelComponent },\r\n { path: 'logout', component: LogoutComponent }\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AccountRoutingModule { }\r\n","import { AuthenticationService } from '@app/core/_services';\r\nimport { AuthUser } from '@app/core/_models/user';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\r\n\r\n@Component({\r\n selector: 'pvdc-logout',\r\n templateUrl: './logout.component.html'\r\n})\r\n\r\nexport class LogoutComponent implements OnInit {\r\n\r\n user = {\r\n app: 'PvDC Customer Portal',\r\n name: '',\r\n email: '',\r\n avatar: 'avatar-admin.png',\r\n twitter: '',\r\n };\r\n\r\n constructor(private n3tStore: N3TStore,\r\n private n3tKeycloak: N3TKeycloakService,\r\n private authService: AuthenticationService) { }\r\n user$: Observable;\r\n\r\n ngOnInit() {\r\n this.n3tKeycloak.logout();\r\n this.user$ = new Observable();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { AccountRoutingModule } from './account-routing.module';\nimport { LayoutComponent } from './layout.component';\nimport { LoginComponent } from './login.component';\nimport { RegisterComponent } from './register.component';\nimport { LoginChannelComponent } from './login-channel/login-channel.component';\nimport { Select2Module } from \"ng-select2-component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n AccountRoutingModule,\n Select2Module\n ],\n declarations: [\n LayoutComponent,\n LoginComponent,\n RegisterComponent,\n LoginChannelComponent\n ]\n})\nexport class AccountModule { }\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\r\nimport { ConfirmTimerDialogComponent } from './confirm-timer-dialog/confirm-timer-dialog.component';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { ProgressbarModule,ProgressbarConfig } from 'ngx-bootstrap/progressbar';\r\nimport { DialogsService } from './dialogs.service';\r\n\r\n@NgModule({\r\n declarations: [ConfirmDialogComponent, ConfirmTimerDialogComponent],\r\n imports: [\r\n CommonModule,\r\n ModalModule,\r\n ProgressbarModule\r\n ],\r\n providers: [DialogsService, ProgressbarConfig]\r\n})\r\nexport class DialogsModule { }\r\n","import { Component } from '@angular/core';\r\nimport { BsModalRef } from 'ngx-bootstrap/modal';\r\nimport { DialogButtons } from '../dialogs.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'smart-confirm-dialog',\r\n template: `\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n `,\r\n})\r\nexport class ConfirmDialogComponent {\r\n title: string;\r\n message: string;\r\n buttons: DialogButtons;\r\n onClose = new Subject();\r\n\r\n constructor(public bsModalRef: BsModalRef) { }\r\n\r\n confirm($event: MouseEvent) {\r\n this.onClose.next(true);\r\n this.onClose.complete();\r\n this.bsModalRef.hide();\r\n }\r\n cancel($event: MouseEvent) {\r\n this.onClose.next(false);\r\n this.onClose.complete();\r\n this.bsModalRef.hide();\r\n }\r\n\r\n}\r\n","import { Subject } from 'rxjs';\r\nimport { Component } from '@angular/core';\r\nimport { BsModalRef } from 'ngx-bootstrap/modal';\r\nimport { DialogButtons } from '../dialogs.service';\r\nimport { AuthenticationService } from '@app/core/_services';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { TimerService } from '@app/core/_services/timer.service';\r\nimport { Router } from '@angular/router';\r\nimport { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\r\n\r\n@Component({\r\n selector: 'smart-confirm-timer-dialog',\r\n template: `\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

{{message}}

\r\n
\r\n
\r\n \r\n \r\n
\r\n `,\r\n})\r\nexport class ConfirmTimerDialogComponent {\r\n title: string;\r\n message: string;\r\n buttons: DialogButtons;\r\n timeout: number;\r\n\r\n onClose = new Subject();\r\n timerId: string;\r\n max: number = 90;\r\n value: number = 0;\r\n confirmCountdown = 0;\r\n\r\n constructor(public bsModalRef: BsModalRef,\r\n private n3tstore: N3TStore,\r\n private logoutCountdownTimer: TimerService,\r\n private n3tKeycloakSvc: N3TKeycloakService\r\n ) { }\r\n ngOnInit(): void {\r\n this.timerId = this.logoutCountdownTimer.createNewTimer(\"confirmcountdown\", 1, ()=>this.onTimer()); \r\n }\r\n confirm($event: MouseEvent) {\r\n this.logoutCountdownTimer.unsubscribe(this.timerId); \r\n this.confirmHandler(); // <-- custom event handlers for confirm timer dialogs (i.e. sign out etc...)\r\n this.onClose.next(true);\r\n this.onClose.complete();\r\n this.bsModalRef.hide();\r\n }\r\n cancel($event: MouseEvent) {\r\n this.logoutCountdownTimer.unsubscribe(this.timerId); \r\n this.onClose.next(false);\r\n this.onClose.complete();\r\n this.bsModalRef.hide();\r\n }\r\n onTimer(): void {\r\n this.updateProgressBar();\r\n if (this.value >= this.max) {\r\n this.confirm(null);\r\n }\r\n }\r\n updateProgressBar(): void {\r\n this.confirmCountdown ++;\r\n this.value = this.confirmCountdown / this.timeout * 100;\r\n \r\n }\r\n\r\n /*\r\n add custom confirm modal event handlers here <--\r\n */\r\n private confirmHandler() {\r\n switch(this.buttons.confirm.label.toLowerCase()) {\r\n\r\n /*** session time out confirm event handler ***/ \r\n case \"sign out\": {\r\n this.n3tstore.dispatchSessionTimeoutMetric();\r\n this.n3tKeycloakSvc.logout();\r\n break;\r\n }\r\n\r\n default: {\r\n break;\r\n }\r\n }\r\n \r\n }\r\n}\r\n","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\r\nimport { ConfirmTimerDialogComponent } from './confirm-timer-dialog/confirm-timer-dialog.component';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class DialogsService {\r\n bsModalRef: BsModalRef;\r\n renderer: Renderer2;\r\n\r\n constructor(\r\n rendererFactory: RendererFactory2,\r\n private modalService: BsModalService) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n public confirm(initialState: DialogOptions) {\r\n this.playSound('messagebox');\r\n this.bsModalRef = this.modalService.show(ConfirmDialogComponent,\r\n {\r\n initialState,\r\n backdrop: 'static',\r\n keyboard: false,\r\n class: 'modal-dialog-centered'\r\n });\r\n this.renderer.addClass(document.querySelector('.modal'), 'modal-alert');\r\n return this.bsModalRef.content.onClose as Observable;\r\n }\r\n public confirmTimer(initialState: TimerDialogOptions) {\r\n this.playSound('messagebox');\r\n this.bsModalRef = this.modalService.show(ConfirmTimerDialogComponent,\r\n {\r\n initialState,\r\n backdrop: 'static',\r\n keyboard: false,\r\n class: 'modal-dialog-centered'\r\n });\r\n this.renderer.addClass(document.querySelector('.modal'), 'modal-alert');\r\n return this.bsModalRef.content.onClose as Observable;\r\n }\r\n public playSound(sound: string, path = 'assets/media/sound') {\r\n const audioElement = document.createElement('audio');\r\n if (navigator.userAgent.match('Firefox/')) {\r\n audioElement.setAttribute('src', path + '/' + sound + '.ogg');\r\n } else {\r\n audioElement.setAttribute('src', path + '/' + sound + '.mp3');\r\n }\r\n\r\n audioElement.addEventListener('load', () => {\r\n audioElement.play();\r\n }, true);\r\n audioElement.pause();\r\n audioElement.play();\r\n }\r\n\r\n}\r\n\r\nexport interface DialogOptions {\r\n title: string;\r\n message: string;\r\n buttons: DialogButtons;\r\n}\r\nexport interface TimerDialogOptions {\r\n title: string;\r\n message: string;\r\n buttons: DialogButtons;\r\n timeout: number;\r\n}\r\n\r\nexport interface DialogButton {\r\n label: string;\r\n className: string;\r\n}\r\nexport interface DialogButtons {\r\n confirm?: DialogButton;\r\n cancel?: DialogButton;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SettingsModalService {\r\n\r\n openSettings$ = new Subject();\r\n\r\n public openModal() {\r\n this.openSettings$.next(true);\r\n }\r\n}\r\n","import { SPACE, BACKSPACE, DELETE, TAB, hasModifierKey, ENTER } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, EventEmitter, Optional, Inject, Attribute, ContentChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, Self, ContentChildren, NgModule } from '@angular/core';\nimport * as i3 from '@angular/material/core';\nimport { mixinTabIndex, mixinColor, mixinDisableRipple, RippleRenderer, MAT_RIPPLE_GLOBAL_OPTIONS, mixinErrorState, MatCommonModule, ErrorStateMatcher } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subject, merge } from 'rxjs';\nimport { take, takeUntil, startWith } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport * as i2 from '@angular/forms';\nimport { Validators } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport * as i1$1 from '@angular/cdk/bidi';\n\n/** Event object emitted by MatChip when selected or deselected. */\nclass MatChipSelectionChange {\n constructor(\n /** Reference to the chip that emitted the event. */\n source, \n /** Whether the chip that emitted the event is selected. */\n selected, \n /** Whether the selection change was a result of a user interaction. */\n isUserInput = false) {\n this.source = source;\n this.selected = selected;\n this.isUserInput = isUserInput;\n }\n}\n/**\n * Injection token that can be used to reference instances of `MatChipRemove`. It serves as\n * alternative token to the actual `MatChipRemove` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_REMOVE = new InjectionToken('MatChipRemove');\n/**\n * Injection token that can be used to reference instances of `MatChipAvatar`. It serves as\n * alternative token to the actual `MatChipAvatar` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_AVATAR = new InjectionToken('MatChipAvatar');\n/**\n * Injection token that can be used to reference instances of `MatChipTrailingIcon`. It serves as\n * alternative token to the actual `MatChipTrailingIcon` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_TRAILING_ICON = new InjectionToken('MatChipTrailingIcon');\n// Boilerplate for applying mixins to MatChip.\n/** @docs-private */\nclass MatChipBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatChipMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(MatChipBase), 'primary'), -1);\n/**\n * Dummy directive to add CSS class to chip avatar.\n * @docs-private\n */\nclass MatChipAvatar {\n}\nMatChipAvatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatChipAvatar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatChipAvatar, selector: \"mat-chip-avatar, [matChipAvatar]\", host: { classAttribute: \"mat-chip-avatar\" }, providers: [{ provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipAvatar, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-chip-avatar, [matChipAvatar]',\n host: { 'class': 'mat-chip-avatar' },\n providers: [{ provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar }],\n }]\n }] });\n/**\n * Dummy directive to add CSS class to chip trailing icon.\n * @docs-private\n */\nclass MatChipTrailingIcon {\n}\nMatChipTrailingIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipTrailingIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatChipTrailingIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatChipTrailingIcon, selector: \"mat-chip-trailing-icon, [matChipTrailingIcon]\", host: { classAttribute: \"mat-chip-trailing-icon\" }, providers: [{ provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipTrailingIcon, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n host: { 'class': 'mat-chip-trailing-icon' },\n providers: [{ provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon }],\n }]\n }] });\n/** Material Design styled chip directive. Used inside the MatChipList component. */\nclass MatChip extends _MatChipMixinBase {\n constructor(elementRef, _ngZone, platform, globalRippleOptions, _changeDetectorRef, _document, animationMode, tabIndex) {\n super(elementRef);\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n /** Whether the chip has focus. */\n this._hasFocus = false;\n /** Whether the chip list is selectable */\n this.chipListSelectable = true;\n /** Whether the chip list is in multi-selection mode. */\n this._chipListMultiple = false;\n /** Whether the chip list as a whole is disabled. */\n this._chipListDisabled = false;\n this._selected = false;\n this._selectable = true;\n this._disabled = false;\n this._removable = true;\n /** Emits when the chip is focused. */\n this._onFocus = new Subject();\n /** Emits when the chip is blured. */\n this._onBlur = new Subject();\n /** Emitted when the chip is selected or deselected. */\n this.selectionChange = new EventEmitter();\n /** Emitted when the chip is destroyed. */\n this.destroyed = new EventEmitter();\n /** Emitted when a chip is to be removed. */\n this.removed = new EventEmitter();\n this._addHostClassName();\n // Dynamically create the ripple target, append it within the chip, and use it as the\n // chip's ripple target. Adding the class '.mat-chip-ripple' ensures that it will have\n // the proper styles.\n this._chipRippleTarget = _document.createElement('div');\n this._chipRippleTarget.classList.add('mat-chip-ripple');\n this._elementRef.nativeElement.appendChild(this._chipRippleTarget);\n this._chipRipple = new RippleRenderer(this, _ngZone, this._chipRippleTarget, platform);\n this._chipRipple.setupTriggerEvents(elementRef);\n this.rippleConfig = globalRippleOptions || {};\n this._animationsDisabled = animationMode === 'NoopAnimations';\n this.tabIndex = tabIndex != null ? parseInt(tabIndex) || -1 : -1;\n }\n /**\n * Whether ripples are disabled on interaction\n * @docs-private\n */\n get rippleDisabled() {\n return (this.disabled ||\n this.disableRipple ||\n this._animationsDisabled ||\n !!this.rippleConfig.disabled);\n }\n /** Whether the chip is selected. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n const coercedValue = coerceBooleanProperty(value);\n if (coercedValue !== this._selected) {\n this._selected = coercedValue;\n this._dispatchSelectionChange();\n }\n }\n /** The value of the chip. Defaults to the content inside `` tags. */\n get value() {\n return this._value !== undefined ? this._value : this._elementRef.nativeElement.textContent;\n }\n set value(value) {\n this._value = value;\n }\n /**\n * Whether or not the chip is selectable. When a chip is not selectable,\n * changes to its selected state are always ignored. By default a chip is\n * selectable, and it becomes non-selectable if its parent chip list is\n * not selectable.\n */\n get selectable() {\n return this._selectable && this.chipListSelectable;\n }\n set selectable(value) {\n this._selectable = coerceBooleanProperty(value);\n }\n /** Whether the chip is disabled. */\n get disabled() {\n return this._chipListDisabled || this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /**\n * Determines whether or not the chip displays the remove styling and emits (removed) events.\n */\n get removable() {\n return this._removable;\n }\n set removable(value) {\n this._removable = coerceBooleanProperty(value);\n }\n /** The ARIA selected applied to the chip. */\n get ariaSelected() {\n // Remove the `aria-selected` when the chip is deselected in single-selection mode, because\n // it adds noise to NVDA users where \"not selected\" will be read out for each chip.\n return this.selectable && (this._chipListMultiple || this.selected)\n ? this.selected.toString()\n : null;\n }\n _addHostClassName() {\n const basicChipAttrName = 'mat-basic-chip';\n const element = this._elementRef.nativeElement;\n if (element.hasAttribute(basicChipAttrName) ||\n element.tagName.toLowerCase() === basicChipAttrName) {\n element.classList.add(basicChipAttrName);\n return;\n }\n else {\n element.classList.add('mat-standard-chip');\n }\n }\n ngOnDestroy() {\n this.destroyed.emit({ chip: this });\n this._chipRipple._removeTriggerEvents();\n }\n /** Selects the chip. */\n select() {\n if (!this._selected) {\n this._selected = true;\n this._dispatchSelectionChange();\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Deselects the chip. */\n deselect() {\n if (this._selected) {\n this._selected = false;\n this._dispatchSelectionChange();\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Select this chip and emit selected event */\n selectViaInteraction() {\n if (!this._selected) {\n this._selected = true;\n this._dispatchSelectionChange(true);\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput = false) {\n this._selected = !this.selected;\n this._dispatchSelectionChange(isUserInput);\n this._changeDetectorRef.markForCheck();\n return this.selected;\n }\n /** Allows for programmatic focusing of the chip. */\n focus() {\n if (!this._hasFocus) {\n this._elementRef.nativeElement.focus();\n this._onFocus.next({ chip: this });\n }\n this._hasFocus = true;\n }\n /**\n * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n * BACKSPACE keys are pressed.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n */\n remove() {\n if (this.removable) {\n this.removed.emit({ chip: this });\n }\n }\n /** Handles click events on the chip. */\n _handleClick(event) {\n if (this.disabled) {\n event.preventDefault();\n }\n }\n /** Handle custom key presses. */\n _handleKeydown(event) {\n if (this.disabled) {\n return;\n }\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n // If we are removable, remove the focused chip\n this.remove();\n // Always prevent so page navigation does not occur\n event.preventDefault();\n break;\n case SPACE:\n // If we are selectable, toggle the focused chip\n if (this.selectable) {\n this.toggleSelected(true);\n }\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n break;\n }\n }\n _blur() {\n // When animations are enabled, Angular may end up removing the chip from the DOM a little\n // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n // that moves focus not the next item. To work around the issue, we defer marking the chip\n // as not focused until the next time the zone stabilizes.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._ngZone.run(() => {\n this._hasFocus = false;\n this._onBlur.next({ chip: this });\n });\n });\n }\n _dispatchSelectionChange(isUserInput = false) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this._selected,\n });\n }\n}\nMatChip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.Platform }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatChip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: { color: \"color\", disableRipple: \"disableRipple\", tabIndex: \"tabIndex\", selected: \"selected\", value: \"value\", selectable: \"selectable\", disabled: \"disabled\", removable: \"removable\" }, outputs: { selectionChange: \"selectionChange\", destroyed: \"destroyed\", removed: \"removed\" }, host: { attributes: { \"role\": \"option\" }, listeners: { \"click\": \"_handleClick($event)\", \"keydown\": \"_handleKeydown($event)\", \"focus\": \"focus()\", \"blur\": \"_blur()\" }, properties: { \"attr.tabindex\": \"disabled ? null : tabIndex\", \"class.mat-chip-selected\": \"selected\", \"class.mat-chip-with-avatar\": \"avatar\", \"class.mat-chip-with-trailing-icon\": \"trailingIcon || removeIcon\", \"class.mat-chip-disabled\": \"disabled\", \"class._mat-animation-noopable\": \"_animationsDisabled\", \"attr.disabled\": \"disabled || null\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.aria-selected\": \"ariaSelected\" }, classAttribute: \"mat-chip mat-focus-indicator\" }, queries: [{ propertyName: \"avatar\", first: true, predicate: MAT_CHIP_AVATAR, descendants: true }, { propertyName: \"trailingIcon\", first: true, predicate: MAT_CHIP_TRAILING_ICON, descendants: true }, { propertyName: \"removeIcon\", first: true, predicate: MAT_CHIP_REMOVE, descendants: true }], exportAs: [\"matChip\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChip, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]`,\n inputs: ['color', 'disableRipple', 'tabIndex'],\n exportAs: 'matChip',\n host: {\n 'class': 'mat-chip mat-focus-indicator',\n '[attr.tabindex]': 'disabled ? null : tabIndex',\n 'role': 'option',\n '[class.mat-chip-selected]': 'selected',\n '[class.mat-chip-with-avatar]': 'avatar',\n '[class.mat-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n '[class.mat-chip-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[attr.disabled]': 'disabled || null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-selected]': 'ariaSelected',\n '(click)': '_handleClick($event)',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n }, propDecorators: { avatar: [{\n type: ContentChild,\n args: [MAT_CHIP_AVATAR]\n }], trailingIcon: [{\n type: ContentChild,\n args: [MAT_CHIP_TRAILING_ICON]\n }], removeIcon: [{\n type: ContentChild,\n args: [MAT_CHIP_REMOVE]\n }], selected: [{\n type: Input\n }], value: [{\n type: Input\n }], selectable: [{\n type: Input\n }], disabled: [{\n type: Input\n }], removable: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], removed: [{\n type: Output\n }] } });\n/**\n * Applies proper (click) support and adds styling for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * `\n * cancel\n * `\n *\n * You *may* use a custom icon, but you may need to override the `mat-chip-remove` positioning\n * styles to properly center the icon within the chip.\n */\nclass MatChipRemove {\n constructor(_parentChip, elementRef) {\n this._parentChip = _parentChip;\n if (elementRef.nativeElement.nodeName === 'BUTTON') {\n elementRef.nativeElement.setAttribute('type', 'button');\n }\n }\n /** Calls the parent chip's public `remove()` method if applicable. */\n _handleClick(event) {\n const parentChip = this._parentChip;\n if (parentChip.removable && !parentChip.disabled) {\n parentChip.remove();\n }\n // We need to stop event propagation because otherwise the event will bubble up to the\n // form field and cause the `onContainerClick` method to be invoked. This method would then\n // reset the focused chip that has been focused after chip removal. Usually the parent\n // the parent click listener of the `MatChip` would prevent propagation, but it can happen\n // that the chip is being removed before the event bubbles up.\n event.stopPropagation();\n event.preventDefault();\n }\n}\nMatChipRemove.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipRemove, deps: [{ token: MatChip }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatChipRemove.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatChipRemove, selector: \"[matChipRemove]\", host: { listeners: { \"click\": \"_handleClick($event)\" }, classAttribute: \"mat-chip-remove mat-chip-trailing-icon\" }, providers: [{ provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipRemove, decorators: [{\n type: Directive,\n args: [{\n selector: '[matChipRemove]',\n host: {\n 'class': 'mat-chip-remove mat-chip-trailing-icon',\n '(click)': '_handleClick($event)',\n },\n providers: [{ provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove }],\n }]\n }], ctorParameters: function () { return [{ type: MatChip }, { type: i0.ElementRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token to be used to override the default options for the chips module. */\nconst MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken('mat-chips-default-options');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Increasing integer for generating unique ids.\nlet nextUniqueId$1 = 0;\n/**\n * Directive that adds chip-specific behaviors to an input element inside ``.\n * May be placed inside or outside of an ``.\n */\nclass MatChipInput {\n constructor(_elementRef, _defaultOptions) {\n this._elementRef = _elementRef;\n this._defaultOptions = _defaultOptions;\n /** Whether the control is focused. */\n this.focused = false;\n this._addOnBlur = false;\n /**\n * The list of key codes that will trigger a chipEnd event.\n *\n * Defaults to `[ENTER]`.\n */\n this.separatorKeyCodes = this._defaultOptions.separatorKeyCodes;\n /** Emitted when a chip is to be added. */\n this.chipEnd = new EventEmitter();\n /** The input's placeholder text. */\n this.placeholder = '';\n /** Unique id for the input. */\n this.id = `mat-chip-list-input-${nextUniqueId$1++}`;\n this._disabled = false;\n this.inputElement = this._elementRef.nativeElement;\n }\n /** Register input for chip list */\n set chipList(value) {\n if (value) {\n this._chipList = value;\n this._chipList.registerInput(this);\n }\n }\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n */\n get addOnBlur() {\n return this._addOnBlur;\n }\n set addOnBlur(value) {\n this._addOnBlur = coerceBooleanProperty(value);\n }\n /** Whether the input is disabled. */\n get disabled() {\n return this._disabled || (this._chipList && this._chipList.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Whether the input is empty. */\n get empty() {\n return !this.inputElement.value;\n }\n ngOnChanges() {\n this._chipList.stateChanges.next();\n }\n ngOnDestroy() {\n this.chipEnd.complete();\n }\n ngAfterContentInit() {\n this._focusLastChipOnBackspace = this.empty;\n }\n /** Utility method to make host definition/tests more clear. */\n _keydown(event) {\n if (event) {\n // Allow the user's focus to escape when they're tabbing forward. Note that we don't\n // want to do this when going backwards, because focus should go back to the first chip.\n if (event.keyCode === TAB && !hasModifierKey(event, 'shiftKey')) {\n this._chipList._allowFocusEscape();\n }\n // To prevent the user from accidentally deleting chips when pressing BACKSPACE continuously,\n // We focus the last chip on backspace only after the user has released the backspace button,\n // and the input is empty (see behaviour in _keyup)\n if (event.keyCode === BACKSPACE && this._focusLastChipOnBackspace) {\n this._chipList._keyManager.setLastItemActive();\n event.preventDefault();\n return;\n }\n else {\n this._focusLastChipOnBackspace = false;\n }\n }\n this._emitChipEnd(event);\n }\n /**\n * Pass events to the keyboard manager. Available here for tests.\n */\n _keyup(event) {\n // Allow user to move focus to chips next time he presses backspace\n if (!this._focusLastChipOnBackspace && event.keyCode === BACKSPACE && this.empty) {\n this._focusLastChipOnBackspace = true;\n event.preventDefault();\n }\n }\n /** Checks to see if the blur should emit the (chipEnd) event. */\n _blur() {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipList.focused) {\n this._chipList._blur();\n }\n this._chipList.stateChanges.next();\n }\n _focus() {\n this.focused = true;\n this._focusLastChipOnBackspace = this.empty;\n this._chipList.stateChanges.next();\n }\n /** Checks to see if the (chipEnd) event needs to be emitted. */\n _emitChipEnd(event) {\n if (!this.inputElement.value && !!event) {\n this._chipList._keydown(event);\n }\n if (!event || this._isSeparatorKey(event)) {\n this.chipEnd.emit({\n input: this.inputElement,\n value: this.inputElement.value,\n chipInput: this,\n });\n event === null || event === void 0 ? void 0 : event.preventDefault();\n }\n }\n _onInput() {\n // Let chip list know whenever the value changes.\n this._chipList.stateChanges.next();\n }\n /** Focuses the input. */\n focus(options) {\n this.inputElement.focus(options);\n }\n /** Clears the input */\n clear() {\n this.inputElement.value = '';\n this._focusLastChipOnBackspace = true;\n }\n /** Checks whether a keycode is one of the configured separators. */\n _isSeparatorKey(event) {\n return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode);\n }\n}\nMatChipInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipInput, deps: [{ token: i0.ElementRef }, { token: MAT_CHIPS_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Directive });\nMatChipInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatChipInput, selector: \"input[matChipInputFor]\", inputs: { chipList: [\"matChipInputFor\", \"chipList\"], addOnBlur: [\"matChipInputAddOnBlur\", \"addOnBlur\"], separatorKeyCodes: [\"matChipInputSeparatorKeyCodes\", \"separatorKeyCodes\"], placeholder: \"placeholder\", id: \"id\", disabled: \"disabled\" }, outputs: { chipEnd: \"matChipInputTokenEnd\" }, host: { listeners: { \"keydown\": \"_keydown($event)\", \"keyup\": \"_keyup($event)\", \"blur\": \"_blur()\", \"focus\": \"_focus()\", \"input\": \"_onInput()\" }, properties: { \"id\": \"id\", \"attr.disabled\": \"disabled || null\", \"attr.placeholder\": \"placeholder || null\", \"attr.aria-invalid\": \"_chipList && _chipList.ngControl ? _chipList.ngControl.invalid : null\", \"attr.aria-required\": \"_chipList && _chipList.required || null\" }, classAttribute: \"mat-chip-input mat-input-element\" }, exportAs: [\"matChipInput\", \"matChipInputFor\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipInput, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n 'class': 'mat-chip-input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(keyup)': '_keyup($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n '(input)': '_onInput()',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '[attr.aria-invalid]': '_chipList && _chipList.ngControl ? _chipList.ngControl.invalid : null',\n '[attr.aria-required]': '_chipList && _chipList.required || null',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_CHIPS_DEFAULT_OPTIONS]\n }] }];\n }, propDecorators: { chipList: [{\n type: Input,\n args: ['matChipInputFor']\n }], addOnBlur: [{\n type: Input,\n args: ['matChipInputAddOnBlur']\n }], separatorKeyCodes: [{\n type: Input,\n args: ['matChipInputSeparatorKeyCodes']\n }], chipEnd: [{\n type: Output,\n args: ['matChipInputTokenEnd']\n }], placeholder: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatChipList.\n/** @docs-private */\nconst _MatChipListBase = mixinErrorState(class {\n constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, \n /** @docs-private */\n ngControl) {\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n});\n// Increasing integer for generating unique ids for chip-list components.\nlet nextUniqueId = 0;\n/** Change event object that is emitted when the chip list value has changed. */\nclass MatChipListChange {\n constructor(\n /** Chip list that emitted the event. */\n source, \n /** Value of the chip list when the event was emitted. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/**\n * A material design chips component (named ChipList for its similarity to the List component).\n */\nclass MatChipList extends _MatChipListBase {\n constructor(_elementRef, _changeDetectorRef, _dir, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, ngControl) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.controlType = 'mat-chip-list';\n /**\n * When a chip is destroyed, we store the index of the destroyed chip until the chips\n * query list notifies about the update. This is necessary because we cannot determine an\n * appropriate chip that should receive focus until the array of chips updated completely.\n */\n this._lastDestroyedChipIndex = null;\n /** Subject that emits when the component has been destroyed. */\n this._destroyed = new Subject();\n /** Uid of the chip list */\n this._uid = `mat-chip-list-${nextUniqueId++}`;\n /** Tab index for the chip list. */\n this._tabIndex = 0;\n /**\n * User defined tab index.\n * When it is not null, use user defined tab index. Otherwise use _tabIndex\n */\n this._userTabIndex = null;\n /** Function when touched */\n this._onTouched = () => { };\n /** Function when changed */\n this._onChange = () => { };\n this._multiple = false;\n this._compareWith = (o1, o2) => o1 === o2;\n this._disabled = false;\n /** Orientation of the chip list. */\n this.ariaOrientation = 'horizontal';\n this._selectable = true;\n /** Event emitted when the selected chip list value has been changed by the user. */\n this.change = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the chip-list changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n /** The array of selected chips inside chip list. */\n get selected() {\n var _a, _b;\n return this.multiple ? ((_a = this._selectionModel) === null || _a === void 0 ? void 0 : _a.selected) || [] : (_b = this._selectionModel) === null || _b === void 0 ? void 0 : _b.selected[0];\n }\n /** The ARIA role applied to the chip list. */\n get role() {\n return this.empty ? null : 'listbox';\n }\n /** Whether the user should be allowed to select multiple chips. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n this._multiple = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get value() {\n return this._value;\n }\n set value(value) {\n this.writeValue(value);\n this._value = value;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id() {\n return this._chipInput ? this._chipInput.id : this._uid;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get required() {\n var _a, _b, _c, _d;\n return (_d = (_a = this._required) !== null && _a !== void 0 ? _a : (_c = (_b = this.ngControl) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c.hasValidator(Validators.required)) !== null && _d !== void 0 ? _d : false;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get placeholder() {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /** Whether any chips or the matChipInput inside of this chip-list has focus. */\n get focused() {\n return (this._chipInput && this._chipInput.focused) || this._hasFocusedChip();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty() {\n return (!this._chipInput || this._chipInput.empty) && (!this.chips || this.chips.length === 0);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n return !this.empty || this.focused;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get disabled() {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._syncChipsState();\n }\n /**\n * Whether or not this chip list is selectable. When a chip list is not selectable,\n * the selected states for all the chips inside the chip list are always ignored.\n */\n get selectable() {\n return this._selectable;\n }\n set selectable(value) {\n this._selectable = coerceBooleanProperty(value);\n if (this.chips) {\n this.chips.forEach(chip => (chip.chipListSelectable = this._selectable));\n }\n }\n set tabIndex(value) {\n this._userTabIndex = value;\n this._tabIndex = value;\n }\n /** Combined stream of all of the child chips' selection change events. */\n get chipSelectionChanges() {\n return merge(...this.chips.map(chip => chip.selectionChange));\n }\n /** Combined stream of all of the child chips' focus change events. */\n get chipFocusChanges() {\n return merge(...this.chips.map(chip => chip._onFocus));\n }\n /** Combined stream of all of the child chips' blur change events. */\n get chipBlurChanges() {\n return merge(...this.chips.map(chip => chip._onBlur));\n }\n /** Combined stream of all of the child chips' remove change events. */\n get chipRemoveChanges() {\n return merge(...this.chips.map(chip => chip.destroyed));\n }\n ngAfterContentInit() {\n this._keyManager = new FocusKeyManager(this.chips)\n .withWrap()\n .withVerticalOrientation()\n .withHomeAndEnd()\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr');\n if (this._dir) {\n this._dir.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(dir => this._keyManager.withHorizontalOrientation(dir));\n }\n this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._allowFocusEscape();\n });\n // When the list changes, re-subscribe\n this.chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n if (this.disabled) {\n // Since this happens after the content has been\n // checked, we need to defer it to the next tick.\n Promise.resolve().then(() => {\n this._syncChipsState();\n });\n }\n this._resetChips();\n // Reset chips selected/deselected status\n this._initializeSelection();\n // Check to see if we need to update our tab index\n this._updateTabIndex();\n // Check to see if we have a destroyed chip and need to refocus\n this._updateFocusForDestroyedChips();\n this.stateChanges.next();\n });\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n this.stateChanges.next();\n }\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n if (this.ngControl.disabled !== this._disabled) {\n this.disabled = !!this.ngControl.disabled;\n }\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this.stateChanges.complete();\n this._dropSubscriptions();\n }\n /** Associates an HTML input element with this chip list. */\n registerInput(inputElement) {\n this._chipInput = inputElement;\n // We use this attribute to match the chip list to its input in test harnesses.\n // Set the attribute directly here to avoid \"changed after checked\" errors.\n this._elementRef.nativeElement.setAttribute('data-mat-chip-input', inputElement.id);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n this._ariaDescribedby = ids.join(' ');\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n if (this.chips) {\n this._setSelectionByValue(value, false);\n }\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick(event) {\n if (!this._originatesFromChip(event)) {\n this.focus();\n }\n }\n /**\n * Focuses the first non-disabled chip in this chip list, or the associated input when there\n * are no eligible chips.\n */\n focus(options) {\n if (this.disabled) {\n return;\n }\n // TODO: ARIA says this should focus the first `selected` chip if any are selected.\n // Focus on first element if there's no chipInput inside chip-list\n if (this._chipInput && this._chipInput.focused) {\n // do nothing\n }\n else if (this.chips.length > 0) {\n this._keyManager.setFirstItemActive();\n this.stateChanges.next();\n }\n else {\n this._focusInput(options);\n this.stateChanges.next();\n }\n }\n /** Attempt to focus an input if we have one. */\n _focusInput(options) {\n if (this._chipInput) {\n this._chipInput.focus(options);\n }\n }\n /**\n * Pass events to the keyboard manager. Available here for tests.\n */\n _keydown(event) {\n const target = event.target;\n if (target && target.classList.contains('mat-chip')) {\n this._keyManager.onKeydown(event);\n this.stateChanges.next();\n }\n }\n /**\n * Check the tab index as you should not be allowed to focus an empty list.\n */\n _updateTabIndex() {\n // If we have 0 chips, we should not allow keyboard focus\n this._tabIndex = this._userTabIndex || (this.chips.length === 0 ? -1 : 0);\n }\n /**\n * If the amount of chips changed, we need to update the\n * key manager state and focus the next closest chip.\n */\n _updateFocusForDestroyedChips() {\n // Move focus to the closest chip. If no other chips remain, focus the chip-list itself.\n if (this._lastDestroyedChipIndex != null) {\n if (this.chips.length) {\n const newChipIndex = Math.min(this._lastDestroyedChipIndex, this.chips.length - 1);\n this._keyManager.setActiveItem(newChipIndex);\n }\n else {\n this.focus();\n }\n }\n this._lastDestroyedChipIndex = null;\n }\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of chips.\n */\n _isValidIndex(index) {\n return index >= 0 && index < this.chips.length;\n }\n _setSelectionByValue(value, isUserInput = true) {\n this._clearSelection();\n this.chips.forEach(chip => chip.deselect());\n if (Array.isArray(value)) {\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n this._sortValues();\n }\n else {\n const correspondingChip = this._selectValue(value, isUserInput);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what chip the user interacted with last.\n if (correspondingChip) {\n if (isUserInput) {\n this._keyManager.setActiveItem(correspondingChip);\n }\n }\n }\n }\n /**\n * Finds and selects the chip based on its value.\n * @returns Chip that has the corresponding value.\n */\n _selectValue(value, isUserInput = true) {\n const correspondingChip = this.chips.find(chip => {\n return chip.value != null && this._compareWith(chip.value, value);\n });\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n this._selectionModel.select(correspondingChip);\n }\n return correspondingChip;\n }\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl || this._value) {\n this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._value, false);\n this.stateChanges.next();\n }\n });\n }\n /**\n * Deselects every chip in the list.\n * @param skip Chip that should not be deselected.\n */\n _clearSelection(skip) {\n this._selectionModel.clear();\n this.chips.forEach(chip => {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n this.stateChanges.next();\n }\n /**\n * Sorts the model values, ensuring that they keep the same\n * order that they have in the panel.\n */\n _sortValues() {\n if (this._multiple) {\n this._selectionModel.clear();\n this.chips.forEach(chip => {\n if (chip.selected) {\n this._selectionModel.select(chip);\n }\n });\n this.stateChanges.next();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges(fallbackValue) {\n let valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(chip => chip.value);\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n /** When blurred, mark the field as touched when focus moved outside the chip list. */\n _blur() {\n if (!this._hasFocusedChip()) {\n this._keyManager.setActiveItem(-1);\n }\n if (!this.disabled) {\n if (this._chipInput) {\n // If there's a chip input, we should check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(() => {\n if (!this.focused) {\n this._markAsTouched();\n }\n });\n }\n else {\n // If there's no chip input, then mark the field as touched.\n this._markAsTouched();\n }\n }\n }\n /** Mark the field as touched */\n _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /**\n * Removes the `tabindex` from the chip list and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the list from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n if (this._tabIndex !== -1) {\n this._tabIndex = -1;\n setTimeout(() => {\n this._tabIndex = this._userTabIndex || 0;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n _resetChips() {\n this._dropSubscriptions();\n this._listenToChipsFocus();\n this._listenToChipsSelection();\n this._listenToChipsRemoved();\n }\n _dropSubscriptions() {\n if (this._chipFocusSubscription) {\n this._chipFocusSubscription.unsubscribe();\n this._chipFocusSubscription = null;\n }\n if (this._chipBlurSubscription) {\n this._chipBlurSubscription.unsubscribe();\n this._chipBlurSubscription = null;\n }\n if (this._chipSelectionSubscription) {\n this._chipSelectionSubscription.unsubscribe();\n this._chipSelectionSubscription = null;\n }\n if (this._chipRemoveSubscription) {\n this._chipRemoveSubscription.unsubscribe();\n this._chipRemoveSubscription = null;\n }\n }\n /** Listens to user-generated selection events on each chip. */\n _listenToChipsSelection() {\n this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(event => {\n event.source.selected\n ? this._selectionModel.select(event.source)\n : this._selectionModel.deselect(event.source);\n // For single selection chip list, make sure the deselected value is unselected.\n if (!this.multiple) {\n this.chips.forEach(chip => {\n if (!this._selectionModel.isSelected(chip) && chip.selected) {\n chip.deselect();\n }\n });\n }\n if (event.isUserInput) {\n this._propagateChanges();\n }\n });\n }\n /** Listens to user-generated selection events on each chip. */\n _listenToChipsFocus() {\n this._chipFocusSubscription = this.chipFocusChanges.subscribe(event => {\n let chipIndex = this.chips.toArray().indexOf(event.chip);\n if (this._isValidIndex(chipIndex)) {\n this._keyManager.updateActiveItem(chipIndex);\n }\n this.stateChanges.next();\n });\n this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => {\n this._blur();\n this.stateChanges.next();\n });\n }\n _listenToChipsRemoved() {\n this._chipRemoveSubscription = this.chipRemoveChanges.subscribe(event => {\n const chip = event.chip;\n const chipIndex = this.chips.toArray().indexOf(event.chip);\n // In case the chip that will be removed is currently focused, we temporarily store\n // the index in order to be able to determine an appropriate sibling chip that will\n // receive focus.\n if (this._isValidIndex(chipIndex) && chip._hasFocus) {\n this._lastDestroyedChipIndex = chipIndex;\n }\n });\n }\n /** Checks whether an event comes from inside a chip element. */\n _originatesFromChip(event) {\n let currentElement = event.target;\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\n if (currentElement.classList.contains('mat-chip')) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n return false;\n }\n /** Checks whether any of the chips is focused. */\n _hasFocusedChip() {\n return this.chips && this.chips.some(chip => chip._hasFocus);\n }\n /** Syncs the list's state with the individual chips. */\n _syncChipsState() {\n if (this.chips) {\n this.chips.forEach(chip => {\n chip._chipListDisabled = this._disabled;\n chip._chipListMultiple = this.multiple;\n });\n }\n }\n}\nMatChipList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipList, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.Directionality, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });\nMatChipList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatChipList, selector: \"mat-chip-list\", inputs: { errorStateMatcher: \"errorStateMatcher\", multiple: \"multiple\", compareWith: \"compareWith\", value: \"value\", required: \"required\", placeholder: \"placeholder\", disabled: \"disabled\", ariaOrientation: [\"aria-orientation\", \"ariaOrientation\"], selectable: \"selectable\", tabIndex: \"tabIndex\" }, outputs: { change: \"change\", valueChange: \"valueChange\" }, host: { listeners: { \"focus\": \"focus()\", \"blur\": \"_blur()\", \"keydown\": \"_keydown($event)\" }, properties: { \"attr.tabindex\": \"disabled ? null : _tabIndex\", \"attr.aria-describedby\": \"_ariaDescribedby || null\", \"attr.aria-required\": \"role ? required : null\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.aria-invalid\": \"errorState\", \"attr.aria-multiselectable\": \"multiple\", \"attr.role\": \"role\", \"class.mat-chip-list-disabled\": \"disabled\", \"class.mat-chip-list-invalid\": \"errorState\", \"class.mat-chip-list-required\": \"required\", \"attr.aria-orientation\": \"ariaOrientation\", \"id\": \"_uid\" }, classAttribute: \"mat-chip-list\" }, providers: [{ provide: MatFormFieldControl, useExisting: MatChipList }], queries: [{ propertyName: \"chips\", predicate: MatChip, descendants: true }], exportAs: [\"matChipList\"], usesInheritance: true, ngImport: i0, template: `
`, isInline: true, styles: [\".mat-chip{position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;border:none;-webkit-appearance:none;-moz-appearance:none}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:inline-flex;padding:7px 12px;border-radius:16px;align-items:center;cursor:default;min-height:32px;height:1px}._mat-animation-noopable.mat-standard-chip{transition:none;animation:none}.mat-standard-chip .mat-chip-remove{border:none;-webkit-appearance:none;-moz-appearance:none;padding:0;background:none}.mat-standard-chip .mat-chip-remove.mat-icon,.mat-standard-chip .mat-chip-remove .mat-icon{width:18px;height:18px;font-size:18px}.mat-standard-chip::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;opacity:0;content:\\\"\\\";pointer-events:none;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-standard-chip:hover::after{opacity:.12}.mat-standard-chip:focus{outline:none}.mat-standard-chip:focus::after{opacity:.16}.cdk-high-contrast-active .mat-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-standard-chip:focus{outline:dotted 2px}.cdk-high-contrast-active .mat-standard-chip.mat-chip-selected{outline-width:3px}.mat-standard-chip.mat-chip-disabled::after{opacity:0}.mat-standard-chip.mat-chip-disabled .mat-chip-remove,.mat-standard-chip.mat-chip-disabled .mat-chip-trailing-icon{cursor:default}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar,.mat-standard-chip.mat-chip-with-avatar{padding-top:0;padding-bottom:0}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-right:8px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:8px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:8px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:8px;padding-right:12px}.mat-standard-chip.mat-chip-with-avatar{padding-left:0;padding-right:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-avatar{padding-right:0;padding-left:12px}.mat-standard-chip .mat-chip-avatar{width:24px;height:24px;margin-right:8px;margin-left:4px}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:4px}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{width:18px;height:18px;cursor:pointer}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:8px;margin-left:0}.mat-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit;overflow:hidden;transform:translateZ(0)}.mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;margin:-4px}.mat-chip-list-wrapper input.mat-input-element,.mat-chip-list-wrapper .mat-standard-chip{margin:4px}.mat-chip-list-stacked .mat-chip-list-wrapper{flex-direction:column;align-items:flex-start}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-standard-chip{width:100%}.mat-chip-avatar{border-radius:50%;justify-content:center;align-items:center;display:flex;overflow:hidden;object-fit:cover}input.mat-chip-input{width:150px;margin:4px;flex:1 0 150px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipList, decorators: [{\n type: Component,\n args: [{ selector: 'mat-chip-list', template: `
`, exportAs: 'matChipList', host: {\n '[attr.tabindex]': 'disabled ? null : _tabIndex',\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'role ? required : null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.role]': 'role',\n '[class.mat-chip-list-disabled]': 'disabled',\n '[class.mat-chip-list-invalid]': 'errorState',\n '[class.mat-chip-list-required]': 'required',\n '[attr.aria-orientation]': 'ariaOrientation',\n 'class': 'mat-chip-list',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n '[id]': '_uid',\n }, providers: [{ provide: MatFormFieldControl, useExisting: MatChipList }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-chip{position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;border:none;-webkit-appearance:none;-moz-appearance:none}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:inline-flex;padding:7px 12px;border-radius:16px;align-items:center;cursor:default;min-height:32px;height:1px}._mat-animation-noopable.mat-standard-chip{transition:none;animation:none}.mat-standard-chip .mat-chip-remove{border:none;-webkit-appearance:none;-moz-appearance:none;padding:0;background:none}.mat-standard-chip .mat-chip-remove.mat-icon,.mat-standard-chip .mat-chip-remove .mat-icon{width:18px;height:18px;font-size:18px}.mat-standard-chip::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;opacity:0;content:\\\"\\\";pointer-events:none;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-standard-chip:hover::after{opacity:.12}.mat-standard-chip:focus{outline:none}.mat-standard-chip:focus::after{opacity:.16}.cdk-high-contrast-active .mat-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-standard-chip:focus{outline:dotted 2px}.cdk-high-contrast-active .mat-standard-chip.mat-chip-selected{outline-width:3px}.mat-standard-chip.mat-chip-disabled::after{opacity:0}.mat-standard-chip.mat-chip-disabled .mat-chip-remove,.mat-standard-chip.mat-chip-disabled .mat-chip-trailing-icon{cursor:default}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar,.mat-standard-chip.mat-chip-with-avatar{padding-top:0;padding-bottom:0}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-right:8px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:8px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:8px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:8px;padding-right:12px}.mat-standard-chip.mat-chip-with-avatar{padding-left:0;padding-right:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-avatar{padding-right:0;padding-left:12px}.mat-standard-chip .mat-chip-avatar{width:24px;height:24px;margin-right:8px;margin-left:4px}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:4px}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{width:18px;height:18px;cursor:pointer}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:8px;margin-left:0}.mat-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit;overflow:hidden;transform:translateZ(0)}.mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;margin:-4px}.mat-chip-list-wrapper input.mat-input-element,.mat-chip-list-wrapper .mat-standard-chip{margin:4px}.mat-chip-list-stacked .mat-chip-list-wrapper{flex-direction:column;align-items:flex-start}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-standard-chip{width:100%}.mat-chip-avatar{border-radius:50%;justify-content:center;align-items:center;display:flex;overflow:hidden;object-fit:cover}input.mat-chip-input{width:150px;margin:4px;flex:1 0 150px}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i3.ErrorStateMatcher }, { type: i2.NgControl, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }];\n }, propDecorators: { errorStateMatcher: [{\n type: Input\n }], multiple: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], value: [{\n type: Input\n }], required: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], disabled: [{\n type: Input\n }], ariaOrientation: [{\n type: Input,\n args: ['aria-orientation']\n }], selectable: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], change: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], chips: [{\n type: ContentChildren,\n args: [MatChip, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst CHIP_DECLARATIONS = [\n MatChipList,\n MatChip,\n MatChipInput,\n MatChipRemove,\n MatChipAvatar,\n MatChipTrailingIcon,\n];\nclass MatChipsModule {\n}\nMatChipsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatChipsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipsModule, declarations: [MatChipList,\n MatChip,\n MatChipInput,\n MatChipRemove,\n MatChipAvatar,\n MatChipTrailingIcon], imports: [MatCommonModule], exports: [MatChipList,\n MatChip,\n MatChipInput,\n MatChipRemove,\n MatChipAvatar,\n MatChipTrailingIcon] });\nMatChipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipsModule, providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER],\n },\n },\n ], imports: [[MatCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatChipsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: CHIP_DECLARATIONS,\n declarations: CHIP_DECLARATIONS,\n providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER],\n },\n },\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CHIPS_DEFAULT_OPTIONS, MAT_CHIP_AVATAR, MAT_CHIP_REMOVE, MAT_CHIP_TRAILING_ICON, MatChip, MatChipAvatar, MatChipInput, MatChipList, MatChipListChange, MatChipRemove, MatChipSelectionChange, MatChipTrailingIcon, MatChipsModule };\n","import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n this.cdkAutofill = new EventEmitter();\n }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n constructor(_elementRef, _platform, _ngZone, \n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n this._handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n value = coerceBooleanProperty(value);\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n if (value) {\n this._textareaElement.setAttribute('placeholder', value);\n }\n else {\n this._textareaElement.removeAttribute('placeholder');\n }\n this._cacheTextareaPlaceholderHeight();\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n exports: [CdkAutofill, CdkTextareaAutosize],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Optional, Self, Inject, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/forms';\nimport { Validators } from '@angular/forms';\nimport * as i3 from '@angular/material/core';\nimport { mixinErrorState, MatCommonModule, ErrorStateMatcher } from '@angular/material/core';\nimport * as i5 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\nimport * as i4 from '@angular/cdk/text-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction getMatInputUnsupportedTypeError(type) {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nconst MAT_INPUT_VALUE_ACCESSOR = new InjectionToken('MAT_INPUT_VALUE_ACCESSOR');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\nlet nextUniqueId = 0;\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, \n /** @docs-private */\n ngControl) {\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n }\n});\n/** Directive that allows a native input to work inside a `MatFormField`. */\nclass MatInput extends _MatInputBase {\n constructor(_elementRef, _platform, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, ngZone, \n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form-field for determining whether the placeholder has been promoted.\n _formField) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._autofillMonitor = _autofillMonitor;\n this._formField = _formField;\n this._uid = `mat-input-${nextUniqueId++}`;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.focused = false;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.stateChanges = new Subject();\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.controlType = 'mat-input';\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.autofilled = false;\n this._disabled = false;\n this._type = 'text';\n this._readonly = false;\n this._neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n this._iOSKeyupListener = (event) => {\n const el = event.target;\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n this._previousNativeValue = this.value;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', this._iOSKeyupListener);\n });\n }\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n if (this._isNativeSelect) {\n this.controlType = element.multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get disabled() {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get required() {\n var _a, _b, _c, _d;\n return (_d = (_a = this._required) !== null && _a !== void 0 ? _a : (_c = (_b = this.ngControl) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c.hasValidator(Validators.required)) !== null && _d !== void 0 ? _d : false;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /** Input type of the element. */\n get type() {\n return this._type;\n }\n set type(value) {\n this._type = value || 'text';\n this._validateType();\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n this._elementRef.nativeElement.type = this._type;\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get value() {\n return this._inputValueAccessor.value;\n }\n set value(value) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n /** Whether the element is readonly. */\n get readonly() {\n return this._readonly;\n }\n set readonly(value) {\n this._readonly = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n ngOnChanges() {\n this.stateChanges.next();\n }\n ngOnDestroy() {\n this.stateChanges.complete();\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n if (this._platform.IOS) {\n this._elementRef.nativeElement.removeEventListener('keyup', this._iOSKeyupListener);\n }\n }\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n /** Focuses the input. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n _dirtyCheckPlaceholder() {\n var _a, _b;\n // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise\n // screen readers will read it out twice: once from the label and once from the attribute.\n // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's\n // the only one that supports promoting the placeholder to a label.\n const placeholder = ((_b = (_a = this._formField) === null || _a === void 0 ? void 0 : _a._hideControlPlaceholder) === null || _b === void 0 ? void 0 : _b.call(_a)) ? null : this.placeholder;\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n /** Does some manual dirty checking on the native input `value` property. */\n _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n /** Make sure the input is a supported type. */\n _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n /** Checks whether the input type is one of the types that are never empty. */\n _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n /** Checks whether the input is invalid based on the native validation. */\n _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = this._elementRef.nativeElement.validity;\n return validity && validity.badInput;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty() {\n return (!this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n if (this._isNativeSelect) {\n // For a single-selection ``, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement;\n const firstOption = selectElement.options[0];\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label));\n }\n else {\n return this.focused || !this.empty;\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n }\n else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect() {\n const element = this._elementRef.nativeElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n}\nMatInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInput, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MAT_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i4.AutofillMonitor }, { token: i0.NgZone }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl],\\n input[matNativeControl], textarea[matNativeControl]\", inputs: { disabled: \"disabled\", id: \"id\", placeholder: \"placeholder\", name: \"name\", required: \"required\", type: \"type\", errorStateMatcher: \"errorStateMatcher\", userAriaDescribedBy: [\"aria-describedby\", \"userAriaDescribedBy\"], value: \"value\", readonly: \"readonly\" }, host: { listeners: { \"focus\": \"_focusChanged(true)\", \"blur\": \"_focusChanged(false)\", \"input\": \"_onInput()\" }, properties: { \"class.mat-input-server\": \"_isServer\", \"attr.id\": \"id\", \"attr.data-placeholder\": \"placeholder\", \"disabled\": \"disabled\", \"required\": \"required\", \"attr.name\": \"name || null\", \"attr.readonly\": \"readonly && !_isNativeSelect || null\", \"class.mat-native-select-inline\": \"_isInlineSelect()\", \"attr.aria-invalid\": \"(empty && required) ? null : errorState\", \"attr.aria-required\": \"required\" }, classAttribute: \"mat-input-element mat-form-field-autofill-control\" }, providers: [{ provide: MatFormFieldControl, useExisting: MatInput }], exportAs: [\"matInput\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInput, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n // At the time of writing, we have a lot of customer tests that look up the input based on its\n // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen\n // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.\n '[attr.data-placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n '[class.mat-native-select-inline]': '_isInlineSelect()',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i2.NgControl, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: i2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [MAT_INPUT_VALUE_ACCESSOR]\n }] }, { type: i4.AutofillMonitor }, { type: i0.NgZone }, { type: i5.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }];\n }, propDecorators: { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], type: [{\n type: Input\n }], errorStateMatcher: [{\n type: Input\n }], userAriaDescribedBy: [{\n type: Input,\n args: ['aria-describedby']\n }], value: [{\n type: Input\n }], readonly: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatInputModule {\n}\nMatInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInputModule, declarations: [MatInput], imports: [TextFieldModule, MatFormFieldModule, MatCommonModule], exports: [TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput] });\nMatInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInputModule, providers: [ErrorStateMatcher], imports: [[TextFieldModule, MatFormFieldModule, MatCommonModule], TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MatInput],\n imports: [TextFieldModule, MatFormFieldModule, MatCommonModule],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n ],\n providers: [ErrorStateMatcher],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_INPUT_VALUE_ACCESSOR, MatInput, MatInputModule, getMatInputUnsupportedTypeError };\n","import * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Attribute, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { mixinTabIndex, mixinColor, mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, DOWN_ARROW, RIGHT_ARROW, UP_ARROW, LEFT_ARROW, HOME, END, PAGE_DOWN, PAGE_UP } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { Subscription } from 'rxjs';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i2 from '@angular/cdk/bidi';\n\nconst activeEventOptions = normalizePassiveListenerOptions({ passive: false });\n/**\n * Visually, a 30px separation between tick marks looks best. This is very subjective but it is\n * the default separation we chose.\n */\nconst MIN_AUTO_TICK_SEPARATION = 30;\n/** The thumb gap size for a disabled slider. */\nconst DISABLED_THUMB_GAP = 7;\n/** The thumb gap size for a non-active slider at its minimum value. */\nconst MIN_VALUE_NONACTIVE_THUMB_GAP = 7;\n/** The thumb gap size for an active slider at its minimum value. */\nconst MIN_VALUE_ACTIVE_THUMB_GAP = 10;\n/**\n * Provider Expression that allows mat-slider to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and [formControl].\n * @docs-private\n */\nconst MAT_SLIDER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlider),\n multi: true,\n};\n/** A simple change event emitted by the MatSlider component. */\nclass MatSliderChange {\n}\n// Boilerplate for applying mixins to MatSlider.\n/** @docs-private */\nconst _MatSliderBase = mixinTabIndex(mixinColor(mixinDisabled(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}), 'accent'));\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `` element.\n */\nclass MatSlider extends _MatSliderBase {\n constructor(elementRef, _focusMonitor, _changeDetectorRef, _dir, tabIndex, _ngZone, _document, _animationMode) {\n super(elementRef);\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._invert = false;\n this._max = 100;\n this._min = 0;\n this._step = 1;\n this._thumbLabel = false;\n this._tickInterval = 0;\n this._value = null;\n this._vertical = false;\n /** Event emitted when the slider value has changed. */\n this.change = new EventEmitter();\n /** Event emitted when the slider thumb moves. */\n this.input = new EventEmitter();\n /**\n * Emits when the raw value of the slider changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n this.onTouched = () => { };\n this._percent = 0;\n /**\n * Whether or not the thumb is sliding and what the user is using to slide it with.\n * Used to determine if there should be a transition for the thumb and fill track.\n */\n this._isSliding = null;\n /**\n * Whether or not the slider is active (clicked or sliding).\n * Used to shrink and grow the thumb as according to the Material Design spec.\n */\n this._isActive = false;\n /** The size of a tick interval as a percentage of the size of the track. */\n this._tickIntervalPercent = 0;\n /** The dimensions of the slider. */\n this._sliderDimensions = null;\n this._controlValueAccessorChangeFn = () => { };\n /** Subscription to the Directionality change EventEmitter. */\n this._dirChangeSubscription = Subscription.EMPTY;\n /** Called when the user has put their pointer down on the slider. */\n this._pointerDown = (event) => {\n // Don't do anything if the slider is disabled or the\n // user is using anything other than the main mouse button.\n if (this.disabled || this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n this._ngZone.run(() => {\n this._touchId = isTouchEvent(event)\n ? getTouchIdForSlider(event, this._elementRef.nativeElement)\n : undefined;\n const pointerPosition = getPointerPositionOnPage(event, this._touchId);\n if (pointerPosition) {\n const oldValue = this.value;\n this._isSliding = 'pointer';\n this._lastPointerEvent = event;\n this._focusHostElement();\n this._onMouseenter(); // Simulate mouseenter in case this is a mobile device.\n this._bindGlobalEvents(event);\n this._focusHostElement();\n this._updateValueFromPosition(pointerPosition);\n this._valueOnSlideStart = oldValue;\n // Despite the fact that we explicitly bind active events, in some cases the browser\n // still dispatches non-cancelable events which cause this call to throw an error.\n // There doesn't appear to be a good way of avoiding them. See #23820.\n if (event.cancelable) {\n event.preventDefault();\n }\n // Emit a change and input event if the value changed.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n }\n });\n };\n /**\n * Called when the user has moved their pointer after\n * starting to drag. Bound on the document level.\n */\n this._pointerMove = (event) => {\n if (this._isSliding === 'pointer') {\n const pointerPosition = getPointerPositionOnPage(event, this._touchId);\n if (pointerPosition) {\n // Prevent the slide from selecting anything else.\n event.preventDefault();\n const oldValue = this.value;\n this._lastPointerEvent = event;\n this._updateValueFromPosition(pointerPosition);\n // Native range elements always emit `input` events when the value changed while sliding.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n }\n }\n };\n /** Called when the user has lifted their pointer. Bound on the document level. */\n this._pointerUp = (event) => {\n if (this._isSliding === 'pointer') {\n if (!isTouchEvent(event) ||\n typeof this._touchId !== 'number' ||\n // Note that we use `changedTouches`, rather than `touches` because it\n // seems like in most cases `touches` is empty for `touchend` events.\n findMatchingTouch(event.changedTouches, this._touchId)) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._isSliding = null;\n this._touchId = undefined;\n if (this._valueOnSlideStart != this.value && !this.disabled) {\n this._emitChangeEvent();\n }\n this._valueOnSlideStart = this._lastPointerEvent = null;\n }\n }\n };\n /** Called when the window has lost focus. */\n this._windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n };\n this._document = _document;\n this.tabIndex = parseInt(tabIndex) || 0;\n _ngZone.runOutsideAngular(() => {\n const element = elementRef.nativeElement;\n element.addEventListener('mousedown', this._pointerDown, activeEventOptions);\n element.addEventListener('touchstart', this._pointerDown, activeEventOptions);\n });\n }\n /** Whether the slider is inverted. */\n get invert() {\n return this._invert;\n }\n set invert(value) {\n this._invert = coerceBooleanProperty(value);\n }\n /** The maximum value that the slider can have. */\n get max() {\n return this._max;\n }\n set max(v) {\n this._max = coerceNumberProperty(v, this._max);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n /** The minimum value that the slider can have. */\n get min() {\n return this._min;\n }\n set min(v) {\n this._min = coerceNumberProperty(v, this._min);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n /** The values at which the thumb will snap. */\n get step() {\n return this._step;\n }\n set step(v) {\n this._step = coerceNumberProperty(v, this._step);\n if (this._step % 1 !== 0) {\n this._roundToDecimal = this._step.toString().split('.').pop().length;\n }\n // Since this could modify the label, we need to notify the change detection.\n this._changeDetectorRef.markForCheck();\n }\n /** Whether or not to show the thumb label. */\n get thumbLabel() {\n return this._thumbLabel;\n }\n set thumbLabel(value) {\n this._thumbLabel = coerceBooleanProperty(value);\n }\n /**\n * How often to show ticks. Relative to the step so that a tick always appears on a step.\n * Ex: Tick interval of 4 with a step of 3 will draw a tick every 4 steps (every 12 values).\n */\n get tickInterval() {\n return this._tickInterval;\n }\n set tickInterval(value) {\n if (value === 'auto') {\n this._tickInterval = 'auto';\n }\n else if (typeof value === 'number' || typeof value === 'string') {\n this._tickInterval = coerceNumberProperty(value, this._tickInterval);\n }\n else {\n this._tickInterval = 0;\n }\n }\n /** Value of the slider. */\n get value() {\n // If the value needs to be read and it is still uninitialized, initialize it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n return this._value;\n }\n set value(v) {\n if (v !== this._value) {\n let value = coerceNumberProperty(v, 0);\n // While incrementing by a decimal we can end up with values like 33.300000000000004.\n // Truncate it to ensure that it matches the label and to make it easier to work with.\n if (this._roundToDecimal && value !== this.min && value !== this.max) {\n value = parseFloat(value.toFixed(this._roundToDecimal));\n }\n this._value = value;\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the slider is vertical. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** The value to be used for display purposes. */\n get displayValue() {\n if (this.displayWith) {\n // Value is never null but since setters and getters cannot have\n // different types, the value getter is also typed to return null.\n return this.displayWith(this.value);\n }\n // Note that this could be improved further by rounding something like 0.999 to 1 or\n // 0.899 to 0.9, however it is very performance sensitive, because it gets called on\n // every change detection cycle.\n if (this._roundToDecimal && this.value && this.value % 1 !== 0) {\n return this.value.toFixed(this._roundToDecimal);\n }\n return this.value || 0;\n }\n /** set focus to the host element */\n focus(options) {\n this._focusHostElement(options);\n }\n /** blur the host element */\n blur() {\n this._blurHostElement();\n }\n /** The percentage of the slider that coincides with the value. */\n get percent() {\n return this._clamp(this._percent);\n }\n /**\n * Whether the axis of the slider is inverted.\n * (i.e. whether moving the thumb in the positive x or y direction decreases the slider's value).\n */\n _shouldInvertAxis() {\n // Standard non-inverted mode for a vertical slider should be dragging the thumb from bottom to\n // top. However from a y-axis standpoint this is inverted.\n return this.vertical ? !this.invert : this.invert;\n }\n /** Whether the slider is at its minimum value. */\n _isMinValue() {\n return this.percent === 0;\n }\n /**\n * The amount of space to leave between the slider thumb and the track fill & track background\n * elements.\n */\n _getThumbGap() {\n if (this.disabled) {\n return DISABLED_THUMB_GAP;\n }\n if (this._isMinValue() && !this.thumbLabel) {\n return this._isActive ? MIN_VALUE_ACTIVE_THUMB_GAP : MIN_VALUE_NONACTIVE_THUMB_GAP;\n }\n return 0;\n }\n /** CSS styles for the track background element. */\n _getTrackBackgroundStyles() {\n const axis = this.vertical ? 'Y' : 'X';\n const scale = this.vertical ? `1, ${1 - this.percent}, 1` : `${1 - this.percent}, 1, 1`;\n const sign = this._shouldInvertMouseCoords() ? '-' : '';\n return {\n // scale3d avoids some rendering issues in Chrome. See #12071.\n transform: `translate${axis}(${sign}${this._getThumbGap()}px) scale3d(${scale})`,\n };\n }\n /** CSS styles for the track fill element. */\n _getTrackFillStyles() {\n const percent = this.percent;\n const axis = this.vertical ? 'Y' : 'X';\n const scale = this.vertical ? `1, ${percent}, 1` : `${percent}, 1, 1`;\n const sign = this._shouldInvertMouseCoords() ? '' : '-';\n return {\n // scale3d avoids some rendering issues in Chrome. See #12071.\n transform: `translate${axis}(${sign}${this._getThumbGap()}px) scale3d(${scale})`,\n // iOS Safari has a bug where it won't re-render elements which start of as `scale(0)` until\n // something forces a style recalculation on it. Since we'll end up with `scale(0)` when\n // the value of the slider is 0, we can easily get into this situation. We force a\n // recalculation by changing the element's `display` when it goes from 0 to any other value.\n display: percent === 0 ? 'none' : '',\n };\n }\n /** CSS styles for the ticks container element. */\n _getTicksContainerStyles() {\n let axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the ticks container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n let sign = !this.vertical && this._getDirection() == 'rtl' ? '' : '-';\n let offset = (this._tickIntervalPercent / 2) * 100;\n return {\n 'transform': `translate${axis}(${sign}${offset}%)`,\n };\n }\n /** CSS styles for the ticks element. */\n _getTicksStyles() {\n let tickSize = this._tickIntervalPercent * 100;\n let backgroundSize = this.vertical ? `2px ${tickSize}%` : `${tickSize}% 2px`;\n let axis = this.vertical ? 'Y' : 'X';\n // Depending on the direction we pushed the ticks container, push the ticks the opposite\n // direction to re-center them but clip off the end edge. In RTL languages we need to flip the\n // ticks 180 degrees so we're really cutting off the end edge abd not the start.\n let sign = !this.vertical && this._getDirection() == 'rtl' ? '-' : '';\n let rotate = !this.vertical && this._getDirection() == 'rtl' ? ' rotate(180deg)' : '';\n let styles = {\n 'backgroundSize': backgroundSize,\n // Without translateZ ticks sometimes jitter as the slider moves on Chrome & Firefox.\n 'transform': `translateZ(0) translate${axis}(${sign}${tickSize / 2}%)${rotate}`,\n };\n if (this._isMinValue() && this._getThumbGap()) {\n const shouldInvertAxis = this._shouldInvertAxis();\n let side;\n if (this.vertical) {\n side = shouldInvertAxis ? 'Bottom' : 'Top';\n }\n else {\n side = shouldInvertAxis ? 'Right' : 'Left';\n }\n styles[`padding${side}`] = `${this._getThumbGap()}px`;\n }\n return styles;\n }\n _getThumbContainerStyles() {\n const shouldInvertAxis = this._shouldInvertAxis();\n let axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the thumb container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n let invertOffset = this._getDirection() == 'rtl' && !this.vertical ? !shouldInvertAxis : shouldInvertAxis;\n let offset = (invertOffset ? this.percent : 1 - this.percent) * 100;\n return {\n 'transform': `translate${axis}(-${offset}%)`,\n };\n }\n /**\n * Whether mouse events should be converted to a slider position by calculating their distance\n * from the right or bottom edge of the slider as opposed to the top or left.\n */\n _shouldInvertMouseCoords() {\n const shouldInvertAxis = this._shouldInvertAxis();\n return this._getDirection() == 'rtl' && !this.vertical ? !shouldInvertAxis : shouldInvertAxis;\n }\n /** The language direction for this slider element. */\n _getDirection() {\n return this._dir && this._dir.value == 'rtl' ? 'rtl' : 'ltr';\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe((origin) => {\n this._isActive = !!origin && origin !== 'keyboard';\n this._changeDetectorRef.detectChanges();\n });\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('mousedown', this._pointerDown, activeEventOptions);\n element.removeEventListener('touchstart', this._pointerDown, activeEventOptions);\n this._lastPointerEvent = null;\n this._removeGlobalEvents();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._dirChangeSubscription.unsubscribe();\n }\n _onMouseenter() {\n if (this.disabled) {\n return;\n }\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n }\n _onFocus() {\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n }\n _onBlur() {\n this.onTouched();\n }\n _onKeydown(event) {\n if (this.disabled ||\n hasModifierKey(event) ||\n (this._isSliding && this._isSliding !== 'keyboard')) {\n return;\n }\n const oldValue = this.value;\n switch (event.keyCode) {\n case PAGE_UP:\n this._increment(10);\n break;\n case PAGE_DOWN:\n this._increment(-10);\n break;\n case END:\n this.value = this.max;\n break;\n case HOME:\n this.value = this.min;\n break;\n case LEFT_ARROW:\n // NOTE: For a sighted user it would make more sense that when they press an arrow key on an\n // inverted slider the thumb moves in that direction. However for a blind user, nothing\n // about the slider indicates that it is inverted. They will expect left to be decrement,\n // regardless of how it appears on the screen. For speakers ofRTL languages, they probably\n // expect left to mean increment. Therefore we flip the meaning of the side arrow keys for\n // RTL. For inverted sliders we prefer a good a11y experience to having it \"look right\" for\n // sighted users, therefore we do not swap the meaning.\n this._increment(this._getDirection() == 'rtl' ? 1 : -1);\n break;\n case UP_ARROW:\n this._increment(1);\n break;\n case RIGHT_ARROW:\n // See comment on LEFT_ARROW about the conditions under which we flip the meaning.\n this._increment(this._getDirection() == 'rtl' ? -1 : 1);\n break;\n case DOWN_ARROW:\n this._increment(-1);\n break;\n default:\n // Return if the key is not one that we explicitly handle to avoid calling preventDefault on\n // it.\n return;\n }\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n this._isSliding = 'keyboard';\n event.preventDefault();\n }\n _onKeyup() {\n if (this._isSliding === 'keyboard') {\n this._isSliding = null;\n }\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /**\n * Binds our global move and end events. They're bound at the document level and only while\n * dragging so that the user doesn't have to keep their pointer exactly over the slider\n * as they're swiping across the screen.\n */\n _bindGlobalEvents(triggerEvent) {\n // Note that we bind the events to the `document`, because it allows us to capture\n // drag cancel events where the user's pointer is outside the browser window.\n const document = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? 'touchmove' : 'mousemove';\n const endEventName = isTouch ? 'touchend' : 'mouseup';\n document.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n document.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n if (isTouch) {\n document.addEventListener('touchcancel', this._pointerUp, activeEventOptions);\n }\n const window = this._getWindow();\n if (typeof window !== 'undefined' && window) {\n window.addEventListener('blur', this._windowBlur);\n }\n }\n /** Removes any global event listeners that we may have added. */\n _removeGlobalEvents() {\n const document = this._document;\n document.removeEventListener('mousemove', this._pointerMove, activeEventOptions);\n document.removeEventListener('mouseup', this._pointerUp, activeEventOptions);\n document.removeEventListener('touchmove', this._pointerMove, activeEventOptions);\n document.removeEventListener('touchend', this._pointerUp, activeEventOptions);\n document.removeEventListener('touchcancel', this._pointerUp, activeEventOptions);\n const window = this._getWindow();\n if (typeof window !== 'undefined' && window) {\n window.removeEventListener('blur', this._windowBlur);\n }\n }\n /** Increments the slider by the given number of steps (negative number decrements). */\n _increment(numSteps) {\n // Pre-clamp the current value since it's allowed to be\n // out of bounds when assigned programmatically.\n const clampedValue = this._clamp(this.value || 0, this.min, this.max);\n this.value = this._clamp(clampedValue + this.step * numSteps, this.min, this.max);\n }\n /** Calculate the new value from the new physical location. The value will always be snapped. */\n _updateValueFromPosition(pos) {\n if (!this._sliderDimensions) {\n return;\n }\n let offset = this.vertical ? this._sliderDimensions.top : this._sliderDimensions.left;\n let size = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n let posComponent = this.vertical ? pos.y : pos.x;\n // The exact value is calculated from the event and used to find the closest snap value.\n let percent = this._clamp((posComponent - offset) / size);\n if (this._shouldInvertMouseCoords()) {\n percent = 1 - percent;\n }\n // Since the steps may not divide cleanly into the max value, if the user\n // slid to 0 or 100 percent, we jump to the min/max value. This approach\n // is slightly more intuitive than using `Math.ceil` below, because it\n // follows the user's pointer closer.\n if (percent === 0) {\n this.value = this.min;\n }\n else if (percent === 1) {\n this.value = this.max;\n }\n else {\n const exactValue = this._calculateValue(percent);\n // This calculation finds the closest step by finding the closest\n // whole number divisible by the step relative to the min.\n const closestValue = Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n // The value needs to snap to the min and max.\n this.value = this._clamp(closestValue, this.min, this.max);\n }\n }\n /** Emits a change event if the current value is different from the last emitted value. */\n _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.value);\n this.valueChange.emit(this.value);\n this.change.emit(this._createChangeEvent());\n }\n /** Emits an input event when the current value is different from the last emitted value. */\n _emitInputEvent() {\n this.input.emit(this._createChangeEvent());\n }\n /** Updates the amount of space between ticks as a percentage of the width of the slider. */\n _updateTickIntervalPercent() {\n if (!this.tickInterval || !this._sliderDimensions) {\n return;\n }\n let tickIntervalPercent;\n if (this.tickInterval == 'auto') {\n let trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n let pixelsPerStep = (trackSize * this.step) / (this.max - this.min);\n let stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep);\n let pixelsPerTick = stepsPerTick * this.step;\n tickIntervalPercent = pixelsPerTick / trackSize;\n }\n else {\n tickIntervalPercent = (this.tickInterval * this.step) / (this.max - this.min);\n }\n this._tickIntervalPercent = isSafeNumber(tickIntervalPercent) ? tickIntervalPercent : 0;\n }\n /** Creates a slider change object from the specified value. */\n _createChangeEvent(value = this.value) {\n let event = new MatSliderChange();\n event.source = this;\n event.value = value;\n return event;\n }\n /** Calculates the percentage of the slider that a value is. */\n _calculatePercentage(value) {\n const percentage = ((value || 0) - this.min) / (this.max - this.min);\n return isSafeNumber(percentage) ? percentage : 0;\n }\n /** Calculates the value a percentage of the slider corresponds to. */\n _calculateValue(percentage) {\n return this.min + percentage * (this.max - this.min);\n }\n /** Return a number between two numbers. */\n _clamp(value, min = 0, max = 1) {\n return Math.max(min, Math.min(value, max));\n }\n /**\n * Get the bounding client rect of the slider track element.\n * The track is used rather than the native element to ignore the extra space that the thumb can\n * take up.\n */\n _getSliderDimensions() {\n return this._sliderWrapper ? this._sliderWrapper.nativeElement.getBoundingClientRect() : null;\n }\n /**\n * Focuses the native element.\n * Currently only used to allow a blur event to fire but will be used with keyboard input later.\n */\n _focusHostElement(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Blurs the native element. */\n _blurHostElement() {\n this._elementRef.nativeElement.blur();\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * Registers a callback to be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n /**\n * Registers a callback to be triggered when the component is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n}\nMatSlider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSlider, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i2.Directionality, optional: true }, { token: 'tabindex', attribute: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatSlider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatSlider, selector: \"mat-slider\", inputs: { disabled: \"disabled\", color: \"color\", tabIndex: \"tabIndex\", invert: \"invert\", max: \"max\", min: \"min\", step: \"step\", thumbLabel: \"thumbLabel\", tickInterval: \"tickInterval\", value: \"value\", displayWith: \"displayWith\", valueText: \"valueText\", vertical: \"vertical\" }, outputs: { change: \"change\", input: \"input\", valueChange: \"valueChange\" }, host: { attributes: { \"role\": \"slider\" }, listeners: { \"focus\": \"_onFocus()\", \"blur\": \"_onBlur()\", \"keydown\": \"_onKeydown($event)\", \"keyup\": \"_onKeyup()\", \"mouseenter\": \"_onMouseenter()\", \"selectstart\": \"$event.preventDefault()\" }, properties: { \"tabIndex\": \"tabIndex\", \"attr.aria-disabled\": \"disabled\", \"attr.aria-valuemax\": \"max\", \"attr.aria-valuemin\": \"min\", \"attr.aria-valuenow\": \"value\", \"attr.aria-valuetext\": \"valueText == null ? displayValue : valueText\", \"attr.aria-orientation\": \"vertical ? \\\"vertical\\\" : \\\"horizontal\\\"\", \"class.mat-slider-disabled\": \"disabled\", \"class.mat-slider-has-ticks\": \"tickInterval\", \"class.mat-slider-horizontal\": \"!vertical\", \"class.mat-slider-axis-inverted\": \"_shouldInvertAxis()\", \"class.mat-slider-invert-mouse-coords\": \"_shouldInvertMouseCoords()\", \"class.mat-slider-sliding\": \"_isSliding\", \"class.mat-slider-thumb-label-showing\": \"thumbLabel\", \"class.mat-slider-vertical\": \"vertical\", \"class.mat-slider-min-value\": \"_isMinValue()\", \"class.mat-slider-hide-last-tick\": \"disabled || _isMinValue() && _getThumbGap() && _shouldInvertAxis()\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\" }, classAttribute: \"mat-slider mat-focus-indicator\" }, providers: [MAT_SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"_sliderWrapper\", first: true, predicate: [\"sliderWrapper\"], descendants: true }], exportAs: [\"matSlider\"], usesInheritance: true, ngImport: i0, template: \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{displayValue}}\\n
\\n
\\n
\\n\", styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:none;vertical-align:middle}.mat-slider:not(.mat-slider-disabled):active,.mat-slider.mat-slider-sliding:not(.mat-slider-disabled){cursor:grabbing}.mat-slider-wrapper{-webkit-print-color-adjust:exact;color-adjust:exact;position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{-webkit-background-clip:content-box;background-clip:content-box;background-repeat:repeat;box-sizing:border-box;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider.cdk-keyboard-focused .mat-slider-focus-ring,.mat-slider.cdk-program-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb{cursor:grab}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(0.7);transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-radius 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.cdk-high-contrast-active .mat-slider-thumb-label{outline:solid 1px}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-sliding .mat-slider-track-fill,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-thumb-container{transition-duration:0ms}.mat-slider-has-ticks .mat-slider-wrapper::after{content:\\\"\\\";position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{display:none}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(0.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.cdk-high-contrast-active .mat-slider-horizontal .mat-slider-ticks-container{height:0;outline:solid 2px;top:1px}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(0.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label,.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label-text{transform:none}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.cdk-high-contrast-active .mat-slider-vertical .mat-slider-ticks-container{width:0;outline:solid 2px;left:1px}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb{-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(0.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}.mat-slider._mat-animation-noopable .mat-slider-track-fill,.mat-slider._mat-animation-noopable .mat-slider-track-background,.mat-slider._mat-animation-noopable .mat-slider-ticks,.mat-slider._mat-animation-noopable .mat-slider-thumb-container,.mat-slider._mat-animation-noopable .mat-slider-focus-ring,.mat-slider._mat-animation-noopable .mat-slider-thumb,.mat-slider._mat-animation-noopable .mat-slider-thumb-label,.mat-slider._mat-animation-noopable .mat-slider-thumb-label-text,.mat-slider._mat-animation-noopable .mat-slider-has-ticks .mat-slider-wrapper::after{transition:none}\\n\"], directives: [{ type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSlider, decorators: [{\n type: Component,\n args: [{ selector: 'mat-slider', exportAs: 'matSlider', providers: [MAT_SLIDER_VALUE_ACCESSOR], host: {\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n // On Safari starting to slide temporarily triggers text selection mode which\n // show the wrong cursor. We prevent it by stopping the `selectstart` event.\n '(selectstart)': '$event.preventDefault()',\n 'class': 'mat-slider mat-focus-indicator',\n 'role': 'slider',\n '[tabIndex]': 'tabIndex',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuenow]': 'value',\n // NVDA and Jaws appear to announce the `aria-valuenow` by calculating its percentage based\n // on its value between `aria-valuemin` and `aria-valuemax`. Due to how decimals are handled,\n // it can cause the slider to read out a very long value like 0.20000068 if the current value\n // is 0.2 with a min of 0 and max of 1. We work around the issue by setting `aria-valuetext`\n // to the same value that we set on the slider's thumb which will be truncated.\n '[attr.aria-valuetext]': 'valueText == null ? displayValue : valueText',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-slider-disabled]': 'disabled',\n '[class.mat-slider-has-ticks]': 'tickInterval',\n '[class.mat-slider-horizontal]': '!vertical',\n '[class.mat-slider-axis-inverted]': '_shouldInvertAxis()',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if mouse coordinates need to be inverted.\n '[class.mat-slider-invert-mouse-coords]': '_shouldInvertMouseCoords()',\n '[class.mat-slider-sliding]': '_isSliding',\n '[class.mat-slider-thumb-label-showing]': 'thumbLabel',\n '[class.mat-slider-vertical]': 'vertical',\n '[class.mat-slider-min-value]': '_isMinValue()',\n '[class.mat-slider-hide-last-tick]': 'disabled || _isMinValue() && _getThumbGap() && _shouldInvertAxis()',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }, inputs: ['disabled', 'color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{displayValue}}\\n
\\n
\\n
\\n\", styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:none;vertical-align:middle}.mat-slider:not(.mat-slider-disabled):active,.mat-slider.mat-slider-sliding:not(.mat-slider-disabled){cursor:grabbing}.mat-slider-wrapper{-webkit-print-color-adjust:exact;color-adjust:exact;position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{-webkit-background-clip:content-box;background-clip:content-box;background-repeat:repeat;box-sizing:border-box;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider.cdk-keyboard-focused .mat-slider-focus-ring,.mat-slider.cdk-program-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb{cursor:grab}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(0.7);transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-radius 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.cdk-high-contrast-active .mat-slider-thumb-label{outline:solid 1px}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-sliding .mat-slider-track-fill,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-thumb-container{transition-duration:0ms}.mat-slider-has-ticks .mat-slider-wrapper::after{content:\\\"\\\";position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{display:none}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(0.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.cdk-high-contrast-active .mat-slider-horizontal .mat-slider-ticks-container{height:0;outline:solid 2px;top:1px}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(0.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label,.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label-text{transform:none}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.cdk-high-contrast-active .mat-slider-vertical .mat-slider-ticks-container{width:0;outline:solid 2px;left:1px}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb{-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(0.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}.mat-slider._mat-animation-noopable .mat-slider-track-fill,.mat-slider._mat-animation-noopable .mat-slider-track-background,.mat-slider._mat-animation-noopable .mat-slider-ticks,.mat-slider._mat-animation-noopable .mat-slider-thumb-container,.mat-slider._mat-animation-noopable .mat-slider-focus-ring,.mat-slider._mat-animation-noopable .mat-slider-thumb,.mat-slider._mat-animation-noopable .mat-slider-thumb-label,.mat-slider._mat-animation-noopable .mat-slider-thumb-label-text,.mat-slider._mat-animation-noopable .mat-slider-has-ticks .mat-slider-wrapper::after{transition:none}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { invert: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], step: [{\n type: Input\n }], thumbLabel: [{\n type: Input\n }], tickInterval: [{\n type: Input\n }], value: [{\n type: Input\n }], displayWith: [{\n type: Input\n }], valueText: [{\n type: Input\n }], vertical: [{\n type: Input\n }], change: [{\n type: Output\n }], input: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], _sliderWrapper: [{\n type: ViewChild,\n args: ['sliderWrapper']\n }] } });\n/** Checks if number is safe for calculation */\nfunction isSafeNumber(value) {\n return !isNaN(value) && isFinite(value);\n}\n/** Returns whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/** Gets the coordinates of a touch or mouse event relative to the viewport. */\nfunction getPointerPositionOnPage(event, id) {\n let point;\n if (isTouchEvent(event)) {\n // The `identifier` could be undefined if the browser doesn't support `TouchEvent.identifier`.\n // If that's the case, attribute the first touch to all active sliders. This should still cover\n // the most common case while only breaking multi-touch.\n if (typeof id === 'number') {\n point = findMatchingTouch(event.touches, id) || findMatchingTouch(event.changedTouches, id);\n }\n else {\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n point = event.touches[0] || event.changedTouches[0];\n }\n }\n else {\n point = event;\n }\n return point ? { x: point.clientX, y: point.clientY } : undefined;\n}\n/** Finds a `Touch` with a specific ID in a `TouchList`. */\nfunction findMatchingTouch(touches, id) {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === id) {\n return touches[i];\n }\n }\n return undefined;\n}\n/** Gets the unique ID of a touch that matches a specific slider. */\nfunction getTouchIdForSlider(event, sliderHost) {\n for (let i = 0; i < event.touches.length; i++) {\n const target = event.touches[i].target;\n if (sliderHost === target || sliderHost.contains(target)) {\n return event.touches[i].identifier;\n }\n }\n return undefined;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSliderModule {\n}\nMatSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSliderModule, declarations: [MatSlider], imports: [CommonModule, MatCommonModule], exports: [MatSlider, MatCommonModule] });\nMatSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSliderModule, imports: [[CommonModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SLIDER_VALUE_ACCESSOR, MatSlider, MatSliderChange, MatSliderModule };\n","import * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport * as i3 from '@angular/cdk/portal';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Optional, Inject, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Injector, TemplateRef, InjectFlags, Injectable, SkipSelf, Input, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Subject, defer, of } from 'rxjs';\nimport { filter, take, startWith } from 'rxjs/operators';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';\nimport * as i1 from '@angular/cdk/a11y';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nclass MatDialogConfig {\n constructor() {\n /** The ARIA role of the dialog element. */\n this.role = 'dialog';\n /** Custom class for the overlay pane. */\n this.panelClass = '';\n /** Whether the dialog has a backdrop. */\n this.hasBackdrop = true;\n /** Custom class for the backdrop. */\n this.backdropClass = '';\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n this.disableClose = false;\n /** Width of the dialog. */\n this.width = '';\n /** Height of the dialog. */\n this.height = '';\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n this.maxWidth = '80vw';\n /** Data being injected into the child component. */\n this.data = null;\n /** ID of the element that describes the dialog. */\n this.ariaDescribedBy = null;\n /** ID of the element that labels the dialog. */\n this.ariaLabelledBy = null;\n /** Aria label to assign to the dialog element. */\n this.ariaLabel = null;\n /**\n * Where the dialog should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n this.autoFocus = 'first-tabbable';\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n this.restoreFocus = true;\n /** Whether to wait for the opening animation to finish before trapping focus. */\n this.delayFocusTrap = true;\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.closeOnNavigation = true;\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nconst matDialogAnimations = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({ opacity: 0, transform: 'scale(0.7)' })),\n state('enter', style({ transform: 'none' })),\n transition('* => enter', group([\n animate('150ms cubic-bezier(0, 0, 0.2, 1)', style({ transform: 'none', opacity: 1 })),\n query('@*', animateChild(), { optional: true }),\n ])),\n transition('* => void, * => exit', group([\n animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ opacity: 0 })),\n query('@*', animateChild(), { optional: true }),\n ])),\n ]),\n};\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nfunction throwMatDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\nclass _MatDialogContainerBase extends BasePortalOutlet {\n constructor(_elementRef, _focusTrapFactory, _changeDetectorRef, _document, \n /** The dialog configuration. */\n _config, _interactivityChecker, _ngZone, _focusMonitor) {\n super();\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._changeDetectorRef = _changeDetectorRef;\n this._config = _config;\n this._interactivityChecker = _interactivityChecker;\n this._ngZone = _ngZone;\n this._focusMonitor = _focusMonitor;\n /** Emits when an animation state changes. */\n this._animationStateChanged = new EventEmitter();\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n this._elementFocusedBeforeDialogWasOpened = null;\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n this._closeInteractionType = null;\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n return this._portalOutlet.attachDomPortal(portal);\n };\n this._ariaLabelledBy = _config.ariaLabelledBy || null;\n this._document = _document;\n }\n /** Initializes the dialog container with the attached content. */\n _initializeWithAttachedContent() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n }\n }\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal(portal) {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n return this._portalOutlet.attachComponentPortal(portal);\n }\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal(portal) {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDialogContentAlreadyAttachedError();\n }\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n /** Moves focus back into the dialog if it was moved out. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n this._trapFocus();\n }\n }\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n _forceFocus(element, options) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n element.removeEventListener('blur', callback);\n element.removeEventListener('mousedown', callback);\n element.removeAttribute('tabindex');\n };\n element.addEventListener('blur', callback);\n element.addEventListener('mousedown', callback);\n });\n }\n element.focus(options);\n }\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n _focusByCssSelector(selector, options) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(selector);\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n /**\n * Moves the focus inside the focus trap. When autoFocus is not set to 'dialog', if focus\n * cannot be moved then focus will go to the dialog container.\n */\n _trapFocus() {\n const element = this._elementRef.nativeElement;\n // If were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait for the microtask queue to be empty when setting focus when autoFocus isn't set to\n // dialog. If the element inside the dialog can't be focused, then the container is focused\n // so the user can't tab into other elements behind it.\n switch (this._config.autoFocus) {\n case false:\n case 'dialog':\n // Ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n if (!this._containsFocus()) {\n element.focus();\n }\n break;\n case true:\n case 'first-tabbable':\n this._focusTrap.focusInitialElementWhenReady().then(focusedSuccessfully => {\n // If we weren't able to find a focusable element in the dialog, then focus the dialog\n // container instead.\n if (!focusedSuccessfully) {\n this._focusDialogContainer();\n }\n });\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this._config.autoFocus);\n break;\n }\n }\n /** Restores focus to the element that was focused before the dialog opened. */\n _restoreFocus() {\n const previousElement = this._elementFocusedBeforeDialogWasOpened;\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus &&\n previousElement &&\n typeof previousElement.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement ||\n activeElement === this._document.body ||\n activeElement === element ||\n element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n this._closeInteractionType = null;\n }\n else {\n previousElement.focus();\n }\n }\n }\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n /** Focuses the dialog container. */\n _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n /** Returns whether focus is inside the dialog. */\n _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = _getFocusedElementPierceShadowDom();\n return element === activeElement || element.contains(activeElement);\n }\n}\n_MatDialogContainerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatDialogContainerBase, deps: [{ token: i0.ElementRef }, { token: i1.FocusTrapFactory }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT, optional: true }, { token: MatDialogConfig }, { token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\n_MatDialogContainerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatDialogContainerBase, viewQueries: [{ propertyName: \"_portalOutlet\", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatDialogContainerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: MatDialogConfig }, { type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: i1.FocusMonitor }];\n }, propDecorators: { _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: true }]\n }] } });\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\nclass MatDialogContainer extends _MatDialogContainerBase {\n constructor() {\n super(...arguments);\n /** State of the dialog animation. */\n this._state = 'enter';\n }\n /** Callback, invoked whenever an animation on the host completes. */\n _onAnimationDone({ toState, totalTime }) {\n if (toState === 'enter') {\n if (this._config.delayFocusTrap) {\n this._trapFocus();\n }\n this._animationStateChanged.next({ state: 'opened', totalTime });\n }\n else if (toState === 'exit') {\n this._restoreFocus();\n this._animationStateChanged.next({ state: 'closed', totalTime });\n }\n }\n /** Callback, invoked when an animation on the host starts. */\n _onAnimationStart({ toState, totalTime }) {\n if (toState === 'enter') {\n this._animationStateChanged.next({ state: 'opening', totalTime });\n }\n else if (toState === 'exit' || toState === 'void') {\n this._animationStateChanged.next({ state: 'closing', totalTime });\n }\n }\n /** Starts the dialog exit animation. */\n _startExitAnimation() {\n this._state = 'exit';\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\n }\n _initializeWithAttachedContent() {\n super._initializeWithAttachedContent();\n if (!this._config.delayFocusTrap) {\n this._trapFocus();\n }\n }\n}\nMatDialogContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatDialogContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDialogContainer, selector: \"mat-dialog-container\", host: { attributes: { \"tabindex\": \"-1\", \"aria-modal\": \"true\" }, listeners: { \"@dialogContainer.start\": \"_onAnimationStart($event)\", \"@dialogContainer.done\": \"_onAnimationDone($event)\" }, properties: { \"id\": \"_id\", \"attr.role\": \"_config.role\", \"attr.aria-labelledby\": \"_config.ariaLabel ? null : _ariaLabelledBy\", \"attr.aria-label\": \"_config.ariaLabel\", \"attr.aria-describedby\": \"_config.ariaDescribedBy || null\", \"@dialogContainer\": \"_state\" }, classAttribute: \"mat-dialog-container\" }, usesInheritance: true, ngImport: i0, template: \"\\n\", styles: [\".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;box-sizing:content-box;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"], directives: [{ type: i3.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matDialogAnimations.dialogContainer], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-dialog-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, animations: [matDialogAnimations.dialogContainer], host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n 'aria-modal': 'true',\n '[id]': '_id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[@dialogContainer]': '_state',\n '(@dialogContainer.start)': '_onAnimationStart($event)',\n '(@dialogContainer.done)': '_onAnimationDone($event)',\n }, template: \"\\n\", styles: [\".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;box-sizing:content-box;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"] }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(jelbourn): resizing\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nclass MatDialogRef {\n constructor(_overlayRef, _containerInstance, \n /** Id of the dialog. */\n id = `mat-dialog-${uniqueId++}`) {\n this._overlayRef = _overlayRef;\n this._containerInstance = _containerInstance;\n this.id = id;\n /** Whether the user is allowed to close the dialog. */\n this.disableClose = this._containerInstance._config.disableClose;\n /** Subject for notifying the user that the dialog has finished opening. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the dialog has finished closing. */\n this._afterClosed = new Subject();\n /** Subject for notifying the user that the dialog has started closing. */\n this._beforeClosed = new Subject();\n /** Current state of the dialog. */\n this._state = 0 /* OPEN */;\n // Pass the id along to the container.\n _containerInstance._id = id;\n // Emit when opening animation completes\n _containerInstance._animationStateChanged\n .pipe(filter(event => event.state === 'opened'), take(1))\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged\n .pipe(filter(event => event.state === 'closed'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n _overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null;\n this._overlayRef.dispose();\n });\n _overlayRef\n .keydownEvents()\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }))\n .subscribe(event => {\n event.preventDefault();\n _closeDialogVia(this, 'keyboard');\n });\n _overlayRef.backdropClick().subscribe(() => {\n if (this.disableClose) {\n this._containerInstance._recaptureFocus();\n }\n else {\n _closeDialogVia(this, 'mouse');\n }\n });\n }\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult) {\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged\n .pipe(filter(event => event.state === 'closing'), take(1))\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._overlayRef.detachBackdrop();\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(), event.totalTime + 100);\n });\n this._state = 1 /* CLOSING */;\n this._containerInstance._startExitAnimation();\n }\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened() {\n return this._afterOpened;\n }\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed() {\n return this._afterClosed;\n }\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed() {\n return this._beforeClosed;\n }\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick() {\n return this._overlayRef.backdropClick();\n }\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents() {\n return this._overlayRef.keydownEvents();\n }\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position) {\n let strategy = this._getPositionStrategy();\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n }\n else {\n strategy.centerHorizontally();\n }\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n }\n else {\n strategy.centerVertically();\n }\n this._overlayRef.updatePosition();\n return this;\n }\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width = '', height = '') {\n this._overlayRef.updateSize({ width, height });\n this._overlayRef.updatePosition();\n return this;\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n this._overlayRef.addPanelClass(classes);\n return this;\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n this._overlayRef.removePanelClass(classes);\n return this;\n }\n /** Gets the current state of the dialog's lifecycle. */\n getState() {\n return this._state;\n }\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n _finishDialogClose() {\n this._state = 2 /* CLOSED */;\n this._overlayRef.dispose();\n }\n /** Fetches the position strategy object from the overlay ref. */\n _getPositionStrategy() {\n return this._overlayRef.getConfig().positionStrategy;\n }\n}\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nfunction _closeDialogVia(ref, interactionType, result) {\n // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n // For those, we keep the behavior as is and do not deal with the interaction type.\n if (ref._containerInstance !== undefined) {\n ref._containerInstance._closeInteractionType = interactionType;\n }\n return ref.close(result);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nconst MAT_DIALOG_DATA = new InjectionToken('MatDialogData');\n/** Injection token that can be used to specify default dialog options. */\nconst MAT_DIALOG_DEFAULT_OPTIONS = new InjectionToken('mat-dialog-default-options');\n/** Injection token that determines the scroll handling while the dialog is open. */\nconst MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken('mat-dialog-scroll-strategy');\n/** @docs-private */\nfunction MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/** @docs-private */\nfunction MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/** @docs-private */\nconst MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\nclass _MatDialogBase {\n constructor(_overlay, _injector, _defaultOptions, _parentDialog, _overlayContainer, scrollStrategy, _dialogRefConstructor, _dialogContainerType, _dialogDataToken, \n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 14.0.0\n */\n _animationMode) {\n this._overlay = _overlay;\n this._injector = _injector;\n this._defaultOptions = _defaultOptions;\n this._parentDialog = _parentDialog;\n this._overlayContainer = _overlayContainer;\n this._dialogRefConstructor = _dialogRefConstructor;\n this._dialogContainerType = _dialogContainerType;\n this._dialogDataToken = _dialogDataToken;\n this._openDialogsAtThisLevel = [];\n this._afterAllClosedAtThisLevel = new Subject();\n this._afterOpenedAtThisLevel = new Subject();\n this._ariaHiddenElements = new Map();\n // TODO (jelbourn): tighten the typing right-hand side of this expression.\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n this.afterAllClosed = defer(() => this.openDialogs.length\n ? this._getAfterAllClosed()\n : this._getAfterAllClosed().pipe(startWith(undefined)));\n this._scrollStrategy = scrollStrategy;\n }\n /** Keeps track of the currently-open dialogs. */\n get openDialogs() {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n /** Stream that emits when a dialog has been opened. */\n get afterOpened() {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n _getAfterAllClosed() {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n open(componentOrTemplateRef, config) {\n config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n if (config.id &&\n this.getDialogById(config.id) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n const overlayRef = this._createOverlay(config);\n const dialogContainer = this._attachDialogContainer(overlayRef, config);\n const dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpened.next(dialogRef);\n // Notify the dialog container that the content has been attached.\n dialogContainer._initializeWithAttachedContent();\n return dialogRef;\n }\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll() {\n this._closeDialogs(this.openDialogs);\n }\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id) {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param config The dialog configuration.\n * @returns A promise resolving to the OverlayRef for the created overlay.\n */\n _createOverlay(config) {\n const overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an overlay config from a dialog config.\n * @param dialogConfig The dialog configuration.\n * @returns The overlay configuration.\n */\n _getOverlayConfig(dialogConfig) {\n const state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight,\n disposeOnNavigation: dialogConfig.closeOnNavigation,\n });\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n return state;\n }\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n _attachDialogContainer(overlay, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: MatDialogConfig, useValue: config }],\n });\n const containerPortal = new ComponentPortal(this._dialogContainerType, config.viewContainerRef, injector, config.componentFactoryResolver);\n const containerRef = overlay.attach(containerPortal);\n return containerRef.instance;\n }\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogContainer Reference to the wrapping dialog container.\n * @param overlayRef Reference to the overlay in which the dialog resides.\n * @param config The dialog configuration.\n * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n */\n _attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, {\n $implicit: config.data,\n dialogRef,\n }));\n }\n else {\n const injector = this._createInjector(config, dialogRef, dialogContainer);\n const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector, config.componentFactoryResolver));\n dialogRef.componentInstance = contentRef.instance;\n }\n dialogRef.updateSize(config.width, config.height).updatePosition(config.position);\n return dialogRef;\n }\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog.\n * @param dialogContainer Dialog container element that wraps all of the contents.\n * @returns The custom injector that can be used inside the dialog.\n */\n _createInjector(config, dialogRef, dialogContainer) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n // The dialog container should be provided as the dialog container and the dialog's\n // content are created out of the same `ViewContainerRef` and as such, are siblings\n // for injector purposes. To allow the hierarchy that is expected, the dialog\n // container is explicitly provided in the injector.\n const providers = [\n { provide: this._dialogContainerType, useValue: dialogContainer },\n { provide: this._dialogDataToken, useValue: config.data },\n { provide: this._dialogRefConstructor, useValue: dialogRef },\n ];\n if (config.direction &&\n (!userInjector ||\n !userInjector.get(Directionality, null, InjectFlags.Optional))) {\n providers.push({\n provide: Directionality,\n useValue: { value: config.direction, change: of() },\n });\n }\n return Injector.create({ parent: userInjector || this._injector, providers });\n }\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n */\n _removeOpenDialog(dialogRef) {\n const index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenElements.clear();\n this._getAfterAllClosed().next();\n }\n }\n }\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n if (sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')) {\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n /** Closes all of the dialogs in an array. */\n _closeDialogs(dialogs) {\n let i = dialogs.length;\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n dialogs[i].close();\n }\n }\n}\n_MatDialogBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatDialogBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\n_MatDialogBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatDialogBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatDialogBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: undefined }, { type: undefined }, { type: i1$1.OverlayContainer }, { type: undefined }, { type: i0.Type }, { type: i0.Type }, { type: i0.InjectionToken }, { type: undefined }]; } });\n/**\n * Service to open Material Design modal dialogs.\n */\nclass MatDialog extends _MatDialogBase {\n constructor(overlay, injector, \n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n location, defaultOptions, scrollStrategy, parentDialog, overlayContainer, \n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 14.0.0\n */\n animationMode) {\n super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy, MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA, animationMode);\n }\n}\nMatDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialog, deps: [{ token: i1$1.Overlay }, { token: i0.Injector }, { token: i2.Location, optional: true }, { token: MAT_DIALOG_DEFAULT_OPTIONS, optional: true }, { token: MAT_DIALOG_SCROLL_STRATEGY }, { token: MatDialog, optional: true, skipSelf: true }, { token: i1$1.OverlayContainer }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nMatDialog.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialog });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialog, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i2.Location, decorators: [{\n type: Optional\n }] }, { type: MatDialogConfig, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DIALOG_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DIALOG_SCROLL_STRATEGY]\n }] }, { type: MatDialog, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: i1$1.OverlayContainer }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n } });\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(config, defaultOptions) {\n return Object.assign(Object.assign({}, defaultOptions), config);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n/**\n * Button that will close the current dialog.\n */\nclass MatDialogClose {\n constructor(\n /**\n * Reference to the containing dialog.\n * @deprecated `dialogRef` property to become private.\n * @breaking-change 13.0.0\n */\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n dialogRef, _elementRef, _dialog) {\n this.dialogRef = dialogRef;\n this._elementRef = _elementRef;\n this._dialog = _dialog;\n /** Default to \"button\" to prevents accidental form submits. */\n this.type = 'button';\n }\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);\n }\n }\n ngOnChanges(changes) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n _onButtonClick(event) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef, event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n}\nMatDialogClose.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogClose, deps: [{ token: MatDialogRef, optional: true }, { token: i0.ElementRef }, { token: MatDialog }], target: i0.ɵɵFactoryTarget.Directive });\nMatDialogClose.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDialogClose, selector: \"[mat-dialog-close], [matDialogClose]\", inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], type: \"type\", dialogResult: [\"mat-dialog-close\", \"dialogResult\"], _matDialogClose: [\"matDialogClose\", \"_matDialogClose\"] }, host: { listeners: { \"click\": \"_onButtonClick($event)\" }, properties: { \"attr.aria-label\": \"ariaLabel || null\", \"attr.type\": \"type\" } }, exportAs: [\"matDialogClose\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogClose, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: MatDialogRef, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef }, { type: MatDialog }];\n }, propDecorators: { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], type: [{\n type: Input\n }], dialogResult: [{\n type: Input,\n args: ['mat-dialog-close']\n }], _matDialogClose: [{\n type: Input,\n args: ['matDialogClose']\n }] } });\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\nclass MatDialogTitle {\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n _dialogRef, _elementRef, _dialog) {\n this._dialogRef = _dialogRef;\n this._elementRef = _elementRef;\n this._dialog = _dialog;\n /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n this.id = `mat-dialog-title-${dialogElementUid++}`;\n }\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);\n }\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\nMatDialogTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogTitle, deps: [{ token: MatDialogRef, optional: true }, { token: i0.ElementRef }, { token: MatDialog }], target: i0.ɵɵFactoryTarget.Directive });\nMatDialogTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDialogTitle, selector: \"[mat-dialog-title], [matDialogTitle]\", inputs: { id: \"id\" }, host: { properties: { \"id\": \"id\" }, classAttribute: \"mat-dialog-title\" }, exportAs: [\"matDialogTitle\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogTitle, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: MatDialogRef, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef }, { type: MatDialog }];\n }, propDecorators: { id: [{\n type: Input\n }] } });\n/**\n * Scrollable content container of a dialog.\n */\nclass MatDialogContent {\n}\nMatDialogContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatDialogContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDialogContent, selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\", host: { classAttribute: \"mat-dialog-content\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogContent, decorators: [{\n type: Directive,\n args: [{\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: { 'class': 'mat-dialog-content' },\n }]\n }] });\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\nclass MatDialogActions {\n}\nMatDialogActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatDialogActions.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDialogActions, selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\", host: { classAttribute: \"mat-dialog-actions\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogActions, decorators: [{\n type: Directive,\n args: [{\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: { 'class': 'mat-dialog-actions' },\n }]\n }] });\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element, openDialogs) {\n let parent = element.nativeElement.parentElement;\n while (parent && !parent.classList.contains('mat-dialog-container')) {\n parent = parent.parentElement;\n }\n return parent ? openDialogs.find(dialog => dialog.id === parent.id) : null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatDialogModule {\n}\nMatDialogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogModule, declarations: [MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent], imports: [OverlayModule, PortalModule, MatCommonModule], exports: [MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule] });\nMatDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogModule, providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER], imports: [[OverlayModule, PortalModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, PortalModule, MatCommonModule],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, _MatDialogBase, _MatDialogContainerBase, _closeDialogVia, matDialogAnimations, throwMatDialogContentAlreadyAttachedError };\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, TemplateRef, Directive, Inject, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, forwardRef, Optional, Host, NgModule } from '@angular/core';\nimport { mixinDisableRipple, MAT_OPTION_PARENT_COMPONENT, MAT_OPTGROUP, MatOption, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { hasModifierKey, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i4 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { startWith, switchMap, take, filter, map, tap, delay } from 'rxjs/operators';\nimport * as i2$1 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n source, \n /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nconst _MatAutocompleteMixinBase = mixinDisableRipple(class {\n});\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return { autoActiveFirstOption: false };\n}\n/** Base class with all of the `MatAutocomplete` functionality. */\nclass _MatAutocompleteBase extends _MatAutocompleteMixinBase {\n constructor(_changeDetectorRef, _elementRef, defaults, platform) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._activeOptionChanges = Subscription.EMPTY;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n this.showPanel = false;\n this._isOpen = false;\n /** Function that maps an option's control value to its display value in the trigger. */\n this.displayWith = null;\n /** Event that is emitted whenever an option from the list is selected. */\n this.optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n this.opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n this.closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n this.optionActivated = new EventEmitter();\n this._classList = {};\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = (platform === null || platform === void 0 ? void 0 : platform.SAFARI) || false;\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n }\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n get autoActiveFirstOption() {\n return this._autoActiveFirstOption;\n }\n set autoActiveFirstOption(value) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n if (value && value.length) {\n this._classList = coerceStringArray(value).reduce((classList, className) => {\n classList[className] = true;\n return classList;\n }, {});\n }\n else {\n this._classList = {};\n }\n this._setVisibilityClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._activeOptionChanges.unsubscribe();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n _setVisibilityClasses(classList) {\n classList[this._visibleClass] = this.showPanel;\n classList[this._hiddenClass] = !this.showPanel;\n }\n}\n_MatAutocompleteBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatAutocompleteBase, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatAutocompleteBase, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], displayWith: \"displayWith\", autoActiveFirstOption: \"autoActiveFirstOption\", panelWidth: \"panelWidth\", classList: [\"class\", \"classList\"] }, outputs: { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\", optionActivated: \"optionActivated\" }, viewQueries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatAutocompleteBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }, { type: i1.Platform }];\n }, propDecorators: { template: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], displayWith: [{\n type: Input\n }], autoActiveFirstOption: [{\n type: Input\n }], panelWidth: [{\n type: Input\n }], optionSelected: [{\n type: Output\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], optionActivated: [{\n type: Output\n }], classList: [{\n type: Input,\n args: ['class']\n }] } });\nclass MatAutocomplete extends _MatAutocompleteBase {\n constructor() {\n super(...arguments);\n this._visibleClass = 'mat-autocomplete-visible';\n this._hiddenClass = 'mat-autocomplete-hidden';\n }\n}\nMatAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocomplete, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatAutocomplete, selector: \"mat-autocomplete\", inputs: { disableRipple: \"disableRipple\" }, host: { classAttribute: \"mat-autocomplete\" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: \"optionGroups\", predicate: MAT_OPTGROUP, descendants: true }, { propertyName: \"options\", predicate: MatOption, descendants: true }], exportAs: [\"matAutocomplete\"], usesInheritance: true, ngImport: i0, template: \"\\n
\\n \\n
\\n
\\n\", styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\\n\"], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocomplete, decorators: [{\n type: Component,\n args: [{ selector: 'mat-autocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'matAutocomplete', inputs: ['disableRipple'], host: {\n 'class': 'mat-autocomplete',\n }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], template: \"\\n
\\n \\n
\\n
\\n\", styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\\n\"] }]\n }], propDecorators: { optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }] } });\n\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true,\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass _MatAutocompleteTriggerBase {\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n this._autocompleteDisabled = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => { };\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n this._overlayAttached = false;\n /** Stream of changes to the selection state of the autocomplete options. */\n this.optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));\n });\n this._scrollStrategy = scrollStrategy;\n }\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n get autocompleteDisabled() {\n return this._autocompleteDisabled;\n }\n set autocompleteDisabled(value) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._attachOverlay();\n this._floatLabel();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // The `NgZone.onStable` always emits outside of the Angular zone,\n // so all the subscriptions from `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n this.autocomplete._isOpen = this._overlayAttached = false;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef\n ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached))\n : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof MatOptionSelectionChange ? event : null)));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return (this._overlayAttached &&\n clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve().then(() => this._setTriggerValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._onChange(value);\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this.openPanel();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n this._formField.floatLabel = 'auto';\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return (merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n // The `NgZone.onStable` always emits outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n this._zone.run(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n // If the `panelOpen` state changed, we need to make sure to emit the `opened`\n // event, because we may not have emitted it when the panel was attached. This\n // can happen if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing.\n if (wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n });\n return this.panelClosingActions;\n }), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event)));\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n _setTriggerValue(value) {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith\n ? this.autocomplete.displayWith(value)\n : value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const inputValue = toDisplay != null ? toDisplay : '';\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = inputValue;\n }\n else {\n this._element.nativeElement.value = inputValue;\n }\n this._previousValue = inputValue;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const source = event && event.source;\n if (source) {\n this._clearPreviousSelectedOption(source);\n this._setTriggerValue(source.value);\n this._onChange(source.value);\n this.autocomplete._emitSelectEvent(source);\n this._element.nativeElement.focus();\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip) {\n this.autocomplete.options.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n _attachOverlay() {\n var _a;\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: (_a = this._formField) === null || _a === void 0 ? void 0 : _a.getLabelId(),\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._overlayAttached = true;\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n _getOverlayConfig() {\n var _a;\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir,\n panelClass: (_a = this._defaults) === null || _a === void 0 ? void 0 : _a.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Note that we go through `setFirstItemActive`, rather than `setActiveItem(0)`, because\n // the former will find the next enabled option, if the first one is disabled.\n autocomplete._keyManager.setFirstItemActive();\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n var _a;\n return ((_a = this._document) === null || _a === void 0 ? void 0 : _a.defaultView) || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n}\n_MatAutocompleteTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: [\"matAutocomplete\", \"autocomplete\"], position: [\"matAutocompletePosition\", \"position\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }] }, { type: i2$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i4.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }];\n }, propDecorators: { autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: ['matAutocompleteDisabled']\n }] } });\nclass MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n constructor() {\n super(...arguments);\n this._aboveClass = 'mat-autocomplete-panel-above';\n }\n}\nMatAutocompleteTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAutocompleteTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", host: { listeners: { \"focusin\": \"_handleFocus()\", \"blur\": \"_onTouched()\", \"input\": \"_handleInput($event)\", \"keydown\": \"_handleKeydown($event)\", \"click\": \"_handleClick()\" }, properties: { \"attr.autocomplete\": \"autocompleteAttribute\", \"attr.role\": \"autocompleteDisabled ? null : \\\"combobox\\\"\", \"attr.aria-autocomplete\": \"autocompleteDisabled ? null : \\\"list\\\"\", \"attr.aria-activedescendant\": \"(panelOpen && activeOption) ? activeOption.id : null\", \"attr.aria-expanded\": \"autocompleteDisabled ? null : panelOpen.toString()\", \"attr.aria-owns\": \"(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id\", \"attr.aria-haspopup\": \"autocompleteDisabled ? null : \\\"listbox\\\"\" }, classAttribute: \"mat-autocomplete-trigger\" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: [\"matAutocompleteTrigger\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\nclass _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\n_MatAutocompleteOriginBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteOriginBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatAutocompleteOriginBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin extends _MatAutocompleteOriginBase {\n}\nMatAutocompleteOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAutocompleteOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatAutocompleteOrigin, selector: \"[matAutocompleteOrigin]\", exportAs: [\"matAutocompleteOrigin\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatAutocompleteModule {\n}\nMatAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\nMatAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[OverlayModule, MatOptionModule, MatCommonModule, CommonModule], CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule],\n exports: [\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, _MatAutocompleteBase, _MatAutocompleteOriginBase, _MatAutocompleteTriggerBase, getMatAutocompleteMissingPanelError };\n","import * as i0 from '@angular/core';\nimport { Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\nlet nextId = 0;\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {\n});\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n/** Directive to display a text badge. */\nclass MatBadge extends _MatBadgeBase {\n constructor(_ngZone, _elementRef, _ariaDescriber, _renderer, _animationMode) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n this._renderer = _renderer;\n this._animationMode = _animationMode;\n this._color = 'primary';\n this._overlap = true;\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n this.position = 'above after';\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n this.size = 'medium';\n /** Unique id for the badge */\n this._id = nextId++;\n /** Whether the OnInit lifecycle hook has run yet */\n this._isInitialized = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = _elementRef.nativeElement;\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n get color() {\n return this._color;\n }\n set color(value) {\n this._setColor(value);\n this._color = value;\n }\n /** Whether the badge should overlap its contents or not */\n get overlap() {\n return this._overlap;\n }\n set overlap(val) {\n this._overlap = coerceBooleanProperty(val);\n }\n /** The content for the badge */\n get content() {\n return this._content;\n }\n set content(newContent) {\n this._updateRenderedContent(newContent);\n }\n /** Message used to describe the decorated element via aria-describedby */\n get description() {\n return this._description;\n }\n set description(newDescription) {\n this._updateHostAriaDescription(newDescription);\n }\n /** Whether the badge is hidden. */\n get hidden() {\n return this._hidden;\n }\n set hidden(val) {\n this._hidden = coerceBooleanProperty(val);\n }\n /** Whether the badge is above the host or not */\n isAbove() {\n return this.position.indexOf('below') === -1;\n }\n /** Whether the badge is after the host or not */\n isAfter() {\n return this.position.indexOf('before') === -1;\n }\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement() {\n return this._badgeElement;\n }\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n this._isInitialized = true;\n }\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n /** Creates the badge element */\n _createBadgeElement() {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n if (this._animationMode === 'NoopAnimations') {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n this._elementRef.nativeElement.appendChild(badgeElement);\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n }\n else {\n badgeElement.classList.add(activeClass);\n }\n return badgeElement;\n }\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n _updateRenderedContent(newContent) {\n const newContentNormalized = `${newContent !== null && newContent !== void 0 ? newContent : ''}`.trim();\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n this._content = newContentNormalized;\n }\n /** Updates the host element's aria description via AriaDescriber. */\n _updateHostAriaDescription(newDescription) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n if (newDescription) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n }\n this._description = newDescription;\n }\n /** Adds css theme class given the color to the component host */\n _setColor(colorPalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n /** Clears any existing badges that might be left over from server-side rendering. */\n _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n}\nMatBadge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadge, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.AriaDescriber }, { token: i0.Renderer2 }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatBadge.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatBadge, selector: \"[matBadge]\", inputs: { disabled: [\"matBadgeDisabled\", \"disabled\"], color: [\"matBadgeColor\", \"color\"], overlap: [\"matBadgeOverlap\", \"overlap\"], position: [\"matBadgePosition\", \"position\"], content: [\"matBadge\", \"content\"], description: [\"matBadgeDescription\", \"description\"], size: [\"matBadgeSize\", \"size\"], hidden: [\"matBadgeHidden\", \"hidden\"] }, host: { properties: { \"class.mat-badge-overlap\": \"overlap\", \"class.mat-badge-above\": \"isAbove()\", \"class.mat-badge-below\": \"!isAbove()\", \"class.mat-badge-before\": \"!isAfter()\", \"class.mat-badge-after\": \"isAfter()\", \"class.mat-badge-small\": \"size === \\\"small\\\"\", \"class.mat-badge-medium\": \"size === \\\"medium\\\"\", \"class.mat-badge-large\": \"size === \\\"large\\\"\", \"class.mat-badge-hidden\": \"hidden || !content\", \"class.mat-badge-disabled\": \"disabled\" }, classAttribute: \"mat-badge\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadge, decorators: [{\n type: Directive,\n args: [{\n selector: '[matBadge]',\n inputs: ['disabled: matBadgeDisabled'],\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.AriaDescriber }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { color: [{\n type: Input,\n args: ['matBadgeColor']\n }], overlap: [{\n type: Input,\n args: ['matBadgeOverlap']\n }], position: [{\n type: Input,\n args: ['matBadgePosition']\n }], content: [{\n type: Input,\n args: ['matBadge']\n }], description: [{\n type: Input,\n args: ['matBadgeDescription']\n }], size: [{\n type: Input,\n args: ['matBadgeSize']\n }], hidden: [{\n type: Input,\n args: ['matBadgeHidden']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatBadgeModule {\n}\nMatBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, declarations: [MatBadge], imports: [A11yModule, MatCommonModule], exports: [MatBadge, MatCommonModule] });\nMatBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, imports: [[A11yModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [A11yModule, MatCommonModule],\n exports: [MatBadge, MatCommonModule],\n declarations: [MatBadge],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatBadge, MatBadgeModule };\n","import * as i1$1 from '@angular/cdk/overlay';\nimport { OverlayModule, OverlayConfig } from '@angular/cdk/overlay';\nimport * as i4 from '@angular/cdk/portal';\nimport { BasePortalOutlet, CdkPortalOutlet, PortalModule, TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, ViewChild, NgModule, TemplateRef, Injector, InjectFlags, Injectable, SkipSelf } from '@angular/core';\nimport { AnimationDurations, AnimationCurves, MatCommonModule } from '@angular/material/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport * as i2 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';\nimport * as i1 from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Subject, merge, of } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { filter, take } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Animations used by the Material bottom sheet. */\nconst matBottomSheetAnimations = {\n /** Animation that shows and hides a bottom sheet. */\n bottomSheetState: trigger('state', [\n state('void, hidden', style({ transform: 'translateY(100%)' })),\n state('visible', style({ transform: 'translateY(0%)' })),\n transition('visible => void, visible => hidden', group([\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`),\n query('@*', animateChild(), { optional: true }),\n ])),\n transition('void => visible', group([\n animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`),\n query('@*', animateChild(), { optional: true }),\n ])),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nconst MAT_BOTTOM_SHEET_DATA = new InjectionToken('MatBottomSheetData');\n/**\n * Configuration used when opening a bottom sheet.\n */\nclass MatBottomSheetConfig {\n constructor() {\n /** Data being injected into the child component. */\n this.data = null;\n /** Whether the bottom sheet has a backdrop. */\n this.hasBackdrop = true;\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n this.disableClose = false;\n /** Aria label to assign to the bottom sheet element. */\n this.ariaLabel = null;\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.closeOnNavigation = true;\n // Note that this is set to 'dialog' by default, because while the a11y recommendations\n // are to focus the first focusable element, doing so prevents screen readers from reading out the\n // rest of the bottom sheet content.\n /**\n * Where the bottom sheet should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n this.autoFocus = 'dialog';\n /**\n * Whether the bottom sheet should restore focus to the\n * previously-focused element, after it's closed.\n */\n this.restoreFocus = true;\n }\n}\n\n// TODO(crisbeto): consolidate some logic between this, MatDialog and MatSnackBar\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\nclass MatBottomSheetContainer extends BasePortalOutlet {\n constructor(_elementRef, _changeDetectorRef, _focusTrapFactory, _interactivityChecker, _ngZone, breakpointObserver, document, \n /** The bottom sheet configuration. */\n bottomSheetConfig) {\n super();\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._interactivityChecker = _interactivityChecker;\n this._ngZone = _ngZone;\n this.bottomSheetConfig = bottomSheetConfig;\n /** The state of the bottom sheet animations. */\n this._animationState = 'void';\n /** Emits whenever the state of the animation changes. */\n this._animationStateChanged = new EventEmitter();\n /** Element that was focused before the bottom sheet was opened. */\n this._elementFocusedBeforeOpened = null;\n /**\n * Attaches a DOM portal to the bottom sheet container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachDomPortal(portal);\n };\n this._document = document;\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n this._toggleClass('mat-bottom-sheet-container-medium', breakpointObserver.isMatched(Breakpoints.Medium));\n this._toggleClass('mat-bottom-sheet-container-large', breakpointObserver.isMatched(Breakpoints.Large));\n this._toggleClass('mat-bottom-sheet-container-xlarge', breakpointObserver.isMatched(Breakpoints.XLarge));\n });\n }\n /** Attach a component portal as content to this bottom sheet container. */\n attachComponentPortal(portal) {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n /** Attach a template portal as content to this bottom sheet container. */\n attachTemplatePortal(portal) {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n /** Begin animation of bottom sheet entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n /** Begin animation of the bottom sheet exiting from view. */\n exit() {\n if (!this._destroyed) {\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n }\n }\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n _onAnimationDone(event) {\n if (event.toState === 'hidden') {\n this._restoreFocus();\n }\n else if (event.toState === 'visible') {\n this._trapFocus();\n }\n this._animationStateChanged.emit(event);\n }\n _onAnimationStart(event) {\n this._animationStateChanged.emit(event);\n }\n _toggleClass(cssClass, add) {\n this._elementRef.nativeElement.classList.toggle(cssClass, add);\n }\n _validatePortalAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach bottom sheet content after content is already attached');\n }\n }\n _setPanelClass() {\n const element = this._elementRef.nativeElement;\n element.classList.add(...coerceArray(this.bottomSheetConfig.panelClass || []));\n }\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n _forceFocus(element, options) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n element.removeEventListener('blur', callback);\n element.removeEventListener('mousedown', callback);\n element.removeAttribute('tabindex');\n };\n element.addEventListener('blur', callback);\n element.addEventListener('mousedown', callback);\n });\n }\n element.focus(options);\n }\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n _focusByCssSelector(selector, options) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(selector);\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n /**\n * Moves the focus inside the focus trap. When autoFocus is not set to 'bottom-sheet',\n * if focus cannot be moved then focus will go to the bottom sheet container.\n */\n _trapFocus() {\n const element = this._elementRef.nativeElement;\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(element);\n }\n // If were to attempt to focus immediately, then the content of the bottom sheet would not\n // yet be ready in instances where change detection has to run first. To deal with this,\n // we simply wait for the microtask queue to be empty when setting focus when autoFocus\n // isn't set to bottom sheet. If the element inside the bottom sheet can't be focused,\n // then the container is focused so the user can't tab into other elements behind it.\n switch (this.bottomSheetConfig.autoFocus) {\n case false:\n case 'dialog':\n const activeElement = _getFocusedElementPierceShadowDom();\n // Ensure that focus is on the bottom sheet container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the bottom sheet already, because it's possible that the\n // consumer specified `autoFocus` in order to move focus themselves.\n if (activeElement !== element && !element.contains(activeElement)) {\n element.focus();\n }\n break;\n case true:\n case 'first-tabbable':\n this._focusTrap.focusInitialElementWhenReady();\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this.bottomSheetConfig.autoFocus);\n break;\n }\n }\n /** Restores focus to the element that was focused before the bottom sheet was opened. */\n _restoreFocus() {\n const toFocus = this._elementFocusedBeforeOpened;\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n // Make sure that focus is still inside the bottom sheet or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement ||\n activeElement === this._document.body ||\n activeElement === element ||\n element.contains(activeElement)) {\n toFocus.focus();\n }\n }\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n /** Saves a reference to the element that was focused before the bottom sheet was opened. */\n _savePreviouslyFocusedElement() {\n this._elementFocusedBeforeOpened = _getFocusedElementPierceShadowDom();\n // The `focus` method isn't available during server-side rendering.\n if (this._elementRef.nativeElement.focus) {\n this._ngZone.runOutsideAngular(() => {\n Promise.resolve().then(() => this._elementRef.nativeElement.focus());\n });\n }\n }\n}\nMatBottomSheetContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheetContainer, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusTrapFactory }, { token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: i2.BreakpointObserver }, { token: DOCUMENT, optional: true }, { token: MatBottomSheetConfig }], target: i0.ɵɵFactoryTarget.Component });\nMatBottomSheetContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatBottomSheetContainer, selector: \"mat-bottom-sheet-container\", host: { attributes: { \"tabindex\": \"-1\", \"role\": \"dialog\", \"aria-modal\": \"true\" }, listeners: { \"@state.start\": \"_onAnimationStart($event)\", \"@state.done\": \"_onAnimationDone($event)\" }, properties: { \"attr.aria-label\": \"bottomSheetConfig?.ariaLabel\", \"@state\": \"_animationState\" }, classAttribute: \"mat-bottom-sheet-container\" }, viewQueries: [{ propertyName: \"_portalOutlet\", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"\\r\\n\", styles: [\".mat-bottom-sheet-container{padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto}.cdk-high-contrast-active .mat-bottom-sheet-container{outline:1px solid}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:4px;border-top-right-radius:4px}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}\\n\"], directives: [{ type: i4.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matBottomSheetAnimations.bottomSheetState], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheetContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-bottom-sheet-container', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, animations: [matBottomSheetAnimations.bottomSheetState], host: {\n 'class': 'mat-bottom-sheet-container',\n 'tabindex': '-1',\n 'role': 'dialog',\n 'aria-modal': 'true',\n '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',\n '[@state]': '_animationState',\n '(@state.start)': '_onAnimationStart($event)',\n '(@state.done)': '_onAnimationDone($event)',\n }, template: \"\\r\\n\", styles: [\".mat-bottom-sheet-container{padding:8px 16px;min-width:100vw;box-sizing:border-box;display:block;outline:0;max-height:80vh;overflow:auto}.cdk-high-contrast-active .mat-bottom-sheet-container{outline:1px solid}.mat-bottom-sheet-container-xlarge,.mat-bottom-sheet-container-large,.mat-bottom-sheet-container-medium{border-top-left-radius:4px;border-top-right-radius:4px}.mat-bottom-sheet-container-medium{min-width:384px;max-width:calc(100vw - 128px)}.mat-bottom-sheet-container-large{min-width:512px;max-width:calc(100vw - 256px)}.mat-bottom-sheet-container-xlarge{min-width:576px;max-width:calc(100vw - 384px)}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusTrapFactory }, { type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: i2.BreakpointObserver }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: MatBottomSheetConfig }];\n }, propDecorators: { _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatBottomSheetModule {\n}\nMatBottomSheetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatBottomSheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheetModule, declarations: [MatBottomSheetContainer], imports: [OverlayModule, MatCommonModule, PortalModule], exports: [MatBottomSheetContainer, MatCommonModule] });\nMatBottomSheetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheetModule, imports: [[OverlayModule, MatCommonModule, PortalModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheetModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatCommonModule, PortalModule],\n exports: [MatBottomSheetContainer, MatCommonModule],\n declarations: [MatBottomSheetContainer],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nclass MatBottomSheetRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the bottom sheet has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n this._afterOpened = new Subject();\n this.containerInstance = containerInstance;\n this.disableClose = containerInstance.bottomSheetConfig.disableClose;\n // Emit when opening animation completes\n containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'visible'), take(1))\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n _overlayRef.dispose();\n });\n _overlayRef\n .detachments()\n .pipe(take(1))\n .subscribe(() => {\n this._afterDismissed.next(this._result);\n this._afterDismissed.complete();\n });\n merge(_overlayRef.backdropClick(), _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))).subscribe(event => {\n if (!this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event))) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result) {\n if (!this._afterDismissed.closed) {\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'start'), take(1))\n .subscribe(event => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => {\n this._overlayRef.dispose();\n }, event.totalTime + 100);\n this._overlayRef.detachBackdrop();\n });\n this._result = result;\n this.containerInstance.exit();\n }\n }\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened() {\n return this._afterOpened;\n }\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick() {\n return this._overlayRef.backdropClick();\n }\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents() {\n return this._overlayRef.keydownEvents();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to specify default bottom sheet options. */\nconst MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken('mat-bottom-sheet-default-options');\n/**\n * Service to trigger Material Design bottom sheets.\n */\nclass MatBottomSheet {\n constructor(_overlay, _injector, _parentBottomSheet, _defaultOptions) {\n this._overlay = _overlay;\n this._injector = _injector;\n this._parentBottomSheet = _parentBottomSheet;\n this._defaultOptions = _defaultOptions;\n this._bottomSheetRefAtThisLevel = null;\n }\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef() {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n set _openedBottomSheetRef(value) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n }\n else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n open(componentOrTemplateRef, config) {\n const _config = _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const ref = new MatBottomSheetRef(container, overlayRef);\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, {\n $implicit: _config.data,\n bottomSheetRef: ref,\n }));\n }\n else {\n const portal = new ComponentPortal(componentOrTemplateRef, undefined, this._createInjector(_config, ref));\n const contentRef = container.attachComponentPortal(portal);\n ref.instance = contentRef.instance;\n }\n // When the bottom sheet is dismissed, clear the reference to it.\n ref.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef == ref) {\n this._openedBottomSheetRef = null;\n }\n });\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());\n this._openedBottomSheetRef.dismiss();\n }\n else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref.containerInstance.enter();\n }\n this._openedBottomSheetRef = ref;\n return ref;\n }\n /**\n * Dismisses the currently-visible bottom sheet.\n * @param result Data to pass to the bottom sheet instance.\n */\n dismiss(result) {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss(result);\n }\n }\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\n }\n }\n /**\n * Attaches the bottom sheet container component to the overlay.\n */\n _attachContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: MatBottomSheetConfig, useValue: config }],\n });\n const containerPortal = new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n return containerRef.instance;\n }\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified bottom sheet config.\n */\n _createOverlay(config) {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: config.hasBackdrop,\n disposeOnNavigation: config.closeOnNavigation,\n maxWidth: '100%',\n scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0'),\n });\n if (config.backdropClass) {\n overlayConfig.backdropClass = config.backdropClass;\n }\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an injector to be used inside of a bottom sheet component.\n * @param config Config that was used to create the bottom sheet.\n * @param bottomSheetRef Reference to the bottom sheet.\n */\n _createInjector(config, bottomSheetRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const providers = [\n { provide: MatBottomSheetRef, useValue: bottomSheetRef },\n { provide: MAT_BOTTOM_SHEET_DATA, useValue: config.data },\n ];\n if (config.direction &&\n (!userInjector ||\n !userInjector.get(Directionality, null, InjectFlags.Optional))) {\n providers.push({\n provide: Directionality,\n useValue: { value: config.direction, change: of() },\n });\n }\n return Injector.create({ parent: userInjector || this._injector, providers });\n }\n}\nMatBottomSheet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheet, deps: [{ token: i1$1.Overlay }, { token: i0.Injector }, { token: MatBottomSheet, optional: true, skipSelf: true }, { token: MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nMatBottomSheet.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheet, providedIn: MatBottomSheetModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBottomSheet, decorators: [{\n type: Injectable,\n args: [{ providedIn: MatBottomSheetModule }]\n }], ctorParameters: function () {\n return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: MatBottomSheet, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: MatBottomSheetConfig, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BOTTOM_SHEET_DEFAULT_OPTIONS]\n }] }];\n } });\n/**\n * Applies default options to the bottom sheet config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(defaults, config) {\n return Object.assign(Object.assign({}, defaults), config);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_BOTTOM_SHEET_DATA, MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, MatBottomSheet, MatBottomSheetConfig, MatBottomSheetContainer, MatBottomSheetModule, MatBottomSheetRef, matBottomSheetAnimations };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, Directive, Optional, Inject, ContentChildren, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, Attribute, ViewChild, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i2 from '@angular/material/core';\nimport { mixinDisableRipple, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nconst MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken('MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS');\n/**\n * Injection token that can be used to reference instances of `MatButtonToggleGroup`.\n * It serves as alternative token to the actual `MatButtonToggleGroup` class which\n * could cause unnecessary retention of the class and its component metadata.\n */\nconst MAT_BUTTON_TOGGLE_GROUP = new InjectionToken('MatButtonToggleGroup');\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nconst MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true,\n};\n// Counter used to generate unique IDs.\nlet uniqueIdCounter = 0;\n/** Change event object emitted by MatButtonToggle. */\nclass MatButtonToggleChange {\n constructor(\n /** The MatButtonToggle that emits the event. */\n source, \n /** The value assigned to the MatButtonToggle. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\nclass MatButtonToggleGroup {\n constructor(_changeDetector, defaultOptions) {\n this._changeDetector = _changeDetector;\n this._vertical = false;\n this._multiple = false;\n this._disabled = false;\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n this._controlValueAccessorChangeFn = () => { };\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n this._onTouched = () => { };\n this._name = `mat-button-toggle-group-${uniqueIdCounter++}`;\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n /** Event emitted when the group's value changes. */\n this.change = new EventEmitter();\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n }\n /** `name` attribute for the underlying `input` element. */\n get name() {\n return this._name;\n }\n set name(value) {\n this._name = value;\n if (this._buttonToggles) {\n this._buttonToggles.forEach(toggle => {\n toggle.name = this._name;\n toggle._markForCheck();\n });\n }\n }\n /** Whether the toggle group is vertical. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** Value of the toggle group. */\n get value() {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n /** Selected button toggles in the group. */\n get selected() {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : selected[0] || null;\n }\n /** Whether multiple button toggles can be selected. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n this._multiple = coerceBooleanProperty(value);\n }\n /** Whether multiple button toggle group is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n if (this._buttonToggles) {\n this._buttonToggles.forEach(toggle => toggle._markForCheck());\n }\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n }\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent() {\n const selected = this.selected;\n const source = Array.isArray(selected) ? selected[selected.length - 1] : selected;\n const event = new MatButtonToggleChange(source, this.value);\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(toggle, select, isUserInput = false, deferEvents = false) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n this.selected.checked = false;\n }\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n }\n else {\n this._selectionModel.deselect(toggle);\n }\n }\n else {\n deferEvents = true;\n }\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve().then(() => this._updateModelValue(isUserInput));\n }\n else {\n this._updateModelValue(isUserInput);\n }\n }\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n return toggle.value === this._rawValue;\n }\n /** Updates the selection state of the toggles in the group based on a value. */\n _setSelectionByValue(value) {\n this._rawValue = value;\n if (!this._buttonToggles) {\n return;\n }\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n this._clearSelection();\n value.forEach((currentValue) => this._selectValue(currentValue));\n }\n else {\n this._clearSelection();\n this._selectValue(value);\n }\n }\n /** Clears the selected toggles. */\n _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => (toggle.checked = false));\n }\n /** Selects a value if there's a toggle that corresponds to it. */\n _selectValue(value) {\n const correspondingOption = this._buttonToggles.find(toggle => {\n return toggle.value != null && toggle.value === value;\n });\n if (correspondingOption) {\n correspondingOption.checked = true;\n this._selectionModel.select(correspondingOption);\n }\n }\n /** Syncs up the group's value with the model and emits the change event. */\n _updateModelValue(isUserInput) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent();\n }\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n}\nMatButtonToggleGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggleGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatButtonToggleGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatButtonToggleGroup, selector: \"mat-button-toggle-group\", inputs: { appearance: \"appearance\", name: \"name\", vertical: \"vertical\", value: \"value\", multiple: \"multiple\", disabled: \"disabled\" }, outputs: { valueChange: \"valueChange\", change: \"change\" }, host: { attributes: { \"role\": \"group\" }, properties: { \"attr.aria-disabled\": \"disabled\", \"class.mat-button-toggle-vertical\": \"vertical\", \"class.mat-button-toggle-group-appearance-standard\": \"appearance === \\\"standard\\\"\" }, classAttribute: \"mat-button-toggle-group\" }, providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n { provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup },\n ], queries: [{ propertyName: \"_buttonToggles\", predicate: i0.forwardRef(function () { return MatButtonToggle; }), descendants: true }], exportAs: [\"matButtonToggleGroup\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggleGroup, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n { provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup },\n ],\n host: {\n 'role': 'group',\n 'class': 'mat-button-toggle-group',\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS]\n }] }];\n }, propDecorators: { _buttonToggles: [{\n type: ContentChildren,\n args: [forwardRef(() => MatButtonToggle), {\n // Note that this would technically pick up toggles\n // from nested groups, but that's not a case that we support.\n descendants: true,\n }]\n }], appearance: [{\n type: Input\n }], name: [{\n type: Input\n }], vertical: [{\n type: Input\n }], value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], multiple: [{\n type: Input\n }], disabled: [{\n type: Input\n }], change: [{\n type: Output\n }] } });\n// Boilerplate for applying mixins to the MatButtonToggle class.\n/** @docs-private */\nconst _MatButtonToggleBase = mixinDisableRipple(class {\n});\n/** Single button inside of a toggle group. */\nclass MatButtonToggle extends _MatButtonToggleBase {\n constructor(toggleGroup, _changeDetectorRef, _elementRef, _focusMonitor, defaultTabIndex, defaultOptions) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._isSingleSelector = false;\n this._checked = false;\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n this._disabled = false;\n /** Event emitted when the group value changes. */\n this.change = new EventEmitter();\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n this.buttonToggleGroup = toggleGroup;\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n }\n /** Unique ID for the underlying `button` element. */\n get buttonId() {\n return `${this.id}-button`;\n }\n /** The appearance style of the button. */\n get appearance() {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value) {\n this._appearance = value;\n }\n /** Whether the button is checked. */\n get checked() {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._checked) {\n this._checked = newValue;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the button is disabled. */\n get disabled() {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n ngOnInit() {\n const group = this.buttonToggleGroup;\n this._isSingleSelector = group && !group.multiple;\n this.id = this.id || `mat-button-toggle-${uniqueIdCounter++}`;\n if (this._isSingleSelector) {\n this.name = group.name;\n }\n if (group) {\n if (group._isPrechecked(this)) {\n this.checked = true;\n }\n else if (group._isSelected(this) !== this._checked) {\n // As as side effect of the circular dependency between the toggle group and the button,\n // we may end up in a state where the button is supposed to be checked on init, but it\n // isn't, because the checked value was assigned too early. This can happen when Ivy\n // assigns the static input value before the `ngOnInit` has run.\n group._syncButtonToggle(this, this._checked);\n }\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n this._focusMonitor.stopMonitoring(this._elementRef);\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n /** Focuses the button. */\n focus(options) {\n this._buttonElement.nativeElement.focus(options);\n }\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n const newChecked = this._isSingleSelector ? true : !this._checked;\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\n this._changeDetectorRef.markForCheck();\n }\n}\nMatButtonToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggle, deps: [{ token: MAT_BUTTON_TOGGLE_GROUP, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: 'tabindex', attribute: true }, { token: MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatButtonToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatButtonToggle, selector: \"mat-button-toggle\", inputs: { disableRipple: \"disableRipple\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], id: \"id\", name: \"name\", value: \"value\", tabIndex: \"tabIndex\", appearance: \"appearance\", checked: \"checked\", disabled: \"disabled\" }, outputs: { change: \"change\" }, host: { attributes: { \"role\": \"presentation\" }, listeners: { \"focus\": \"focus()\" }, properties: { \"class.mat-button-toggle-standalone\": \"!buttonToggleGroup\", \"class.mat-button-toggle-checked\": \"checked\", \"class.mat-button-toggle-disabled\": \"disabled\", \"class.mat-button-toggle-appearance-standard\": \"appearance === \\\"standard\\\"\", \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"attr.id\": \"id\", \"attr.name\": \"null\" }, classAttribute: \"mat-button-toggle\" }, viewQueries: [{ propertyName: \"_buttonElement\", first: true, predicate: [\"button\"], descendants: true }], exportAs: [\"matButtonToggle\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n\\n\", styles: [\".mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;border-radius:2px;-webkit-tap-highlight-color:transparent;transform:translateZ(0)}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:4px}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.cdk-high-contrast-active .mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:.5}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:.04}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.12}.cdk-high-contrast-active .mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.5}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{border-radius:inherit;pointer-events:none;opacity:0;top:0;left:0;right:0;bottom:0;position:absolute}.mat-button-toggle-checked .cdk-high-contrast-active .mat-button-toggle-focus-overlay{border-bottom:solid 36px;opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}\\n\"], directives: [{ type: i2.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggle, decorators: [{\n type: Component,\n args: [{ selector: 'mat-button-toggle', encapsulation: ViewEncapsulation.None, exportAs: 'matButtonToggle', changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disableRipple'], host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n 'role': 'presentation',\n }, template: \"\\n\\n\\n\\n\\n\", styles: [\".mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;border-radius:2px;-webkit-tap-highlight-color:transparent;transform:translateZ(0)}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:4px}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.cdk-high-contrast-active .mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:.5}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:.04}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.12}.cdk-high-contrast-active .mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.5}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{border-radius:inherit;pointer-events:none;opacity:0;top:0;left:0;right:0;bottom:0;position:absolute}.mat-button-toggle-checked .cdk-high-contrast-active .mat-button-toggle-focus-overlay{border-bottom:solid 36px;opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatButtonToggleGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BUTTON_TOGGLE_GROUP]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS]\n }] }];\n }, propDecorators: { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], _buttonElement: [{\n type: ViewChild,\n args: ['button']\n }], id: [{\n type: Input\n }], name: [{\n type: Input\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], appearance: [{\n type: Input\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], change: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatButtonToggleModule {\n}\nMatButtonToggleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatButtonToggleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggleModule, declarations: [MatButtonToggleGroup, MatButtonToggle], imports: [MatCommonModule, MatRippleModule], exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle] });\nMatButtonToggleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggleModule, imports: [[MatCommonModule, MatRippleModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatButtonToggleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatRippleModule],\n exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle],\n declarations: [MatButtonToggleGroup, MatButtonToggle],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, MAT_BUTTON_TOGGLE_GROUP, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggle, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleModule };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Attribute, Optional, Inject, Input, Output, ViewChild, Directive, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\nimport * as i2 from '@angular/material/core';\nimport { mixinTabIndex, mixinColor, mixinDisableRipple, mixinDisabled, MatRipple, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token to be used to override the default options for `mat-checkbox`. */\nconst MAT_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken('mat-checkbox-default-options', {\n providedIn: 'root',\n factory: MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY() {\n return {\n color: 'accent',\n clickAction: 'check-indeterminate',\n };\n}\n\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n// Default checkbox configuration.\nconst defaults = MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY();\n/**\n * Provider Expression that allows mat-checkbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nconst MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatCheckbox),\n multi: true,\n};\n/** Change event object emitted by MatCheckbox. */\nclass MatCheckboxChange {\n}\n// Boilerplate for applying mixins to MatCheckbox.\n/** @docs-private */\nconst _MatCheckboxBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}))));\n/**\n * A material design checkbox component. Supports all of the functionality of an HTML5 checkbox,\n * and exposes a similar API. A MatCheckbox can be either checked, unchecked, indeterminate, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n * See: https://material.io/design/components/selection-controls.html\n */\nclass MatCheckbox extends _MatCheckboxBase {\n constructor(elementRef, _changeDetectorRef, _focusMonitor, _ngZone, tabIndex, _animationMode, _options) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._focusMonitor = _focusMonitor;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._options = _options;\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n this._uniqueId = `mat-checkbox-${++nextUniqueId}`;\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n this.id = this._uniqueId;\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n this.labelPosition = 'after';\n /** Name value will be applied to the input element if present */\n this.name = null;\n /** Event emitted when the checkbox's `checked` value changes. */\n this.change = new EventEmitter();\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n this.indeterminateChange = new EventEmitter();\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n this._onTouched = () => { };\n this._currentAnimationClass = '';\n this._currentCheckState = 0 /* Init */;\n this._controlValueAccessorChangeFn = () => { };\n this._checked = false;\n this._disabled = false;\n this._indeterminate = false;\n this._options = this._options || defaults;\n this.color = this.defaultColor = this._options.color || defaults.color;\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n /** Returns the unique id for the visual hidden input. */\n get inputId() {\n return `${this.id || this._uniqueId}-input`;\n }\n /** Whether the checkbox is required. */\n get required() {\n return this._required;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n this._syncIndeterminate(this._indeterminate);\n }\n // TODO: Delete next major revision.\n ngAfterViewChecked() { }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /**\n * Whether the checkbox is checked.\n */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n const checked = coerceBooleanProperty(value);\n if (checked != this.checked) {\n this._checked = checked;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Whether the checkbox is disabled. This fully overrides the implementation provided by\n * mixinDisabled, but the mixin is still required because mixinTabIndex requires it.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this._disabled = newValue;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n get indeterminate() {\n return this._indeterminate;\n }\n set indeterminate(value) {\n const changed = value != this._indeterminate;\n this._indeterminate = coerceBooleanProperty(value);\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(3 /* Indeterminate */);\n }\n else {\n this._transitionCheckState(this.checked ? 1 /* Checked */ : 2 /* Unchecked */);\n }\n this.indeterminateChange.emit(this._indeterminate);\n }\n this._syncIndeterminate(this._indeterminate);\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges();\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this.checked = !!value;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n _getAriaChecked() {\n if (this.checked) {\n return 'true';\n }\n return this.indeterminate ? 'mixed' : 'false';\n }\n _transitionCheckState(newState) {\n let oldState = this._currentCheckState;\n let element = this._elementRef.nativeElement;\n if (oldState === newState) {\n return;\n }\n if (this._currentAnimationClass.length > 0) {\n element.classList.remove(this._currentAnimationClass);\n }\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(oldState, newState);\n this._currentCheckState = newState;\n if (this._currentAnimationClass.length > 0) {\n element.classList.add(this._currentAnimationClass);\n // Remove the animation class to avoid animation when the checkbox is moved between containers\n const animationClass = this._currentAnimationClass;\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n element.classList.remove(animationClass);\n }, 1000);\n });\n }\n }\n _emitChangeEvent() {\n const event = new MatCheckboxChange();\n event.source = this;\n event.checked = this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(event);\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n /** Toggles the `checked` state of the checkbox. */\n toggle() {\n this.checked = !this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n }\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n * Do not toggle on (change) event since IE doesn't fire change event when\n * indeterminate checkbox is clicked.\n * @param event\n */\n _onInputClick(event) {\n var _a;\n const clickAction = (_a = this._options) === null || _a === void 0 ? void 0 : _a.clickAction;\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `checkbox` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && clickAction !== 'check') {\n Promise.resolve().then(() => {\n this._indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n this._checked = !this._checked;\n this._transitionCheckState(this._checked ? 1 /* Checked */ : 2 /* Unchecked */);\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n }\n else if (!this.disabled && clickAction === 'noop') {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mat-checkbox`.\n this._inputElement.nativeElement.checked = this.checked;\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n /** Focuses the checkbox. */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n }\n else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n _onInteractionEvent(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n _getAnimationClassForCheckStateTransition(oldState, newState) {\n // Don't transition if animations are disabled.\n if (this._animationMode === 'NoopAnimations') {\n return '';\n }\n let animSuffix = '';\n switch (oldState) {\n case 0 /* Init */:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === 1 /* Checked */) {\n animSuffix = 'unchecked-checked';\n }\n else if (newState == 3 /* Indeterminate */) {\n animSuffix = 'unchecked-indeterminate';\n }\n else {\n return '';\n }\n break;\n case 2 /* Unchecked */:\n animSuffix =\n newState === 1 /* Checked */\n ? 'unchecked-checked'\n : 'unchecked-indeterminate';\n break;\n case 1 /* Checked */:\n animSuffix =\n newState === 2 /* Unchecked */\n ? 'checked-unchecked'\n : 'checked-indeterminate';\n break;\n case 3 /* Indeterminate */:\n animSuffix =\n newState === 1 /* Checked */\n ? 'indeterminate-checked'\n : 'indeterminate-unchecked';\n break;\n }\n return `mat-checkbox-anim-${animSuffix}`;\n }\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n */\n _syncIndeterminate(value) {\n const nativeCheckbox = this._inputElement;\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n }\n}\nMatCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i0.NgZone }, { token: 'tabindex', attribute: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_CHECKBOX_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: { disableRipple: \"disableRipple\", color: \"color\", tabIndex: \"tabIndex\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"], id: \"id\", required: \"required\", labelPosition: \"labelPosition\", name: \"name\", value: \"value\", checked: \"checked\", disabled: \"disabled\", indeterminate: \"indeterminate\" }, outputs: { change: \"change\", indeterminateChange: \"indeterminateChange\" }, host: { properties: { \"id\": \"id\", \"attr.tabindex\": \"null\", \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"class.mat-checkbox-indeterminate\": \"indeterminate\", \"class.mat-checkbox-checked\": \"checked\", \"class.mat-checkbox-disabled\": \"disabled\", \"class.mat-checkbox-label-before\": \"labelPosition == \\\"before\\\"\", \"class._mat-animation-noopable\": \"_animationMode === 'NoopAnimations'\" }, classAttribute: \"mat-checkbox\" }, providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"_inputElement\", first: true, predicate: [\"input\"], descendants: true }, { propertyName: \"ripple\", first: true, predicate: MatRipple, descendants: true }], exportAs: [\"matCheckbox\"], usesInheritance: true, ngImport: i0, template: \"\\n\", styles: [\"@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.910259}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);stroke-dashoffset:0}to{stroke-dashoffset:-22.910259}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0deg)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}32.8%,100%{opacity:0;transform:scaleX(0)}}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{display:inline-block;transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);cursor:pointer;-webkit-tap-highlight-color:transparent}._mat-animation-noopable.mat-checkbox{transition:none;animation:none}.mat-checkbox .mat-ripple-element:not(.mat-checkbox-persistent-ripple){opacity:.16}.mat-checkbox .mat-checkbox-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.cdk-high-contrast-active .mat-checkbox.cdk-keyboard-focused .mat-checkbox-ripple{outline:solid 3px}.mat-checkbox-layout{-webkit-user-select:none;user-select:none;cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-label{-webkit-user-select:auto;user-select:auto}.mat-checkbox-inner-container{display:inline-block;height:16px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:16px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1);border-width:2px;border-style:solid}._mat-animation-noopable .mat-checkbox-frame{transition:none}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0, 0, 0.2, 0.1),opacity 90ms cubic-bezier(0, 0, 0.2, 0.1);-webkit-print-color-adjust:exact;color-adjust:exact}._mat-animation-noopable .mat-checkbox-background{transition:none}.cdk-high-contrast-active .mat-checkbox .mat-checkbox-background{background:none}.mat-checkbox-persistent-ripple{display:block;width:100%;height:100%;transform:none}.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:.04}.mat-checkbox.cdk-keyboard-focused .mat-checkbox-persistent-ripple{opacity:.12}.mat-checkbox-persistent-ripple,.mat-checkbox.mat-checkbox-disabled .mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:0}@media(hover: none){.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{display:none}}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.910259;stroke-dasharray:22.910259;stroke-width:2.1333333333px}.cdk-high-contrast-black-on-white .mat-checkbox-checkmark-path{stroke:#000 !important}.mat-checkbox-mixedmark{width:calc(100% - 6px);height:2px;opacity:0;transform:scaleX(0) rotate(0deg);border-radius:2px}.cdk-high-contrast-active .mat-checkbox-mixedmark{height:0;border-top:solid 2px;margin-top:2px}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0deg)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.cdk-high-contrast-active .mat-checkbox-disabled{opacity:.5}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0ms mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0ms mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:300ms linear 0ms mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}\\n\"], directives: [{ type: i2.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { type: i3.CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: [\"cdkObserveContentDisabled\", \"debounce\"], outputs: [\"cdkObserveContent\"], exportAs: [\"cdkObserveContent\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckbox, decorators: [{\n type: Component,\n args: [{ selector: 'mat-checkbox', exportAs: 'matCheckbox', host: {\n 'class': 'mat-checkbox',\n '[id]': 'id',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-checkbox-indeterminate]': 'indeterminate',\n '[class.mat-checkbox-checked]': 'checked',\n '[class.mat-checkbox-disabled]': 'disabled',\n '[class.mat-checkbox-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n }, providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR], inputs: ['disableRipple', 'color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\", styles: [\"@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.910259}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);stroke-dashoffset:0}to{stroke-dashoffset:-22.910259}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0deg)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}32.8%,100%{opacity:0;transform:scaleX(0)}}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{display:inline-block;transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);cursor:pointer;-webkit-tap-highlight-color:transparent}._mat-animation-noopable.mat-checkbox{transition:none;animation:none}.mat-checkbox .mat-ripple-element:not(.mat-checkbox-persistent-ripple){opacity:.16}.mat-checkbox .mat-checkbox-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.cdk-high-contrast-active .mat-checkbox.cdk-keyboard-focused .mat-checkbox-ripple{outline:solid 3px}.mat-checkbox-layout{-webkit-user-select:none;user-select:none;cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-label{-webkit-user-select:auto;user-select:auto}.mat-checkbox-inner-container{display:inline-block;height:16px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:16px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1);border-width:2px;border-style:solid}._mat-animation-noopable .mat-checkbox-frame{transition:none}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0, 0, 0.2, 0.1),opacity 90ms cubic-bezier(0, 0, 0.2, 0.1);-webkit-print-color-adjust:exact;color-adjust:exact}._mat-animation-noopable .mat-checkbox-background{transition:none}.cdk-high-contrast-active .mat-checkbox .mat-checkbox-background{background:none}.mat-checkbox-persistent-ripple{display:block;width:100%;height:100%;transform:none}.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:.04}.mat-checkbox.cdk-keyboard-focused .mat-checkbox-persistent-ripple{opacity:.12}.mat-checkbox-persistent-ripple,.mat-checkbox.mat-checkbox-disabled .mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:0}@media(hover: none){.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{display:none}}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.910259;stroke-dasharray:22.910259;stroke-width:2.1333333333px}.cdk-high-contrast-black-on-white .mat-checkbox-checkmark-path{stroke:#000 !important}.mat-checkbox-mixedmark{width:calc(100% - 6px);height:2px;opacity:0;transform:scaleX(0) rotate(0deg);border-radius:2px}.cdk-high-contrast-active .mat-checkbox-mixedmark{height:0;border-top:solid 2px;margin-top:2px}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0deg)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.cdk-high-contrast-active .mat-checkbox-disabled{opacity:.5}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0ms mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0ms mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:300ms linear 0ms mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_CHECKBOX_DEFAULT_OPTIONS]\n }] }];\n }, propDecorators: { ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], id: [{\n type: Input\n }], required: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], name: [{\n type: Input\n }], change: [{\n type: Output\n }], indeterminateChange: [{\n type: Output\n }], value: [{\n type: Input\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }], ripple: [{\n type: ViewChild,\n args: [MatRipple]\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAT_CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatCheckboxRequiredValidator),\n multi: true,\n};\n/**\n * Validator for Material checkbox's required attribute in template-driven checkbox.\n * Current CheckboxRequiredValidator only work with `input type=checkbox` and does not\n * work with `mat-checkbox`.\n */\nclass MatCheckboxRequiredValidator extends CheckboxRequiredValidator {\n}\nMatCheckboxRequiredValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCheckboxRequiredValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCheckboxRequiredValidator, selector: \"mat-checkbox[required][formControlName],\\n mat-checkbox[required][formControl], mat-checkbox[required][ngModel]\", providers: [MAT_CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckboxRequiredValidator, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-checkbox[required][formControlName],\n mat-checkbox[required][formControl], mat-checkbox[required][ngModel]`,\n providers: [MAT_CHECKBOX_REQUIRED_VALIDATOR],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** This module is used by both original and MDC-based checkbox implementations. */\nclass _MatCheckboxRequiredValidatorModule {\n}\n_MatCheckboxRequiredValidatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatCheckboxRequiredValidatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n_MatCheckboxRequiredValidatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatCheckboxRequiredValidatorModule, declarations: [MatCheckboxRequiredValidator], exports: [MatCheckboxRequiredValidator] });\n_MatCheckboxRequiredValidatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatCheckboxRequiredValidatorModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatCheckboxRequiredValidatorModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [MatCheckboxRequiredValidator],\n declarations: [MatCheckboxRequiredValidator],\n }]\n }] });\nclass MatCheckboxModule {\n}\nMatCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckboxModule, declarations: [MatCheckbox], imports: [MatRippleModule, MatCommonModule, ObserversModule, _MatCheckboxRequiredValidatorModule], exports: [MatCheckbox, MatCommonModule, _MatCheckboxRequiredValidatorModule] });\nMatCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckboxModule, imports: [[MatRippleModule, MatCommonModule, ObserversModule, _MatCheckboxRequiredValidatorModule], MatCommonModule, _MatCheckboxRequiredValidatorModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCheckboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule, ObserversModule, _MatCheckboxRequiredValidatorModule],\n exports: [MatCheckbox, MatCommonModule, _MatCheckboxRequiredValidatorModule],\n declarations: [MatCheckbox],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR, MAT_CHECKBOX_DEFAULT_OPTIONS, MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY, MAT_CHECKBOX_REQUIRED_VALIDATOR, MatCheckbox, MatCheckboxChange, MatCheckboxModule, MatCheckboxRequiredValidator, _MatCheckboxRequiredValidatorModule };\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, EventEmitter, forwardRef, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Optional, ContentChild, ViewChild, Input, Output, QueryList, ContentChildren, NgModule } from '@angular/core';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { Subject, of } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkStepHeader {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n /** Focuses the step header. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\nCdkStepHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepHeader, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepHeader, selector: \"[cdkStepHeader]\", host: { attributes: { \"role\": \"tab\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepHeader, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepHeader]',\n host: {\n 'role': 'tab',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkStepLabel {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkStepLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepLabel, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepLabel, selector: \"[cdkStepLabel]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepLabel]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each stepper component. */\nlet nextId = 0;\n/** Change event emitted on selection changes. */\nclass StepperSelectionEvent {\n}\n/** Enum to represent the different states of the steps. */\nconst STEP_STATE = {\n NUMBER: 'number',\n EDIT: 'edit',\n DONE: 'done',\n ERROR: 'error',\n};\n/** InjectionToken that can be used to specify the global stepper options. */\nconst STEPPER_GLOBAL_OPTIONS = new InjectionToken('STEPPER_GLOBAL_OPTIONS');\nclass CdkStep {\n constructor(_stepper, stepperOptions) {\n this._stepper = _stepper;\n /** Whether user has attempted to move away from the step. */\n this.interacted = false;\n /** Emits when the user has attempted to move away from the step. */\n this.interactedStream = new EventEmitter();\n this._editable = true;\n this._optional = false;\n this._completedOverride = null;\n this._customError = null;\n this._stepperOptions = stepperOptions ? stepperOptions : {};\n this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;\n }\n /** Whether the user can return to this step once it has been marked as completed. */\n get editable() {\n return this._editable;\n }\n set editable(value) {\n this._editable = coerceBooleanProperty(value);\n }\n /** Whether the completion of step is optional. */\n get optional() {\n return this._optional;\n }\n set optional(value) {\n this._optional = coerceBooleanProperty(value);\n }\n /** Whether step is marked as completed. */\n get completed() {\n return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride;\n }\n set completed(value) {\n this._completedOverride = coerceBooleanProperty(value);\n }\n _getDefaultCompleted() {\n return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n }\n /** Whether step has an error. */\n get hasError() {\n return this._customError == null ? this._getDefaultError() : this._customError;\n }\n set hasError(value) {\n this._customError = coerceBooleanProperty(value);\n }\n _getDefaultError() {\n return this.stepControl && this.stepControl.invalid && this.interacted;\n }\n /** Selects this step component. */\n select() {\n this._stepper.selected = this;\n }\n /** Resets the step to its initial state. Note that this includes resetting form data. */\n reset() {\n this.interacted = false;\n if (this._completedOverride != null) {\n this._completedOverride = false;\n }\n if (this._customError != null) {\n this._customError = false;\n }\n if (this.stepControl) {\n this.stepControl.reset();\n }\n }\n ngOnChanges() {\n // Since basically all inputs of the MatStep get proxied through the view down to the\n // underlying MatStepHeader, we have to make sure that change detection runs correctly.\n this._stepper._stateChanged();\n }\n _markAsInteracted() {\n if (!this.interacted) {\n this.interacted = true;\n this.interactedStream.emit(this);\n }\n }\n /** Determines whether the error state can be shown. */\n _showError() {\n var _a;\n // We want to show the error state either if the user opted into/out of it using the\n // global options, or if they've explicitly set it through the `hasError` input.\n return (_a = this._stepperOptions.showError) !== null && _a !== void 0 ? _a : this._customError != null;\n }\n}\nCdkStep.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStep, deps: [{ token: forwardRef(() => CdkStepper) }, { token: STEPPER_GLOBAL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkStep.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStep, selector: \"cdk-step\", inputs: { stepControl: \"stepControl\", label: \"label\", errorMessage: \"errorMessage\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], state: \"state\", editable: \"editable\", optional: \"optional\", completed: \"completed\", hasError: \"hasError\" }, outputs: { interactedStream: \"interacted\" }, queries: [{ propertyName: \"stepLabel\", first: true, predicate: CdkStepLabel, descendants: true }], viewQueries: [{ propertyName: \"content\", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: [\"cdkStep\"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStep, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-step',\n exportAs: 'cdkStep',\n template: '',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }], ctorParameters: function () {\n return [{ type: CdkStepper, decorators: [{\n type: Inject,\n args: [forwardRef(() => CdkStepper)]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [STEPPER_GLOBAL_OPTIONS]\n }] }];\n }, propDecorators: { stepLabel: [{\n type: ContentChild,\n args: [CdkStepLabel]\n }], content: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], stepControl: [{\n type: Input\n }], interactedStream: [{\n type: Output,\n args: ['interacted']\n }], label: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], state: [{\n type: Input\n }], editable: [{\n type: Input\n }], optional: [{\n type: Input\n }], completed: [{\n type: Input\n }], hasError: [{\n type: Input\n }] } });\nclass CdkStepper {\n constructor(_dir, _changeDetectorRef, _elementRef, \n /**\n * @deprecated No longer in use, to be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n this.steps = new QueryList();\n /** List of step headers sorted based on their DOM order. */\n this._sortedHeaders = new QueryList();\n this._linear = false;\n this._selectedIndex = 0;\n /** Event emitted when the selected step has changed. */\n this.selectionChange = new EventEmitter();\n /**\n * @deprecated To be turned into a private property. Use `orientation` instead.\n * @breaking-change 13.0.0\n */\n this._orientation = 'horizontal';\n this._groupId = nextId++;\n }\n /** Whether the validity of previous steps should be checked or not. */\n get linear() {\n return this._linear;\n }\n set linear(value) {\n this._linear = coerceBooleanProperty(value);\n }\n /** The index of the selected step. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(index) {\n var _a;\n const newIndex = coerceNumberProperty(index);\n if (this.steps && this._steps) {\n // Ensure that the index can't be out of bounds.\n if (!this._isValidIndex(newIndex) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');\n }\n (_a = this.selected) === null || _a === void 0 ? void 0 : _a._markAsInteracted();\n if (this._selectedIndex !== newIndex &&\n !this._anyControlsInvalidOrPending(newIndex) &&\n (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable)) {\n this._updateSelectedItemIndex(newIndex);\n }\n }\n else {\n this._selectedIndex = newIndex;\n }\n }\n /** The step that is selected. */\n get selected() {\n return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined;\n }\n set selected(step) {\n this.selectedIndex = step && this.steps ? this.steps.toArray().indexOf(step) : -1;\n }\n /** Orientation of the stepper. */\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n // This is a protected method so that `MatSteppter` can hook into it.\n this._orientation = value;\n if (this._keyManager) {\n this._keyManager.withVerticalOrientation(value === 'vertical');\n }\n }\n ngAfterContentInit() {\n this._steps.changes\n .pipe(startWith(this._steps), takeUntil(this._destroyed))\n .subscribe((steps) => {\n this.steps.reset(steps.filter(step => step._stepper === this));\n this.steps.notifyOnChanges();\n });\n }\n ngAfterViewInit() {\n // If the step headers are defined outside of the `ngFor` that renders the steps, like in the\n // Material stepper, they won't appear in the `QueryList` in the same order as they're\n // rendered in the DOM which will lead to incorrect keyboard navigation. We need to sort\n // them manually to ensure that they're correct. Alternatively, we can change the Material\n // template to inline the headers in the `ngFor`, but that'll result in a lot of\n // code duplciation. See #23539.\n this._stepHeader.changes\n .pipe(startWith(this._stepHeader), takeUntil(this._destroyed))\n .subscribe((headers) => {\n this._sortedHeaders.reset(headers.toArray().sort((a, b) => {\n const documentPosition = a._elementRef.nativeElement.compareDocumentPosition(b._elementRef.nativeElement);\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n }));\n this._sortedHeaders.notifyOnChanges();\n });\n // Note that while the step headers are content children by default, any components that\n // extend this one might have them as view children. We initialize the keyboard handling in\n // AfterViewInit so we're guaranteed for both view and content children to be defined.\n this._keyManager = new FocusKeyManager(this._sortedHeaders)\n .withWrap()\n .withHomeAndEnd()\n .withVerticalOrientation(this._orientation === 'vertical');\n (this._dir ? this._dir.change : of())\n .pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed))\n .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n this._keyManager.updateActiveItem(this._selectedIndex);\n // No need to `takeUntil` here, because we're the ones destroying `steps`.\n this.steps.changes.subscribe(() => {\n if (!this.selected) {\n this._selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n });\n // The logic which asserts that the selected index is within bounds doesn't run before the\n // steps are initialized, because we don't how many steps there are yet so we may have an\n // invalid index on init. If that's the case, auto-correct to the default so we don't throw.\n if (!this._isValidIndex(this._selectedIndex)) {\n this._selectedIndex = 0;\n }\n }\n ngOnDestroy() {\n this.steps.destroy();\n this._sortedHeaders.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Selects and focuses the next step in list. */\n next() {\n this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);\n }\n /** Selects and focuses the previous step in list. */\n previous() {\n this.selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n /** Resets the stepper to its initial state. Note that this includes clearing form data. */\n reset() {\n this._updateSelectedItemIndex(0);\n this.steps.forEach(step => step.reset());\n this._stateChanged();\n }\n /** Returns a unique id for each step label element. */\n _getStepLabelId(i) {\n return `cdk-step-label-${this._groupId}-${i}`;\n }\n /** Returns unique id for each step content element. */\n _getStepContentId(i) {\n return `cdk-step-content-${this._groupId}-${i}`;\n }\n /** Marks the component to be change detected. */\n _stateChanged() {\n this._changeDetectorRef.markForCheck();\n }\n /** Returns position state of the step with the given index. */\n _getAnimationDirection(index) {\n const position = index - this._selectedIndex;\n if (position < 0) {\n return this._layoutDirection() === 'rtl' ? 'next' : 'previous';\n }\n else if (position > 0) {\n return this._layoutDirection() === 'rtl' ? 'previous' : 'next';\n }\n return 'current';\n }\n /** Returns the type of icon to be displayed. */\n _getIndicatorType(index, state = STEP_STATE.NUMBER) {\n const step = this.steps.toArray()[index];\n const isCurrentStep = this._isCurrentStep(index);\n return step._displayDefaultIndicatorType\n ? this._getDefaultIndicatorLogic(step, isCurrentStep)\n : this._getGuidelineLogic(step, isCurrentStep, state);\n }\n _getDefaultIndicatorLogic(step, isCurrentStep) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n }\n else if (!step.completed || isCurrentStep) {\n return STEP_STATE.NUMBER;\n }\n else {\n return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;\n }\n }\n _getGuidelineLogic(step, isCurrentStep, state = STEP_STATE.NUMBER) {\n if (step._showError() && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n }\n else if (step.completed && !isCurrentStep) {\n return STEP_STATE.DONE;\n }\n else if (step.completed && isCurrentStep) {\n return state;\n }\n else if (step.editable && isCurrentStep) {\n return STEP_STATE.EDIT;\n }\n else {\n return state;\n }\n }\n _isCurrentStep(index) {\n return this._selectedIndex === index;\n }\n /** Returns the index of the currently-focused step header. */\n _getFocusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;\n }\n _updateSelectedItemIndex(newIndex) {\n const stepsArray = this.steps.toArray();\n this.selectionChange.emit({\n selectedIndex: newIndex,\n previouslySelectedIndex: this._selectedIndex,\n selectedStep: stepsArray[newIndex],\n previouslySelectedStep: stepsArray[this._selectedIndex],\n });\n // If focus is inside the stepper, move it to the next header, otherwise it may become\n // lost when the active step content is hidden. We can't be more granular with the check\n // (e.g. checking whether focus is inside the active step), because we don't have a\n // reference to the elements that are rendering out the content.\n this._containsFocus()\n ? this._keyManager.setActiveItem(newIndex)\n : this._keyManager.updateActiveItem(newIndex);\n this._selectedIndex = newIndex;\n this._stateChanged();\n }\n _onKeydown(event) {\n const hasModifier = hasModifierKey(event);\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n if (manager.activeItemIndex != null &&\n !hasModifier &&\n (keyCode === SPACE || keyCode === ENTER)) {\n this.selectedIndex = manager.activeItemIndex;\n event.preventDefault();\n }\n else {\n manager.onKeydown(event);\n }\n }\n _anyControlsInvalidOrPending(index) {\n if (this._linear && index >= 0) {\n return this.steps\n .toArray()\n .slice(0, index)\n .some(step => {\n const control = step.stepControl;\n const isIncomplete = control\n ? control.invalid || control.pending || !step.interacted\n : !step.completed;\n return isIncomplete && !step.optional && !step._completedOverride;\n });\n }\n return false;\n }\n _layoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Checks whether the stepper contains the focused element. */\n _containsFocus() {\n const stepperElement = this._elementRef.nativeElement;\n const focusedElement = _getFocusedElementPierceShadowDom();\n return stepperElement === focusedElement || stepperElement.contains(focusedElement);\n }\n /** Checks whether the passed-in index is a valid step index. */\n _isValidIndex(index) {\n return index > -1 && (!this.steps || index < this.steps.length);\n }\n}\nCdkStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepper, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepper, selector: \"[cdkStepper]\", inputs: { linear: \"linear\", selectedIndex: \"selectedIndex\", selected: \"selected\", orientation: \"orientation\" }, outputs: { selectionChange: \"selectionChange\" }, queries: [{ propertyName: \"_steps\", predicate: CdkStep, descendants: true }, { propertyName: \"_stepHeader\", predicate: CdkStepHeader, descendants: true }], exportAs: [\"cdkStepper\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepper, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkStepper]',\n exportAs: 'cdkStepper',\n }]\n }], ctorParameters: function () {\n return [{ type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { _steps: [{\n type: ContentChildren,\n args: [CdkStep, { descendants: true }]\n }], _stepHeader: [{\n type: ContentChildren,\n args: [CdkStepHeader, { descendants: true }]\n }], linear: [{\n type: Input\n }], selectedIndex: [{\n type: Input\n }], selected: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], orientation: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Button that moves to the next step in a stepper workflow. */\nclass CdkStepperNext {\n constructor(_stepper) {\n this._stepper = _stepper;\n /** Type of the next button. Defaults to \"submit\" if not specified. */\n this.type = 'submit';\n }\n}\nCdkStepperNext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperNext, deps: [{ token: CdkStepper }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepperNext.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepperNext, selector: \"button[cdkStepperNext]\", inputs: { type: \"type\" }, host: { listeners: { \"click\": \"_stepper.next()\" }, properties: { \"type\": \"type\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperNext, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[cdkStepperNext]',\n host: {\n '[type]': 'type',\n '(click)': '_stepper.next()',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper }]; }, propDecorators: { type: [{\n type: Input\n }] } });\n/** Button that moves to the previous step in a stepper workflow. */\nclass CdkStepperPrevious {\n constructor(_stepper) {\n this._stepper = _stepper;\n /** Type of the previous button. Defaults to \"button\" if not specified. */\n this.type = 'button';\n }\n}\nCdkStepperPrevious.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperPrevious, deps: [{ token: CdkStepper }], target: i0.ɵɵFactoryTarget.Directive });\nCdkStepperPrevious.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkStepperPrevious, selector: \"button[cdkStepperPrevious]\", inputs: { type: \"type\" }, host: { listeners: { \"click\": \"_stepper.previous()\" }, properties: { \"type\": \"type\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperPrevious, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[cdkStepperPrevious]',\n host: {\n '[type]': 'type',\n '(click)': '_stepper.previous()',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkStepper }]; }, propDecorators: { type: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkStepperModule {\n}\nCdkStepperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkStepperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, declarations: [CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious], imports: [BidiModule], exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious] });\nCdkStepperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, imports: [[BidiModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkStepperModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [CdkStep, CdkStepper, CdkStepHeader, CdkStepLabel, CdkStepperNext, CdkStepperPrevious],\n declarations: [\n CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkStep, CdkStepHeader, CdkStepLabel, CdkStepper, CdkStepperModule, CdkStepperNext, CdkStepperPrevious, STEPPER_GLOBAL_OPTIONS, STEP_STATE, StepperSelectionEvent };\n","import * as i2$1 from '@angular/cdk/portal';\nimport { TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { CdkStepLabel, CdkStepHeader, CdkStep, STEPPER_GLOBAL_OPTIONS, CdkStepper, CdkStepperNext, CdkStepperPrevious, CdkStepperModule } from '@angular/cdk/stepper';\nimport * as i5 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Directive, Injectable, Optional, SkipSelf, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, forwardRef, Inject, ContentChild, QueryList, EventEmitter, ViewChildren, ContentChildren, Output, NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as i1 from '@angular/material/core';\nimport { mixinColor, ErrorStateMatcher, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport * as i3 from '@angular/material/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subject, Subscription } from 'rxjs';\nimport * as i2 from '@angular/cdk/a11y';\nimport { switchMap, map, startWith, takeUntil, distinctUntilChanged } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i3$1 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatStepLabel extends CdkStepLabel {\n}\nMatStepLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepLabel, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatStepLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepLabel, selector: \"[matStepLabel]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[matStepLabel]',\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Stepper data that is required for internationalization. */\nclass MatStepperIntl {\n constructor() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /** Label that is rendered below optional steps. */\n this.optionalLabel = 'Optional';\n /** Label that is used to indicate step as completed to screen readers. */\n this.completedLabel = 'Completed';\n /** Label that is used to indicate step as editable to screen readers. */\n this.editableLabel = 'Editable';\n }\n}\nMatStepperIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMatStepperIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperIntl, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperIntl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** @docs-private */\nfunction MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl) {\n return parentIntl || new MatStepperIntl();\n}\n/** @docs-private */\nconst MAT_STEPPER_INTL_PROVIDER = {\n provide: MatStepperIntl,\n deps: [[new Optional(), new SkipSelf(), MatStepperIntl]],\n useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY,\n};\n\n// Boilerplate for applying mixins to MatStepHeader.\n/** @docs-private */\nconst _MatStepHeaderBase = mixinColor(class MatStepHeaderBase extends CdkStepHeader {\n constructor(elementRef) {\n super(elementRef);\n }\n}, 'primary');\nclass MatStepHeader extends _MatStepHeaderBase {\n constructor(_intl, _focusMonitor, _elementRef, changeDetectorRef) {\n super(_elementRef);\n this._intl = _intl;\n this._focusMonitor = _focusMonitor;\n this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /** Focuses the step header. */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n }\n else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n /** Returns string label of given step if it is a text label. */\n _stringLabel() {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel() {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Template context variables that are exposed to the `matStepperIcon` instances. */\n _getIconContext() {\n return {\n index: this.index,\n active: this.active,\n optional: this.optional,\n };\n }\n _getDefaultTextForState(state) {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\n }\n}\nMatStepHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepHeader, deps: [{ token: MatStepperIntl }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatStepHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepHeader, selector: \"mat-step-header\", inputs: { color: \"color\", state: \"state\", label: \"label\", errorMessage: \"errorMessage\", iconOverrides: \"iconOverrides\", index: \"index\", selected: \"selected\", active: \"active\", optional: \"optional\", disableRipple: \"disableRipple\" }, host: { attributes: { \"role\": \"tab\" }, classAttribute: \"mat-step-header\" }, usesInheritance: true, ngImport: i0, template: \"
\\n\\n
\\n
\\n \\n \\n {{_getDefaultTextForState(state)}}\\n {{_intl.completedLabel}}\\n {{_intl.editableLabel}}\\n {{_getDefaultTextForState(state)}}\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
{{label}}
\\n\\n
{{_intl.optionalLabel}}
\\n
{{errorMessage}}
\\n
\\n\\n\", styles: [\".mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:transparent}.cdk-high-contrast-active .mat-step-header{outline:solid 1px}.cdk-high-contrast-active .mat-step-header.cdk-keyboard-focused,.cdk-high-contrast-active .mat-step-header.cdk-program-focused{outline:solid 3px}.cdk-high-contrast-active .mat-step-header[aria-selected=true] .mat-step-label{text-decoration:underline}.mat-step-optional,.mat-step-sub-label-error{font-size:12px}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.mat-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"], components: [{ type: i3.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], directives: [{ type: i1.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { type: i5.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i5.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i5.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i5.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }, { type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-step-header', inputs: ['color'], host: {\n 'class': 'mat-step-header',\n 'role': 'tab',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n\\n
\\n
\\n \\n \\n {{_getDefaultTextForState(state)}}\\n {{_intl.completedLabel}}\\n {{_intl.editableLabel}}\\n {{_getDefaultTextForState(state)}}\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
{{label}}
\\n\\n
{{_intl.optionalLabel}}
\\n
{{errorMessage}}
\\n
\\n\\n\", styles: [\".mat-step-header{overflow:hidden;outline:none;cursor:pointer;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:transparent}.cdk-high-contrast-active .mat-step-header{outline:solid 1px}.cdk-high-contrast-active .mat-step-header.cdk-keyboard-focused,.cdk-high-contrast-active .mat-step-header.cdk-program-focused{outline:solid 3px}.cdk-high-contrast-active .mat-step-header[aria-selected=true] .mat-step-label{text-decoration:underline}.mat-step-optional,.mat-step-sub-label-error{font-size:12px}.mat-step-icon{border-radius:50%;height:24px;width:24px;flex-shrink:0;position:relative}.mat-step-icon-content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:flex}.mat-step-icon .mat-icon{font-size:16px;height:16px;width:16px}.mat-step-icon-state-error .mat-icon{font-size:24px;height:24px;width:24px}.mat-step-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:50px;vertical-align:middle}.mat-step-text-label{text-overflow:ellipsis;overflow:hidden}.mat-step-header .mat-step-header-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"] }]\n }], ctorParameters: function () { return [{ type: MatStepperIntl }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { state: [{\n type: Input\n }], label: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], iconOverrides: [{\n type: Input\n }], index: [{\n type: Input\n }], selected: [{\n type: Input\n }], active: [{\n type: Input\n }], optional: [{\n type: Input\n }], disableRipple: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the Material steppers.\n * @docs-private\n */\nconst matStepperAnimations = {\n /** Animation that transitions the step along the X axis in a horizontal stepper. */\n horizontalStepTransition: trigger('horizontalStepTransition', [\n state('previous', style({ transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden' })),\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', style({ transform: 'none', visibility: 'inherit' })),\n state('next', style({ transform: 'translate3d(100%, 0, 0)', visibility: 'hidden' })),\n transition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n ]),\n /** Animation that transitions the step along the Y axis in a vertical stepper. */\n verticalStepTransition: trigger('verticalStepTransition', [\n state('previous', style({ height: '0px', visibility: 'hidden' })),\n state('next', style({ height: '0px', visibility: 'hidden' })),\n // Transition to `inherit`, rather than `visible`,\n // because visibility on a child element the one from the parent,\n // making this element focusable inside of a `hidden` element.\n state('current', style({ height: '*', visibility: 'inherit' })),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Template to be used to override the icons inside the step header.\n */\nclass MatStepperIcon {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nMatStepperIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperIcon, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatStepperIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepperIcon, selector: \"ng-template[matStepperIcon]\", inputs: { name: [\"matStepperIcon\", \"name\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperIcon, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matStepperIcon]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { name: [{\n type: Input,\n args: ['matStepperIcon']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Content for a `mat-step` that will be rendered lazily.\n */\nclass MatStepContent {\n constructor(_template) {\n this._template = _template;\n }\n}\nMatStepContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatStepContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepContent, selector: \"ng-template[matStepContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matStepContent]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\nclass MatStep extends CdkStep {\n constructor(stepper, _errorStateMatcher, _viewContainerRef, stepperOptions) {\n super(stepper, stepperOptions);\n this._errorStateMatcher = _errorStateMatcher;\n this._viewContainerRef = _viewContainerRef;\n this._isSelected = Subscription.EMPTY;\n }\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(switchMap(() => {\n return this._stepper.selectionChange.pipe(map(event => event.selectedStep === this), startWith(this._stepper.selected === this));\n }))\n .subscribe(isSelected => {\n if (isSelected && this._lazyContent && !this._portal) {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n }\n });\n }\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control, form) {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n return originalErrorState || customErrorState;\n }\n}\nMatStep.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStep, deps: [{ token: forwardRef(() => MatStepper) }, { token: i1.ErrorStateMatcher, skipSelf: true }, { token: i0.ViewContainerRef }, { token: STEPPER_GLOBAL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatStep.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStep, selector: \"mat-step\", inputs: { color: \"color\" }, providers: [\n { provide: ErrorStateMatcher, useExisting: MatStep },\n { provide: CdkStep, useExisting: MatStep },\n ], queries: [{ propertyName: \"stepLabel\", first: true, predicate: MatStepLabel, descendants: true }, { propertyName: \"_lazyContent\", first: true, predicate: MatStepContent, descendants: true }], exportAs: [\"matStep\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n\\n\", directives: [{ type: i2$1.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStep, decorators: [{\n type: Component,\n args: [{ selector: 'mat-step', providers: [\n { provide: ErrorStateMatcher, useExisting: MatStep },\n { provide: CdkStep, useExisting: MatStep },\n ], encapsulation: ViewEncapsulation.None, exportAs: 'matStep', changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n\\n\" }]\n }], ctorParameters: function () {\n return [{ type: MatStepper, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatStepper)]\n }] }, { type: i1.ErrorStateMatcher, decorators: [{\n type: SkipSelf\n }] }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [STEPPER_GLOBAL_OPTIONS]\n }] }];\n }, propDecorators: { stepLabel: [{\n type: ContentChild,\n args: [MatStepLabel]\n }], color: [{\n type: Input\n }], _lazyContent: [{\n type: ContentChild,\n args: [MatStepContent, { static: false }]\n }] } });\n/**\n * Proxies the public APIs from `MatStepper` to the deprecated `MatHorizontalStepper` and\n * `MatVerticalStepper`.\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n * @docs-private\n */\nclass _MatProxyStepperBase extends CdkStepper {\n}\n_MatProxyStepperBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatProxyStepperBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });\n_MatProxyStepperBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatProxyStepperBase, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatProxyStepperBase, decorators: [{\n type: Directive\n }] });\n/**\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n */\nclass MatHorizontalStepper extends _MatProxyStepperBase {\n}\nMatHorizontalStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHorizontalStepper, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHorizontalStepper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatHorizontalStepper, selector: \"mat-horizontal-stepper\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHorizontalStepper, decorators: [{\n type: Directive,\n args: [{ selector: 'mat-horizontal-stepper' }]\n }] });\n/**\n * @deprecated Use `MatStepper` instead.\n * @breaking-change 13.0.0\n */\nclass MatVerticalStepper extends _MatProxyStepperBase {\n}\nMatVerticalStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatVerticalStepper, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatVerticalStepper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatVerticalStepper, selector: \"mat-vertical-stepper\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatVerticalStepper, decorators: [{\n type: Directive,\n args: [{ selector: 'mat-vertical-stepper' }]\n }] });\nclass MatStepper extends CdkStepper {\n constructor(dir, changeDetectorRef, elementRef, _document) {\n super(dir, changeDetectorRef, elementRef, _document);\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n this.steps = new QueryList();\n /** Event emitted when the current step is done transitioning in. */\n this.animationDone = new EventEmitter();\n /**\n * Whether the label should display in bottom or end position.\n * Only applies in the `horizontal` orientation.\n */\n this.labelPosition = 'end';\n /** Consumer-specified template-refs to be used to override the header icons. */\n this._iconOverrides = {};\n /** Stream of animation `done` events when the body expands/collapses. */\n this._animationDone = new Subject();\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\n this.orientation = nodeName === 'mat-vertical-stepper' ? 'vertical' : 'horizontal';\n }\n ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({ name, templateRef }) => (this._iconOverrides[name] = templateRef));\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n this._animationDone\n .pipe(\n // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n // See https://github.com/angular/angular/issues/24084\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState), takeUntil(this._destroyed))\n .subscribe(event => {\n if (event.toState === 'current') {\n this.animationDone.emit();\n }\n });\n }\n _stepIsNavigable(index, step) {\n return step.completed || this.selectedIndex === index || !this.linear;\n }\n}\nMatStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepper, deps: [{ token: i3$1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });\nMatStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepper, selector: \"mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]\", inputs: { selectedIndex: \"selectedIndex\", disableRipple: \"disableRipple\", color: \"color\", labelPosition: \"labelPosition\" }, outputs: { animationDone: \"animationDone\" }, host: { attributes: { \"role\": \"tablist\" }, properties: { \"class.mat-stepper-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.mat-stepper-vertical\": \"orientation === \\\"vertical\\\"\", \"class.mat-stepper-label-position-end\": \"orientation === \\\"horizontal\\\" && labelPosition == \\\"end\\\"\", \"class.mat-stepper-label-position-bottom\": \"orientation === \\\"horizontal\\\" && labelPosition == \\\"bottom\\\"\", \"attr.aria-orientation\": \"orientation\" } }, providers: [\n { provide: CdkStepper, useExisting: MatStepper },\n { provide: MatHorizontalStepper, useExisting: MatStepper },\n { provide: MatVerticalStepper, useExisting: MatStepper },\n ], queries: [{ propertyName: \"_steps\", predicate: MatStep, descendants: true }, { propertyName: \"_icons\", predicate: MatStepperIcon, descendants: true }], viewQueries: [{ propertyName: \"_stepHeader\", predicate: MatStepHeader, descendants: true }], exportAs: [\"matStepper\", \"matVerticalStepper\", \"matHorizontalStepper\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\\n\\n\\n \\n\\n\", styles: [\".mat-stepper-vertical,.mat-stepper-horizontal{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:\\\"\\\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{outline:0}.mat-horizontal-stepper-content[aria-expanded=false]{height:0;overflow:hidden}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.cdk-high-contrast-active .mat-horizontal-content-container{outline:solid 1px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}.cdk-high-contrast-active .mat-vertical-content-container{outline:solid 1px}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:\\\"\\\";position:absolute;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\\n\"], components: [{ type: MatStepHeader, selector: \"mat-step-header\", inputs: [\"color\", \"state\", \"label\", \"errorMessage\", \"iconOverrides\", \"index\", \"selected\", \"active\", \"optional\", \"disableRipple\"] }], directives: [{ type: i5.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i5.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i5.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i5.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n matStepperAnimations.horizontalStepTransition,\n matStepperAnimations.verticalStepTransition,\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepper, decorators: [{\n type: Component,\n args: [{ selector: 'mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]', exportAs: 'matStepper, matVerticalStepper, matHorizontalStepper', inputs: ['selectedIndex'], host: {\n '[class.mat-stepper-horizontal]': 'orientation === \"horizontal\"',\n '[class.mat-stepper-vertical]': 'orientation === \"vertical\"',\n '[class.mat-stepper-label-position-end]': 'orientation === \"horizontal\" && labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]': 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\n '[attr.aria-orientation]': 'orientation',\n 'role': 'tablist',\n }, animations: [\n matStepperAnimations.horizontalStepTransition,\n matStepperAnimations.verticalStepTransition,\n ], providers: [\n { provide: CdkStepper, useExisting: MatStepper },\n { provide: MatHorizontalStepper, useExisting: MatStepper },\n { provide: MatVerticalStepper, useExisting: MatStepper },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n\\n\\n\\n \\n\\n\", styles: [\".mat-stepper-vertical,.mat-stepper-horizontal{display:block}.mat-horizontal-stepper-header-container{white-space:nowrap;display:flex;align-items:center}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header-container{align-items:flex-start}.mat-stepper-horizontal-line{border-top-width:1px;border-top-style:solid;flex:auto;height:0;margin:0 -16px;min-width:32px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{margin:0;min-width:0;position:relative}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{border-top-width:1px;border-top-style:solid;content:\\\"\\\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px)}.mat-horizontal-stepper-header{display:flex;height:72px;overflow:hidden;align-items:center;padding:0 24px}.mat-horizontal-stepper-header .mat-step-icon{margin-right:8px;flex:none}[dir=rtl] .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:8px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header{box-sizing:border-box;flex-direction:column;height:auto}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::after,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::after{right:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child)::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child)::before{left:0}[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:last-child::before,[dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:first-child::after{display:none}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-icon{margin-right:0;margin-left:0}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header .mat-step-label{padding:16px 0 0 0;text-align:center;width:100%}.mat-vertical-stepper-header{display:flex;align-items:center;height:24px}.mat-vertical-stepper-header .mat-step-icon{margin-right:12px}[dir=rtl] .mat-vertical-stepper-header .mat-step-icon{margin-right:0;margin-left:12px}.mat-horizontal-stepper-content{outline:0}.mat-horizontal-stepper-content[aria-expanded=false]{height:0;overflow:hidden}.mat-horizontal-content-container{overflow:hidden;padding:0 24px 24px 24px}.cdk-high-contrast-active .mat-horizontal-content-container{outline:solid 1px}.mat-vertical-content-container{margin-left:36px;border:0;position:relative}.cdk-high-contrast-active .mat-vertical-content-container{outline:solid 1px}[dir=rtl] .mat-vertical-content-container{margin-left:0;margin-right:36px}.mat-stepper-vertical-line::before{content:\\\"\\\";position:absolute;left:0;border-left-width:1px;border-left-style:solid}[dir=rtl] .mat-stepper-vertical-line::before{left:auto;right:0}.mat-vertical-stepper-content{overflow:hidden;outline:0}.mat-vertical-content{padding:0 24px 24px 24px}.mat-step:last-child .mat-vertical-content-container{border:none}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i3$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { _stepHeader: [{\n type: ViewChildren,\n args: [MatStepHeader]\n }], _steps: [{\n type: ContentChildren,\n args: [MatStep, { descendants: true }]\n }], _icons: [{\n type: ContentChildren,\n args: [MatStepperIcon, { descendants: true }]\n }], animationDone: [{\n type: Output\n }], disableRipple: [{\n type: Input\n }], color: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Button that moves to the next step in a stepper workflow. */\nclass MatStepperNext extends CdkStepperNext {\n}\nMatStepperNext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperNext, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatStepperNext.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepperNext, selector: \"button[matStepperNext]\", inputs: { type: \"type\" }, host: { properties: { \"type\": \"type\" }, classAttribute: \"mat-stepper-next\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperNext, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n inputs: ['type'],\n }]\n }] });\n/** Button that moves to the previous step in a stepper workflow. */\nclass MatStepperPrevious extends CdkStepperPrevious {\n}\nMatStepperPrevious.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperPrevious, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatStepperPrevious.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStepperPrevious, selector: \"button[matStepperPrevious]\", inputs: { type: \"type\" }, host: { properties: { \"type\": \"type\" }, classAttribute: \"mat-stepper-previous\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperPrevious, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n inputs: ['type'],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatStepperModule {\n}\nMatStepperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatStepperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperModule, declarations: [MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent], imports: [MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule], exports: [MatCommonModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent] });\nMatStepperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperModule, providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher], imports: [[\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStepperModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n MatCommonModule,\n CommonModule,\n PortalModule,\n MatButtonModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n ],\n exports: [\n MatCommonModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n declarations: [\n MatHorizontalStepper,\n MatVerticalStepper,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_STEPPER_INTL_PROVIDER, MAT_STEPPER_INTL_PROVIDER_FACTORY, MatHorizontalStepper, MatStep, MatStepContent, MatStepHeader, MatStepLabel, MatStepper, MatStepperIcon, MatStepperIntl, MatStepperModule, MatStepperNext, MatStepperPrevious, MatVerticalStepper, matStepperAnimations };\n","import * as i8 from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport * as i9 from '@angular/cdk/overlay';\nimport { Overlay, FlexibleConnectedPositionStrategy, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport * as i7 from '@angular/cdk/portal';\nimport { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Injectable, Optional, SkipSelf, InjectionToken, Inject, ViewChild, forwardRef, Directive, Attribute, ContentChild, InjectFlags, Self, TemplateRef, NgModule } from '@angular/core';\nimport * as i3 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i1$1 from '@angular/material/core';\nimport { DateAdapter, MAT_DATE_FORMATS, mixinColor, mixinErrorState, MatCommonModule } from '@angular/material/core';\nimport { Subject, Subscription, merge, of } from 'rxjs';\nimport { ESCAPE, hasModifierKey, SPACE, ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW, BACKSPACE } from '@angular/cdk/keycodes';\nimport { take, startWith, filter } from 'rxjs/operators';\nimport * as i2 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { trigger, transition, animate, keyframes, style, state } from '@angular/animations';\nimport * as i2$2 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators, NgControl } from '@angular/forms';\nimport * as i2$1 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD, MatFormFieldControl } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction createMissingDateImplError(provider) {\n return Error(`MatDatepicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: MatNativeDateModule, MatMomentDateModule, or provide a ` +\n `custom implementation.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nclass MatCalendarCell {\n constructor(value, displayValue, ariaLabel, enabled, cssClasses = {}, compareValue = value, rawValue) {\n this.value = value;\n this.displayValue = displayValue;\n this.ariaLabel = ariaLabel;\n this.enabled = enabled;\n this.cssClasses = cssClasses;\n this.compareValue = compareValue;\n this.rawValue = rawValue;\n }\n}\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\nclass MatCalendarBody {\n constructor(_elementRef, _ngZone) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** The number of columns in the table. */\n this.numCols = 7;\n /** The cell number of the active cell in the table. */\n this.activeCell = 0;\n /** Whether a range is being selected. */\n this.isRange = false;\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n this.cellAspectRatio = 1;\n /** Start of the preview range. */\n this.previewStart = null;\n /** End of the preview range. */\n this.previewEnd = null;\n /** Emits when a new value is selected. */\n this.selectedValueChange = new EventEmitter();\n /** Emits when the preview has changed as a result of a user action. */\n this.previewChange = new EventEmitter();\n /**\n * Event handler for when the user enters an element\n * inside the calendar body (e.g. by hovering in or focus).\n */\n this._enterHandler = (event) => {\n if (this._skipNextFocus && event.type === 'focus') {\n this._skipNextFocus = false;\n return;\n }\n // We only need to hit the zone when we're selecting a range.\n if (event.target && this.isRange) {\n const cell = this._getCellFromElement(event.target);\n if (cell) {\n this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\n }\n }\n };\n /**\n * Event handler for when the user's pointer leaves an element\n * inside the calendar body (e.g. by hovering out or blurring).\n */\n this._leaveHandler = (event) => {\n // We only need to hit the zone when we're selecting a range.\n if (this.previewEnd !== null && this.isRange) {\n // Only reset the preview end value when leaving cells. This looks better, because\n // we have a gap between the cells and the rows and we don't want to remove the\n // range just for it to show up again when the user moves a few pixels to the side.\n if (event.target && this._getCellFromElement(event.target)) {\n this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\n }\n }\n };\n _ngZone.runOutsideAngular(() => {\n const element = _elementRef.nativeElement;\n element.addEventListener('mouseenter', this._enterHandler, true);\n element.addEventListener('focus', this._enterHandler, true);\n element.addEventListener('mouseleave', this._leaveHandler, true);\n element.addEventListener('blur', this._leaveHandler, true);\n });\n }\n /** Called when a cell is clicked. */\n _cellClicked(cell, event) {\n if (cell.enabled) {\n this.selectedValueChange.emit({ value: cell.value, event });\n }\n }\n /** Returns whether a cell should be marked as selected. */\n _isSelected(value) {\n return this.startValue === value || this.endValue === value;\n }\n ngOnChanges(changes) {\n const columnChanges = changes['numCols'];\n const { rows, numCols } = this;\n if (changes['rows'] || columnChanges) {\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n this._cellPadding = `${(50 * this.cellAspectRatio) / numCols}%`;\n }\n if (columnChanges || !this._cellWidth) {\n this._cellWidth = `${100 / numCols}%`;\n }\n }\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('mouseenter', this._enterHandler, true);\n element.removeEventListener('focus', this._enterHandler, true);\n element.removeEventListener('mouseleave', this._leaveHandler, true);\n element.removeEventListener('blur', this._leaveHandler, true);\n }\n /** Returns whether a cell is active. */\n _isActiveCell(rowIndex, colIndex) {\n let cellNumber = rowIndex * this.numCols + colIndex;\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n return cellNumber == this.activeCell;\n }\n /**\n * Focuses the active cell after the microtask queue is empty.\n *\n * Adding a 0ms setTimeout seems to fix Voiceover losing focus when pressing PageUp/PageDown\n * (issue #24330).\n *\n * Determined a 0ms by gradually increasing duration from 0 and testing two use cases with screen\n * reader enabled:\n *\n * 1. Pressing PageUp/PageDown repeatedly with pausing between each key press.\n * 2. Pressing and holding the PageDown key with repeated keys enabled.\n *\n * Test 1 worked roughly 95-99% of the time with 0ms and got a little bit better as the duration\n * increased. Test 2 got slightly better until the duration was long enough to interfere with\n * repeated keys. If the repeated key speed was faster than the timeout duration, then pressing\n * and holding pagedown caused the entire page to scroll.\n *\n * Since repeated key speed can verify across machines, determined that any duration could\n * potentially interfere with repeated keys. 0ms would be best because it almost entirely\n * eliminates the focus being lost in Voiceover (#24330) without causing unintended side effects.\n * Adding delay also complicates writing tests.\n */\n _focusActiveCell(movePreview = true) {\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n setTimeout(() => {\n const activeCell = this._elementRef.nativeElement.querySelector('.mat-calendar-body-active');\n if (activeCell) {\n if (!movePreview) {\n this._skipNextFocus = true;\n }\n activeCell.focus();\n }\n });\n });\n });\n }\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value) {\n return isStart(value, this.startValue, this.endValue);\n }\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value) {\n return isEnd(value, this.startValue, this.endValue);\n }\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value) {\n return isInRange(value, this.startValue, this.endValue, this.isRange);\n }\n /** Gets whether a value is the start of the comparison range. */\n _isComparisonStart(value) {\n return isStart(value, this.comparisonStart, this.comparisonEnd);\n }\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\n _isComparisonBridgeStart(value, rowIndex, colIndex) {\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\n return false;\n }\n let previousCell = this.rows[rowIndex][colIndex - 1];\n if (!previousCell) {\n const previousRow = this.rows[rowIndex - 1];\n previousCell = previousRow && previousRow[previousRow.length - 1];\n }\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\n }\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\n _isComparisonBridgeEnd(value, rowIndex, colIndex) {\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\n return false;\n }\n let nextCell = this.rows[rowIndex][colIndex + 1];\n if (!nextCell) {\n const nextRow = this.rows[rowIndex + 1];\n nextCell = nextRow && nextRow[0];\n }\n return nextCell && !this._isRangeStart(nextCell.compareValue);\n }\n /** Gets whether a value is the end of the comparison range. */\n _isComparisonEnd(value) {\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\n }\n /** Gets whether a value is within the current comparison range. */\n _isInComparisonRange(value) {\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\n }\n /**\n * Gets whether a value is the same as the start and end of the comparison range.\n * For context, the functions that we use to determine whether something is the start/end of\n * a range don't allow for the start and end to be on the same day, because we'd have to use\n * much more specific CSS selectors to style them correctly in all scenarios. This is fine for\n * the regular range, because when it happens, the selected styles take over and still show where\n * the range would've been, however we don't have these selected styles for a comparison range.\n * This function is used to apply a class that serves the same purpose as the one for selected\n * dates, but it only applies in the context of a comparison range.\n */\n _isComparisonIdentical(value) {\n // Note that we don't need to null check the start/end\n // here, because the `value` will always be defined.\n return this.comparisonStart === this.comparisonEnd && value === this.comparisonStart;\n }\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value) {\n return isStart(value, this.previewStart, this.previewEnd);\n }\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value) {\n return isEnd(value, this.previewStart, this.previewEnd);\n }\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value) {\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\n }\n /** Finds the MatCalendarCell that corresponds to a DOM node. */\n _getCellFromElement(element) {\n let cell;\n if (isTableCell(element)) {\n cell = element;\n }\n else if (isTableCell(element.parentNode)) {\n cell = element.parentNode;\n }\n if (cell) {\n const row = cell.getAttribute('data-mat-row');\n const col = cell.getAttribute('data-mat-col');\n if (row && col) {\n return this.rows[parseInt(row)][parseInt(col)];\n }\n }\n return null;\n }\n}\nMatCalendarBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCalendarBody, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nMatCalendarBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: { label: \"label\", rows: \"rows\", todayValue: \"todayValue\", startValue: \"startValue\", endValue: \"endValue\", labelMinRequiredCells: \"labelMinRequiredCells\", numCols: \"numCols\", activeCell: \"activeCell\", isRange: \"isRange\", cellAspectRatio: \"cellAspectRatio\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", previewStart: \"previewStart\", previewEnd: \"previewEnd\" }, outputs: { selectedValueChange: \"selectedValueChange\", previewChange: \"previewChange\" }, host: { classAttribute: \"mat-calendar-body\" }, exportAs: [\"matCalendarBody\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n \\n {{label}}\\n \\n\\n\\n\\n\\n \\n \\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\n \\n \\n \\n \\n
\\n {{item.displayValue}}\\n
\\n
\\n \\n \\n\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content,.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content{outline:dotted 2px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content.mat-calendar-body-selected,.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content.mat-calendar-body-selected{outline:solid 3px}.cdk-high-contrast-active .mat-calendar-body-cell::before,.cdk-high-contrast-active .mat-calendar-body-cell::after,.cdk-high-contrast-active .mat-calendar-body-selected{background:none}.cdk-high-contrast-active .mat-calendar-body-in-range::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-start::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.cdk-high-contrast-active .mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}[dir=rtl] .mat-calendar-body-label{text-align:right}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCalendarBody, decorators: [{\n type: Component,\n args: [{ selector: '[mat-calendar-body]', host: {\n 'class': 'mat-calendar-body',\n }, exportAs: 'matCalendarBody', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n \\n {{label}}\\n \\n\\n\\n\\n\\n \\n \\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\n \\n \\n \\n \\n
\\n {{item.displayValue}}\\n
\\n
\\n \\n \\n\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content,.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content{outline:dotted 2px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content.mat-calendar-body-selected,.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content.mat-calendar-body-selected{outline:solid 3px}.cdk-high-contrast-active .mat-calendar-body-cell::before,.cdk-high-contrast-active .mat-calendar-body-cell::after,.cdk-high-contrast-active .mat-calendar-body-selected{background:none}.cdk-high-contrast-active .mat-calendar-body-in-range::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-start::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.cdk-high-contrast-active .mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}[dir=rtl] .mat-calendar-body-label{text-align:right}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { label: [{\n type: Input\n }], rows: [{\n type: Input\n }], todayValue: [{\n type: Input\n }], startValue: [{\n type: Input\n }], endValue: [{\n type: Input\n }], labelMinRequiredCells: [{\n type: Input\n }], numCols: [{\n type: Input\n }], activeCell: [{\n type: Input\n }], isRange: [{\n type: Input\n }], cellAspectRatio: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], previewStart: [{\n type: Input\n }], previewEnd: [{\n type: Input\n }], selectedValueChange: [{\n type: Output\n }], previewChange: [{\n type: Output\n }] } });\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node) {\n return node.nodeName === 'TD';\n}\n/** Checks whether a value is the start of a range. */\nfunction isStart(value, start, end) {\n return end !== null && start !== end && value < end && value === start;\n}\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value, start, end) {\n return start !== null && start !== end && value >= start && value === end;\n}\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value, start, end, rangeEnabled) {\n return (rangeEnabled &&\n start !== null &&\n end !== null &&\n start !== end &&\n value >= start &&\n value <= end);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** A class representing a range of dates. */\nclass DateRange {\n constructor(\n /** The start date of the range. */\n start, \n /** The end date of the range. */\n end) {\n this.start = start;\n this.end = end;\n }\n}\n/**\n * A selection model containing a date selection.\n * @docs-private\n */\nclass MatDateSelectionModel {\n constructor(\n /** The current selection. */\n selection, _adapter) {\n this.selection = selection;\n this._adapter = _adapter;\n this._selectionChanged = new Subject();\n /** Emits when the selection has changed. */\n this.selectionChanged = this._selectionChanged;\n this.selection = selection;\n }\n /**\n * Updates the current selection in the model.\n * @param value New selection that should be assigned.\n * @param source Object that triggered the selection change.\n */\n updateSelection(value, source) {\n const oldValue = this.selection;\n this.selection = value;\n this._selectionChanged.next({ selection: value, source, oldValue });\n }\n ngOnDestroy() {\n this._selectionChanged.complete();\n }\n _isValidDateInstance(date) {\n return this._adapter.isDateInstance(date) && this._adapter.isValid(date);\n }\n}\nMatDateSelectionModel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateSelectionModel, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Injectable });\nMatDateSelectionModel.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateSelectionModel });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined }, { type: i1$1.DateAdapter }]; } });\n/**\n * A selection model that contains a single date.\n * @docs-private\n */\nclass MatSingleDateSelectionModel extends MatDateSelectionModel {\n constructor(adapter) {\n super(null, adapter);\n }\n /**\n * Adds a date to the current selection. In the case of a single date selection, the added date\n * simply overwrites the previous selection\n */\n add(date) {\n super.updateSelection(date, this);\n }\n /** Checks whether the current selection is valid. */\n isValid() {\n return this.selection != null && this._isValidDateInstance(this.selection);\n }\n /**\n * Checks whether the current selection is complete. In the case of a single date selection, this\n * is true if the current selection is not null.\n */\n isComplete() {\n return this.selection != null;\n }\n /** Clones the selection model. */\n clone() {\n const clone = new MatSingleDateSelectionModel(this._adapter);\n clone.updateSelection(this.selection, this);\n return clone;\n }\n}\nMatSingleDateSelectionModel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSingleDateSelectionModel, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nMatSingleDateSelectionModel.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSingleDateSelectionModel });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSingleDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; } });\n/**\n * A selection model that contains a date range.\n * @docs-private\n */\nclass MatRangeDateSelectionModel extends MatDateSelectionModel {\n constructor(adapter) {\n super(new DateRange(null, null), adapter);\n }\n /**\n * Adds a date to the current selection. In the case of a date range selection, the added date\n * fills in the next `null` value in the range. If both the start and the end already have a date,\n * the selection is reset so that the given date is the new `start` and the `end` is null.\n */\n add(date) {\n let { start, end } = this.selection;\n if (start == null) {\n start = date;\n }\n else if (end == null) {\n end = date;\n }\n else {\n start = date;\n end = null;\n }\n super.updateSelection(new DateRange(start, end), this);\n }\n /** Checks whether the current selection is valid. */\n isValid() {\n const { start, end } = this.selection;\n // Empty ranges are valid.\n if (start == null && end == null) {\n return true;\n }\n // Complete ranges are only valid if both dates are valid and the start is before the end.\n if (start != null && end != null) {\n return (this._isValidDateInstance(start) &&\n this._isValidDateInstance(end) &&\n this._adapter.compareDate(start, end) <= 0);\n }\n // Partial ranges are valid if the start/end is valid.\n return ((start == null || this._isValidDateInstance(start)) &&\n (end == null || this._isValidDateInstance(end)));\n }\n /**\n * Checks whether the current selection is complete. In the case of a date range selection, this\n * is true if the current selection has a non-null `start` and `end`.\n */\n isComplete() {\n return this.selection.start != null && this.selection.end != null;\n }\n /** Clones the selection model. */\n clone() {\n const clone = new MatRangeDateSelectionModel(this._adapter);\n clone.updateSelection(this.selection, this);\n return clone;\n }\n}\nMatRangeDateSelectionModel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRangeDateSelectionModel, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nMatRangeDateSelectionModel.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRangeDateSelectionModel });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRangeDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; } });\n/** @docs-private */\nfunction MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {\n return parent || new MatSingleDateSelectionModel(adapter);\n}\n/**\n * Used to provide a single selection model to a component.\n * @docs-private\n */\nconst MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY,\n};\n/** @docs-private */\nfunction MAT_RANGE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {\n return parent || new MatRangeDateSelectionModel(adapter);\n}\n/**\n * Used to provide a range selection model to a component.\n * @docs-private\n */\nconst MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_RANGE_DATE_SELECTION_MODEL_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token used to customize the date range selection behavior. */\nconst MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('MAT_DATE_RANGE_SELECTION_STRATEGY');\n/** Provides the default date range selection behavior. */\nclass DefaultMatCalendarRangeStrategy {\n constructor(_dateAdapter) {\n this._dateAdapter = _dateAdapter;\n }\n selectionFinished(date, currentRange) {\n let { start, end } = currentRange;\n if (start == null) {\n start = date;\n }\n else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n end = date;\n }\n else {\n start = date;\n end = null;\n }\n return new DateRange(start, end);\n }\n createPreview(activeDate, currentRange) {\n let start = null;\n let end = null;\n if (currentRange.start && !currentRange.end && activeDate) {\n start = currentRange.start;\n end = activeDate;\n }\n return new DateRange(start, end);\n }\n}\nDefaultMatCalendarRangeStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DefaultMatCalendarRangeStrategy, deps: [{ token: i1$1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\nDefaultMatCalendarRangeStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DefaultMatCalendarRangeStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DefaultMatCalendarRangeStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.DateAdapter }]; } });\n/** @docs-private */\nfunction MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY(parent, adapter) {\n return parent || new DefaultMatCalendarRangeStrategy(adapter);\n}\n/** @docs-private */\nconst MAT_CALENDAR_RANGE_STRATEGY_PROVIDER = {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), MAT_DATE_RANGE_SELECTION_STRATEGY], DateAdapter],\n useFactory: MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DAYS_PER_WEEK = 7;\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\nclass MatMonthView {\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir, _rangeStrategy) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rangeStrategy = _rangeStrategy;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new date is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._activeDate = this._dateAdapter.today();\n }\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n const oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setRanges(this._selected);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnChanges(changes) {\n const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];\n if (comparisonChange && !comparisonChange.firstChange) {\n this._setRanges(this.selected);\n }\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new date is selected. */\n _dateSelected(event) {\n const date = event.value;\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n let rangeStartDate;\n let rangeEndDate;\n if (this._selected instanceof DateRange) {\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n }\n else {\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n }\n if (rangeStartDate !== date || rangeEndDate !== date) {\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit({ value: selectedDate, event: event.event });\n this._previewStart = this._previewEnd = null;\n this._changeDetectorRef.markForCheck();\n }\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey\n ? this._dateAdapter.addCalendarYears(this._activeDate, -1)\n : this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey\n ? this._dateAdapter.addCalendarYears(this._activeDate, 1)\n : this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n this._selectionKeyPressed = true;\n if (this._canSelect(this._activeDate)) {\n // Prevent unexpected default actions such as form submission.\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n event.preventDefault();\n }\n return;\n case ESCAPE:\n // Abort the current range selection if the user presses escape mid-selection.\n if (this._previewEnd != null && !hasModifierKey(event)) {\n this._previewStart = this._previewEnd = null;\n this.selectedChange.emit(null);\n this._userSelection.emit({ value: null, event });\n event.preventDefault();\n event.stopPropagation(); // Prevents the overlay from closing.\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed && this._canSelect(this._activeDate)) {\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n /** Initializes this month view. */\n _init() {\n this._setRanges(this.selected);\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n this._monthLabel = this._dateFormats.display.monthLabel\n ? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel)\n : this._dateAdapter\n .getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset =\n (DAYS_PER_WEEK +\n this._dateAdapter.getDayOfWeek(firstOfMonth) -\n this._dateAdapter.getFirstDayOfWeek()) %\n DAYS_PER_WEEK;\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview) {\n this._matCalendarBody._focusActiveCell(movePreview);\n }\n /** Called when the user has activated a new cell and the preview needs to be updated. */\n _previewChanged({ event, value: cell }) {\n if (this._rangeStrategy) {\n // We can assume that this will be a range, because preview\n // events aren't fired for single date selections.\n const value = cell ? cell.rawValue : null;\n const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);\n this._previewStart = this._getCellCompareValue(previewRange.start);\n this._previewEnd = this._getCellCompareValue(previewRange.end);\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n // when navigating one month back using the keyboard which will cause this handler\n // to throw a \"changed after checked\" error when updating the preview state.\n this._changeDetectorRef.detectChanges();\n }\n }\n /** Initializes the weekdays. */\n _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n /** Creates MatCalendarCells for the dates in this month. */\n _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;\n this._weeks[this._weeks.length - 1].push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));\n }\n }\n /** Date filter for the month */\n _shouldEnableDate(date) {\n return (!!date &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\n (!this.dateFilter || this.dateFilter(date)));\n }\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n _getDateInCurrentMonth(date) {\n return date && this._hasSameMonthAndYear(date, this.activeDate)\n ? this._dateAdapter.getDate(date)\n : null;\n }\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n _hasSameMonthAndYear(d1, d2) {\n return !!(d1 &&\n d2 &&\n this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n /** Gets the value that will be used to one cell to another. */\n _getCellCompareValue(date) {\n if (date) {\n // We use the time since the Unix epoch to compare dates in this view, rather than the\n // cell values, because we need to support ranges that span across multiple months/years.\n const year = this._dateAdapter.getYear(date);\n const month = this._dateAdapter.getMonth(date);\n const day = this._dateAdapter.getDate(date);\n return new Date(year, month, day).getTime();\n }\n return null;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the current range based on a model value. */\n _setRanges(selectedValue) {\n if (selectedValue instanceof DateRange) {\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n this._isRange = true;\n }\n else {\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n this._isRange = false;\n }\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n }\n /** Gets whether a date can be selected in the month view. */\n _canSelect(date) {\n return !this.dateFilter || this.dateFilter(date);\n }\n}\nMatMonthView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatMonthView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatMonthView, selector: \"mat-month-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\" }, outputs: { selectedChange: \"selectedChange\", _userSelection: \"_userSelection\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matMonthView\"], usesOnChanges: true, ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{day.long}}\\n {{day.narrow}}\\n
\\n\", components: [{ type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\"], outputs: [\"selectedValueChange\", \"previewChange\"], exportAs: [\"matCalendarBody\"] }], directives: [{ type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMonthView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-month-view', exportAs: 'matMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{day.long}}\\n {{day.narrow}}\\n
\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATE_RANGE_SELECTION_STRATEGY]\n }, {\n type: Optional\n }] }];\n }, propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst yearsPerPage = 24;\nconst yearsPerRow = 4;\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\nclass MatMultiYearView {\n constructor(_changeDetectorRef, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new year is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected year. This doesn't imply a change on the selected date */\n this.yearSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n this._activeDate = this._dateAdapter.today();\n }\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedYear(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n this._years = [];\n for (let i = 0, row = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /** Handles when a new year is selected. */\n _yearSelected(event) {\n const year = event.value;\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n let month = this._dateAdapter.getMonth(this.activeDate);\n let daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(year, month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event) {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage -\n getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) -\n 1);\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n this._selectionKeyPressed = true;\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed) {\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n _getActiveCell() {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /** Creates an MatCalendarCell for the given year. */\n _createCellForYear(year) {\n const date = this._dateAdapter.createDate(year, 0, 1);\n const yearName = this._dateAdapter.getYearName(date);\n const cellClasses = this.dateClass ? this.dateClass(date, 'multi-year') : undefined;\n return new MatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year), cellClasses);\n }\n /** Whether the given year is enabled. */\n _shouldEnableYear(year) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined ||\n year === null ||\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n return false;\n }\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-highlighted year based on a model value. */\n _setSelectedYear(value) {\n this._selectedYear = null;\n if (value instanceof DateRange) {\n const displayValue = value.start || value.end;\n if (displayValue) {\n this._selectedYear = this._dateAdapter.getYear(displayValue);\n }\n }\n else if (value) {\n this._selectedYear = this._dateAdapter.getYear(value);\n }\n }\n}\nMatMultiYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMultiYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatMultiYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatMultiYearView, selector: \"mat-multi-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matMultiYearView\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n
\\n\", components: [{ type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\"], outputs: [\"selectedValueChange\", \"previewChange\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMultiYearView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-multi-year-view', exportAs: 'matMultiYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n \\n \\n \\n
\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\nfunction isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return (Math.floor((year1 - startingYear) / yearsPerPage) ===\n Math.floor((year2 - startingYear) / yearsPerPage));\n}\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nfunction getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo(activeYear - getStartingYear(dateAdapter, minDate, maxDate), yearsPerPage);\n}\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear(dateAdapter, minDate, maxDate) {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n }\n else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a, b) {\n return ((a % b) + b) % b;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\nclass MatYearView {\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new month is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected month. This doesn't imply a change on the selected date */\n this.monthSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._activeDate = this._dateAdapter.today();\n }\n /** The date to display in this year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedMonth(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new month is selected. */\n _monthSelected(event) {\n const month = event.value;\n const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n this.monthSelected.emit(normalizedDate);\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n this._selectionKeyPressed = true;\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed) {\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n /** Initializes this year view. */\n _init() {\n this._setSelectedMonth(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [\n [0, 1, 2, 3],\n [4, 5, 6, 7],\n [8, 9, 10, 11],\n ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n _getMonthInCurrentYear(date) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate)\n ? this._dateAdapter.getMonth(date)\n : null;\n }\n /** Creates an MatCalendarCell for the given month. */\n _createCellForMonth(month, monthName) {\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'year') : undefined;\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month), cellClasses);\n }\n /** Whether the given month is enabled. */\n _shouldEnableMonth(month) {\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n if (month === undefined ||\n month === null ||\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n this._isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n if (!this.dateFilter) {\n return true;\n }\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n _isYearAndMonthAfterMaxDate(year, month) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n return false;\n }\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n _isYearAndMonthBeforeMinDate(year, month) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n return year < minYear || (year === minYear && month < minMonth);\n }\n return false;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-selected month based on a model value. */\n _setSelectedMonth(value) {\n if (value instanceof DateRange) {\n this._selectedMonth =\n this._getMonthInCurrentYear(value.start) || this._getMonthInCurrentYear(value.end);\n }\n else {\n this._selectedMonth = this._getMonthInCurrentYear(value);\n }\n }\n}\nMatYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatYearView, selector: \"mat-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", monthSelected: \"monthSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matYearView\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n
\\n\", components: [{ type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\"], outputs: [\"selectedValueChange\", \"previewChange\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatYearView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-year-view', exportAs: 'matYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n \\n \\n \\n \\n \\n
\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Datepicker data that requires internationalization. */\nclass MatDatepickerIntl {\n constructor() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /** A label for the calendar popup (used by screen readers). */\n this.calendarLabel = 'Calendar';\n /** A label for the button used to open the calendar popup (used by screen readers). */\n this.openCalendarLabel = 'Open calendar';\n /** Label for the button used to close the calendar popup. */\n this.closeCalendarLabel = 'Close calendar';\n /** A label for the previous month button (used by screen readers). */\n this.prevMonthLabel = 'Previous month';\n /** A label for the next month button (used by screen readers). */\n this.nextMonthLabel = 'Next month';\n /** A label for the previous year button (used by screen readers). */\n this.prevYearLabel = 'Previous year';\n /** A label for the next year button (used by screen readers). */\n this.nextYearLabel = 'Next year';\n /** A label for the previous multi-year button (used by screen readers). */\n this.prevMultiYearLabel = 'Previous 24 years';\n /** A label for the next multi-year button (used by screen readers). */\n this.nextMultiYearLabel = 'Next 24 years';\n /** A label for the 'switch to month view' button (used by screen readers). */\n this.switchToMonthViewLabel = 'Choose date';\n /** A label for the 'switch to year view' button (used by screen readers). */\n this.switchToMultiYearViewLabel = 'Choose month and year';\n }\n /** Formats a range of years. */\n formatYearRange(start, end) {\n return `${start} \\u2013 ${end}`;\n }\n}\nMatDatepickerIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMatDatepickerIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerIntl, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerIntl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Counter used to generate unique IDs. */\nlet uniqueId = 0;\n/** Default header for MatCalendar */\nclass MatCalendarHeader {\n constructor(_intl, calendar, _dateAdapter, _dateFormats, changeDetectorRef) {\n this._intl = _intl;\n this.calendar = calendar;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._buttonDescriptionId = `mat-calendar-button-${uniqueId++}`;\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n /** The label for the current calendar view. */\n get periodButtonText() {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\n const minYearOfPage = activeYear -\n getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n const minYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\n const maxYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\n return this._intl.formatYearRange(minYearName, maxYearName);\n }\n get periodButtonLabel() {\n return this.calendar.currentView == 'month'\n ? this._intl.switchToMultiYearViewLabel\n : this._intl.switchToMonthViewLabel;\n }\n /** The label for the previous button. */\n get prevButtonLabel() {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel,\n }[this.calendar.currentView];\n }\n /** The label for the next button. */\n get nextButtonLabel() {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel,\n }[this.calendar.currentView];\n }\n /** Handles user clicks on the period label. */\n currentPeriodClicked() {\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n /** Handles user clicks on the previous button. */\n previousClicked() {\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage);\n }\n /** Handles user clicks on the next button. */\n nextClicked() {\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? 1 : yearsPerPage);\n }\n /** Whether the previous period button is enabled. */\n previousEnabled() {\n if (!this.calendar.minDate) {\n return true;\n }\n return (!this.calendar.minDate || !this._isSameView(this.calendar.activeDate, this.calendar.minDate));\n }\n /** Whether the next period button is enabled. */\n nextEnabled() {\n return (!this.calendar.maxDate || !this._isSameView(this.calendar.activeDate, this.calendar.maxDate));\n }\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n _isSameView(date1, date2) {\n if (this.calendar.currentView == 'month') {\n return (this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2));\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\n }\n}\nMatCalendarHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCalendarHeader, deps: [{ token: MatDatepickerIntl }, { token: forwardRef(() => MatCalendar) }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatCalendarHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCalendarHeader, selector: \"mat-calendar-header\", exportAs: [\"matCalendarHeader\"], ngImport: i0, template: \"
\\n
\\n \\n\\n
\\n\\n \\n\\n \\n\\n \\n
\\n
\\n\", components: [{ type: i3.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCalendarHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-calendar-header', exportAs: 'matCalendarHeader', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n
\\n \\n\\n
\\n\\n \\n\\n \\n\\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () {\n return [{ type: MatDatepickerIntl }, { type: MatCalendar, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatCalendar)]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i0.ChangeDetectorRef }];\n } });\n/** A calendar that is used as part of the datepicker. */\nclass MatCalendar {\n constructor(_intl, _dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n this._moveFocusOnNextTick = false;\n /** Whether the calendar should be started in month or year view. */\n this.startView = 'month';\n /** Emits when the currently selected date changes. */\n this.selectedChange = new EventEmitter();\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n this.yearSelected = new EventEmitter();\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n this.monthSelected = new EventEmitter();\n /**\n * Emits when the current view changes.\n */\n this.viewChanged = new EventEmitter(true);\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n this.stateChanges = new Subject();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n /** A date representing the period (month or year) to start the calendar in. */\n get startAt() {\n return this._startAt;\n }\n set startAt(value) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate() {\n return this._clampedActiveDate;\n }\n set activeDate(value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n /** Whether the calendar is in month view. */\n get currentView() {\n return this._currentView;\n }\n set currentView(value) {\n const viewChangedResult = this._currentView !== value ? value : null;\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n if (viewChangedResult) {\n this.viewChanged.emit(viewChangedResult);\n }\n }\n ngAfterContentInit() {\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || MatCalendarHeader);\n this.activeDate = this.startAt || this._dateAdapter.today();\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n ngOnChanges(changes) {\n // Ignore date changes that are at a different time on the same day. This fixes issues where\n // the calendar re-renders when there is no meaningful change to [minDate] or [maxDate]\n // (#24435).\n const minDateChange = changes['minDate'] &&\n !this._dateAdapter.sameDate(changes['minDate'].previousValue, changes['minDate'].currentValue)\n ? changes['minDate']\n : undefined;\n const maxDateChange = changes['maxDate'] &&\n !this._dateAdapter.sameDate(changes['maxDate'].previousValue, changes['maxDate'].currentValue)\n ? changes['maxDate']\n : undefined;\n const change = minDateChange || maxDateChange || changes['dateFilter'];\n if (change && !change.firstChange) {\n const view = this._getCurrentViewComponent();\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n this.stateChanges.next();\n }\n /** Focuses the active date. */\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell(false);\n }\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n this._getCurrentViewComponent()._init();\n }\n /** Handles date selection in the month view. */\n _dateSelected(event) {\n const date = event.value;\n if (this.selected instanceof DateRange ||\n (date && !this._dateAdapter.sameDate(date, this.selected))) {\n this.selectedChange.emit(date);\n }\n this._userSelection.emit(event);\n }\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date, view) {\n this.activeDate = date;\n this.currentView = view;\n }\n /** Returns the component instance that corresponds to the current calendar view. */\n _getCurrentViewComponent() {\n // The return type is explicitly written as a union to ensure that the Closure compiler does\n // not optimize calls to _init(). Without the explict return type, TypeScript narrows it to\n // only the first component type. See https://github.com/angular/components/issues/22996.\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\nMatCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCalendar, deps: [{ token: MatDatepickerIntl }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCalendar, selector: \"mat-calendar\", inputs: { headerComponent: \"headerComponent\", startAt: \"startAt\", startView: \"startView\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", viewChanged: \"viewChanged\", _userSelection: \"_userSelection\" }, host: { classAttribute: \"mat-calendar\" }, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], viewQueries: [{ propertyName: \"monthView\", first: true, predicate: MatMonthView, descendants: true }, { propertyName: \"yearView\", first: true, predicate: MatYearView, descendants: true }, { propertyName: \"multiYearView\", first: true, predicate: MatMultiYearView, descendants: true }], exportAs: [\"matCalendar\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n\", styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:.04}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\\n\"], components: [{ type: MatMonthView, selector: \"mat-month-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\"], outputs: [\"selectedChange\", \"_userSelection\", \"activeDateChange\"], exportAs: [\"matMonthView\"] }, { type: MatYearView, selector: \"mat-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"monthSelected\", \"activeDateChange\"], exportAs: [\"matYearView\"] }, { type: MatMultiYearView, selector: \"mat-multi-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"yearSelected\", \"activeDateChange\"], exportAs: [\"matMultiYearView\"] }], directives: [{ type: i7.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { type: i8.CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: [\"cdkFocusChange\"] }, { type: i1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCalendar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-calendar', host: {\n 'class': 'mat-calendar',\n }, exportAs: 'matCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], template: \"\\n\\n
\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n\", styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:.04}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatDatepickerIntl }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { headerComponent: [{\n type: Input\n }], startAt: [{\n type: Input\n }], startView: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], viewChanged: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], monthView: [{\n type: ViewChild,\n args: [MatMonthView]\n }], yearView: [{\n type: ViewChild,\n args: [MatYearView]\n }], multiYearView: [{\n type: ViewChild,\n args: [MatMultiYearView]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nconst matDatepickerAnimations = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n style({ opacity: 1, transform: 'scale(1, 1)' }),\n ]))),\n transition('void => enter-dialog', animate('150ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(0.7)' }),\n style({ transform: 'none', opacity: 1 }),\n ]))),\n transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n ]),\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({ opacity: 0 })),\n state('enter', style({ opacity: 1 })),\n // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')),\n ]),\n};\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n/** Injection token that determines the scroll handling while the calendar is open. */\nconst MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy');\n/** @docs-private */\nfunction MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n// Boilerplate for applying mixins to MatDatepickerContent.\n/** @docs-private */\nconst _MatDatepickerContentBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n});\n/**\n * Component used as the content for the datepicker overlay. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the overlay that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\nclass MatDatepickerContent extends _MatDatepickerContentBase {\n constructor(elementRef, _changeDetectorRef, _globalModel, _dateAdapter, _rangeSelectionStrategy, intl) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._globalModel = _globalModel;\n this._dateAdapter = _dateAdapter;\n this._rangeSelectionStrategy = _rangeSelectionStrategy;\n this._subscriptions = new Subscription();\n /** Emits when an animation has finished. */\n this._animationDone = new Subject();\n /** Portal with projected action buttons. */\n this._actionsPortal = null;\n this._closeButtonText = intl.closeCalendarLabel;\n }\n ngOnInit() {\n // If we have actions, clone the model so that we have the ability to cancel the selection,\n // otherwise update the global model directly. Note that we want to assign this as soon as\n // possible, but `_actionsPortal` isn't available in the constructor so we do it in `ngOnInit`.\n this._model = this._actionsPortal ? this._globalModel.clone() : this._globalModel;\n this._animationState = this.datepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';\n }\n ngAfterViewInit() {\n this._subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n }));\n this._calendar.focusActiveCell();\n }\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n _handleUserSelection(event) {\n const selection = this._model.selection;\n const value = event.value;\n const isRange = selection instanceof DateRange;\n // If we're selecting a range and we have a selection strategy, always pass the value through\n // there. Otherwise don't assign null values to the model, unless we're selecting a range.\n // A null value when picking a range means that the user cancelled the selection (e.g. by\n // pressing escape), whereas when selecting a single value it means that the value didn't\n // change. This isn't very intuitive, but it's here for backwards-compatibility.\n if (isRange && this._rangeSelectionStrategy) {\n const newSelection = this._rangeSelectionStrategy.selectionFinished(value, selection, event.event);\n this._model.updateSelection(newSelection, this);\n }\n else if (value &&\n (isRange || !this._dateAdapter.sameDate(value, selection))) {\n this._model.add(value);\n }\n // Delegate closing the overlay to the actions.\n if ((!this._model || this._model.isComplete()) && !this._actionsPortal) {\n this.datepicker.close();\n }\n }\n _startExitAnimation() {\n this._animationState = 'void';\n this._changeDetectorRef.markForCheck();\n }\n _getSelected() {\n return this._model.selection;\n }\n /** Applies the current pending selection to the global model. */\n _applyPendingSelection() {\n if (this._model !== this._globalModel) {\n this._globalModel.updateSelection(this._model.selection, this);\n }\n }\n}\nMatDatepickerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MatDateSelectionModel }, { token: i1$1.DateAdapter }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }, { token: MatDatepickerIntl }], target: i0.ɵɵFactoryTarget.Component });\nMatDatepickerContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerContent, selector: \"mat-datepicker-content\", inputs: { color: \"color\" }, host: { listeners: { \"@transformPanel.done\": \"_animationDone.next()\" }, properties: { \"@transformPanel\": \"_animationState\", \"class.mat-datepicker-content-touch\": \"datepicker.touchUi\" }, classAttribute: \"mat-datepicker-content\" }, viewQueries: [{ propertyName: \"_calendar\", first: true, predicate: MatCalendar, descendants: true }], exportAs: [\"matDatepickerContent\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n\\n \\n\\n \\n {{ _closeButtonText }}\\n\\n\", styles: [\".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\\n\"], components: [{ type: MatCalendar, selector: \"mat-calendar\", inputs: [\"headerComponent\", \"startAt\", \"startView\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\"], outputs: [\"selectedChange\", \"yearSelected\", \"monthSelected\", \"viewChanged\", \"_userSelection\"], exportAs: [\"matCalendar\"] }, { type: i3.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], directives: [{ type: i8.CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: [\"cdkTrapFocus\", \"cdkTrapFocusAutoCapture\"], exportAs: [\"cdkTrapFocus\"] }, { type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i7.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerContent, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-content', host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n }, animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], exportAs: 'matDatepickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], template: \"\\n \\n\\n \\n\\n \\n {{ _closeButtonText }}\\n\\n\", styles: [\".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: MatDateSelectionModel }, { type: i1$1.DateAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_RANGE_SELECTION_STRATEGY]\n }] }, { type: MatDatepickerIntl }];\n }, propDecorators: { _calendar: [{\n type: ViewChild,\n args: [MatCalendar]\n }] } });\n/** Base class for a datepicker. */\nclass MatDatepickerBase {\n constructor(_overlay, _ngZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _model) {\n this._overlay = _overlay;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._model = _model;\n this._inputStateChanges = Subscription.EMPTY;\n /** The view that the calendar should start in. */\n this.startView = 'month';\n this._touchUi = false;\n /** Preferred position of the datepicker in the X axis. */\n this.xPosition = 'start';\n /** Preferred position of the datepicker in the Y axis. */\n this.yPosition = 'below';\n this._restoreFocus = true;\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n this.yearSelected = new EventEmitter();\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n this.monthSelected = new EventEmitter();\n /**\n * Emits when the current view changes.\n */\n this.viewChanged = new EventEmitter(true);\n /** Emits when the datepicker has been opened. */\n this.openedStream = new EventEmitter();\n /** Emits when the datepicker has been closed. */\n this.closedStream = new EventEmitter();\n this._opened = false;\n /** The id for the datepicker calendar. */\n this.id = `mat-datepicker-${datepickerUid++}`;\n /** The element that was focused before the datepicker was opened. */\n this._focusedElementBeforeOpen = null;\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n this._backdropHarnessClass = `${this.id}-backdrop`;\n /** Emits when the datepicker's state changes. */\n this.stateChanges = new Subject();\n if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n this._scrollStrategy = scrollStrategy;\n }\n /** The date to open the calendar to initially. */\n get startAt() {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this.datepickerInput ? this.datepickerInput.getStartValue() : null);\n }\n set startAt(value) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** Color palette to use on the datepicker's calendar. */\n get color() {\n return (this._color || (this.datepickerInput ? this.datepickerInput.getThemePalette() : undefined));\n }\n set color(value) {\n this._color = value;\n }\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a dropdown and elements have more padding to allow for bigger touch targets.\n */\n get touchUi() {\n return this._touchUi;\n }\n set touchUi(value) {\n this._touchUi = coerceBooleanProperty(value);\n }\n /** Whether the datepicker pop-up should be disabled. */\n get disabled() {\n return this._disabled === undefined && this.datepickerInput\n ? this.datepickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n }\n /**\n * Whether to restore focus to the previously-focused element when the calendar is closed.\n * Note that automatic focus restoration is an accessibility feature and it is recommended that\n * you provide your own equivalent, if you decide to turn it off.\n */\n get restoreFocus() {\n return this._restoreFocus;\n }\n set restoreFocus(value) {\n this._restoreFocus = coerceBooleanProperty(value);\n }\n /**\n * Classes to be passed to the date picker panel.\n * Supports string and string array values, similar to `ngClass`.\n */\n get panelClass() {\n return this._panelClass;\n }\n set panelClass(value) {\n this._panelClass = coerceStringArray(value);\n }\n /** Whether the calendar is open. */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n /** The minimum selectable date. */\n _getMinDate() {\n return this.datepickerInput && this.datepickerInput.min;\n }\n /** The maximum selectable date. */\n _getMaxDate() {\n return this.datepickerInput && this.datepickerInput.max;\n }\n _getDateFilter() {\n return this.datepickerInput && this.datepickerInput.dateFilter;\n }\n ngOnChanges(changes) {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n if (positionChange && !positionChange.firstChange && this._overlayRef) {\n const positionStrategy = this._overlayRef.getConfig().positionStrategy;\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this._setConnectedPositions(positionStrategy);\n if (this.opened) {\n this._overlayRef.updatePosition();\n }\n }\n }\n this.stateChanges.next(undefined);\n }\n ngOnDestroy() {\n this._destroyOverlay();\n this.close();\n this._inputStateChanges.unsubscribe();\n this.stateChanges.complete();\n }\n /** Selects the given date */\n select(date) {\n this._model.add(date);\n }\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** Emits changed view */\n _viewChanged(view) {\n this.viewChanged.emit(view);\n }\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n * @returns Selection model that the input should hook itself up to.\n */\n registerInput(input) {\n if (this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('A MatDatepicker can only be associated with a single input.');\n }\n this._inputStateChanges.unsubscribe();\n this.datepickerInput = input;\n this._inputStateChanges = input.stateChanges.subscribe(() => this.stateChanges.next(undefined));\n return this._model;\n }\n /**\n * Registers a portal containing action buttons with the datepicker.\n * @param portal Portal to be registered.\n */\n registerActions(portal) {\n if (this._actionsPortal && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('A MatDatepicker can only be associated with a single actions row.');\n }\n this._actionsPortal = portal;\n }\n /**\n * Removes a portal containing action buttons from the datepicker.\n * @param portal Portal to be removed.\n */\n removeActions(portal) {\n if (portal === this._actionsPortal) {\n this._actionsPortal = null;\n }\n }\n /** Open the calendar. */\n open() {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n this._openOverlay();\n this._opened = true;\n this.openedStream.emit();\n }\n /** Close the calendar. */\n close() {\n if (!this._opened) {\n return;\n }\n if (this._componentRef) {\n const instance = this._componentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());\n }\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n if (this._restoreFocus &&\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n }\n else {\n completeClose();\n }\n }\n /** Applies the current pending selection on the overlay to the model. */\n _applyPendingSelection() {\n var _a, _b;\n (_b = (_a = this._componentRef) === null || _a === void 0 ? void 0 : _a.instance) === null || _b === void 0 ? void 0 : _b._applyPendingSelection();\n }\n /** Forwards relevant values from the datepicker to the datepicker content inside the overlay. */\n _forwardContentValues(instance) {\n instance.datepicker = this;\n instance.color = this.color;\n instance._actionsPortal = this._actionsPortal;\n instance._dialogLabelId = this.datepickerInput.getOverlayLabelId();\n }\n /** Opens the overlay with the calendar. */\n _openOverlay() {\n this._destroyOverlay();\n const isDialog = this.touchUi;\n const portal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({\n positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),\n hasBackdrop: true,\n backdropClass: [\n isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop',\n this._backdropHarnessClass,\n ],\n direction: this._dir,\n scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),\n panelClass: `mat-datepicker-${isDialog ? 'dialog' : 'popup'}`,\n })));\n this._getCloseStream(overlayRef).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n this.close();\n });\n // The `preventDefault` call happens inside the calendar as well, however focus moves into\n // it inside a timeout which can give browsers a chance to fire off a keyboard event in-between\n // that can scroll the page (see #24969). Always block default actions of arrow keys for the\n // entire overlay so the page doesn't get scrolled by accident.\n overlayRef.keydownEvents().subscribe(event => {\n const keyCode = event.keyCode;\n if (keyCode === UP_ARROW ||\n keyCode === DOWN_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW ||\n keyCode === PAGE_UP ||\n keyCode === PAGE_DOWN) {\n event.preventDefault();\n }\n });\n this._componentRef = overlayRef.attach(portal);\n this._forwardContentValues(this._componentRef.instance);\n // Update the position once the calendar has rendered. Only relevant in dropdown mode.\n if (!isDialog) {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());\n }\n }\n /** Destroys the current overlay. */\n _destroyOverlay() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = this._componentRef = null;\n }\n }\n /** Gets a position strategy that will open the calendar as a dropdown. */\n _getDialogStrategy() {\n return this._overlay.position().global().centerHorizontally().centerVertically();\n }\n /** Gets a position strategy that will open the calendar as a dropdown. */\n _getDropdownStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n return this._setConnectedPositions(strategy);\n }\n /** Sets the positions of the datepicker in dropdown mode based on the current configuration. */\n _setConnectedPositions(strategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY,\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY,\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY,\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY,\n },\n ]);\n }\n /** Gets an observable that will emit when the overlay is supposed to be closed. */\n _getCloseStream(overlayRef) {\n return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (this.datepickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW));\n })));\n }\n}\nMatDatepickerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerBase, deps: [{ token: i9.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MAT_DATEPICKER_SCROLL_STRATEGY }, { token: i1$1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: MatDateSelectionModel }], target: i0.ɵɵFactoryTarget.Directive });\nMatDatepickerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerBase, inputs: { calendarHeaderComponent: \"calendarHeaderComponent\", startAt: \"startAt\", startView: \"startView\", color: \"color\", touchUi: \"touchUi\", disabled: \"disabled\", xPosition: \"xPosition\", yPosition: \"yPosition\", restoreFocus: \"restoreFocus\", dateClass: \"dateClass\", panelClass: \"panelClass\", opened: \"opened\" }, outputs: { yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", viewChanged: \"viewChanged\", openedStream: \"opened\", closedStream: \"closed\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i9.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: MatDateSelectionModel }];\n }, propDecorators: { calendarHeaderComponent: [{\n type: Input\n }], startAt: [{\n type: Input\n }], startView: [{\n type: Input\n }], color: [{\n type: Input\n }], touchUi: [{\n type: Input\n }], disabled: [{\n type: Input\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], viewChanged: [{\n type: Output\n }], dateClass: [{\n type: Input\n }], openedStream: [{\n type: Output,\n args: ['opened']\n }], closedStream: [{\n type: Output,\n args: ['closed']\n }], panelClass: [{\n type: Input\n }], opened: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\nclass MatDatepicker extends MatDatepickerBase {\n}\nMatDatepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatDatepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepicker, selector: \"mat-datepicker\", providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDatepicker },\n ], exportAs: [\"matDatepicker\"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepicker, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDatepicker },\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nclass MatDatepickerInputEvent {\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n target, \n /** Reference to the native input element associated with the datepicker input. */\n targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n}\n/** Base class for datepicker inputs. */\nclass MatDatepickerInputBase {\n constructor(_elementRef, _dateAdapter, _dateFormats) {\n this._elementRef = _elementRef;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n /** Emits when a `change` event is fired on this ``. */\n this.dateChange = new EventEmitter();\n /** Emits when an `input` event is fired on this ``. */\n this.dateInput = new EventEmitter();\n /** Emits when the internal state has changed */\n this.stateChanges = new Subject();\n this._onTouched = () => { };\n this._validatorOnChange = () => { };\n this._cvaOnChange = () => { };\n this._valueChangesSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /** The form control validator for whether the input parses. */\n this._parseValidator = () => {\n return this._lastValueValid\n ? null\n : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\n };\n /** The form control validator for the date filter. */\n this._filterValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !controlValue || this._matchesFilter(controlValue)\n ? null\n : { 'matDatepickerFilter': true };\n };\n /** The form control validator for the min date. */\n this._minValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const min = this._getMinDate();\n return !min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0\n ? null\n : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };\n };\n /** The form control validator for the max date. */\n this._maxValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const max = this._getMaxDate();\n return !max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0\n ? null\n : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };\n };\n /** Whether the last value set on the input was valid. */\n this._lastValueValid = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this._assignValueProgrammatically(this.value);\n });\n }\n /** The value of the input. */\n get value() {\n return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;\n }\n set value(value) {\n this._assignValueProgrammatically(value);\n }\n /** Whether the datepicker-input is disabled. */\n get disabled() {\n return !!this._disabled || this._parentDisabled();\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n const element = this._elementRef.nativeElement;\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (newValue && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n /** Gets the base validator functions. */\n _getValidators() {\n return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];\n }\n /** Registers a date selection model with the input. */\n _registerModel(model) {\n this._model = model;\n this._valueChangesSubscription.unsubscribe();\n if (this._pendingValue) {\n this._assignValue(this._pendingValue);\n }\n this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {\n if (this._shouldHandleChangeEvent(event)) {\n const value = this._getValueFromModel(event.selection);\n this._lastValueValid = this._isValidValue(value);\n this._cvaOnChange(value);\n this._onTouched();\n this._formatValue(value);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n });\n }\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n ngOnChanges(changes) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n ngOnDestroy() {\n this._valueChangesSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this.stateChanges.complete();\n }\n /** @docs-private */\n registerOnValidatorChange(fn) {\n this._validatorOnChange = fn;\n }\n /** @docs-private */\n validate(c) {\n return this._validator ? this._validator(c) : null;\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this._assignValueProgrammatically(value);\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._cvaOnChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n _onKeydown(event) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n if (isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._openPopup();\n event.preventDefault();\n }\n }\n _onInput(value) {\n const lastValueWasValid = this._lastValueValid;\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = this._isValidValue(date);\n date = this._dateAdapter.getValidDateOrNull(date);\n const hasChanged = !this._dateAdapter.sameDate(date, this.value);\n // We need to fire the CVA change event for all\n // nulls, otherwise the validators won't run.\n if (!date || hasChanged) {\n this._cvaOnChange(date);\n }\n else {\n // Call the CVA change handler for invalid values\n // since this is what marks the control as dirty.\n if (value && !this.value) {\n this._cvaOnChange(date);\n }\n if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n if (hasChanged) {\n this._assignValue(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n }\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n this._onTouched();\n }\n /** Formats a value and sets it on the input element. */\n _formatValue(value) {\n this._elementRef.nativeElement.value =\n value != null ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n /** Assigns a value to the model. */\n _assignValue(value) {\n // We may get some incoming values before the model was\n // assigned. Save the value so that we can assign it later.\n if (this._model) {\n this._assignValueToModel(value);\n this._pendingValue = null;\n }\n else {\n this._pendingValue = value;\n }\n }\n /** Whether a value is considered valid. */\n _isValidValue(value) {\n return !value || this._dateAdapter.isValid(value);\n }\n /**\n * Checks whether a parent control is disabled. This is in place so that it can be overridden\n * by inputs extending this one which can be placed inside of a group that can be disabled.\n */\n _parentDisabled() {\n return false;\n }\n /** Programmatically assigns a value to the input. */\n _assignValueProgrammatically(value) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = this._isValidValue(value);\n value = this._dateAdapter.getValidDateOrNull(value);\n this._assignValue(value);\n this._formatValue(value);\n }\n /** Gets whether a value matches the current date filter. */\n _matchesFilter(value) {\n const filter = this._getDateFilter();\n return !filter || filter(value);\n }\n}\nMatDatepickerInputBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerInputBase, deps: [{ token: i0.ElementRef }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatDatepickerInputBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerInputBase, inputs: { value: \"value\", disabled: \"disabled\" }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerInputBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }];\n }, propDecorators: { value: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dateChange: [{\n type: Output\n }], dateInput: [{\n type: Output\n }] } });\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for date objects.\n */\nfunction dateInputsHaveChanged(changes, adapter) {\n const keys = Object.keys(changes);\n for (let key of keys) {\n const { previousValue, currentValue } = changes[key];\n if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) {\n if (!adapter.sameDate(previousValue, currentValue)) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n return false;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nconst MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true,\n};\n/** @docs-private */\nconst MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true,\n};\n/** Directive used to connect an input to a MatDatepicker. */\nclass MatDatepickerInput extends MatDatepickerInputBase {\n constructor(elementRef, dateAdapter, dateFormats, _formField) {\n super(elementRef, dateAdapter, dateFormats);\n this._formField = _formField;\n this._closedSubscription = Subscription.EMPTY;\n this._validator = Validators.compose(super._getValidators());\n }\n /** The datepicker that this input is associated with. */\n set matDatepicker(datepicker) {\n if (datepicker) {\n this._datepicker = datepicker;\n this._closedSubscription = datepicker.closedStream.subscribe(() => this._onTouched());\n this._registerModel(datepicker.registerInput(this));\n }\n }\n /** The minimum valid date. */\n get min() {\n return this._min;\n }\n set min(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._validatorOnChange();\n }\n }\n /** The maximum valid date. */\n get max() {\n return this._max;\n }\n set max(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._validatorOnChange();\n }\n }\n /** Function that can be used to filter out dates within the datepicker. */\n get dateFilter() {\n return this._dateFilter;\n }\n set dateFilter(value) {\n const wasMatchingValue = this._matchesFilter(this.value);\n this._dateFilter = value;\n if (this._matchesFilter(this.value) !== wasMatchingValue) {\n this._validatorOnChange();\n }\n }\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin() {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n /** Gets the ID of an element that should be used a description for the calendar overlay. */\n getOverlayLabelId() {\n if (this._formField) {\n return this._formField.getLabelId();\n }\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n }\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette() {\n return this._formField ? this._formField.color : undefined;\n }\n /** Gets the value at which the calendar should start. */\n getStartValue() {\n return this.value;\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._closedSubscription.unsubscribe();\n }\n /** Opens the associated datepicker. */\n _openPopup() {\n if (this._datepicker) {\n this._datepicker.open();\n }\n }\n _getValueFromModel(modelValue) {\n return modelValue;\n }\n _assignValueToModel(value) {\n if (this._model) {\n this._model.updateSelection(value, this);\n }\n }\n /** Gets the input's minimum date. */\n _getMinDate() {\n return this._min;\n }\n /** Gets the input's maximum date. */\n _getMaxDate() {\n return this._max;\n }\n /** Gets the input's date filtering function. */\n _getDateFilter() {\n return this._dateFilter;\n }\n _shouldHandleChangeEvent(event) {\n return event.source !== this;\n }\n}\nMatDatepickerInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerInput, deps: [{ token: i0.ElementRef }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatDatepickerInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: { matDatepicker: \"matDatepicker\", min: \"min\", max: \"max\", dateFilter: [\"matDatepickerFilter\", \"dateFilter\"] }, host: { listeners: { \"input\": \"_onInput($event.target.value)\", \"change\": \"_onChange()\", \"blur\": \"_onBlur()\", \"keydown\": \"_onKeydown($event)\" }, properties: { \"attr.aria-haspopup\": \"_datepicker ? \\\"dialog\\\" : null\", \"attr.aria-owns\": \"(_datepicker?.opened && _datepicker.id) || null\", \"attr.min\": \"min ? _dateAdapter.toIso8601(min) : null\", \"attr.max\": \"max ? _dateAdapter.toIso8601(max) : null\", \"attr.data-mat-calendar\": \"_datepicker ? _datepicker.id : null\", \"disabled\": \"disabled\" }, classAttribute: \"mat-datepicker-input\" }, providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ], exportAs: [\"matDatepickerInput\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerInput, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matDatepicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ],\n host: {\n 'class': 'mat-datepicker-input',\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': '_datepicker ? _datepicker.id : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i2$1.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }];\n }, propDecorators: { matDatepicker: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], dateFilter: [{\n type: Input,\n args: ['matDatepickerFilter']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Can be used to override the icon of a `matDatepickerToggle`. */\nclass MatDatepickerToggleIcon {\n}\nMatDatepickerToggleIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatDatepickerToggleIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerToggleIcon, selector: \"[matDatepickerToggleIcon]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerToggleIcon, decorators: [{\n type: Directive,\n args: [{\n selector: '[matDatepickerToggleIcon]',\n }]\n }] });\nclass MatDatepickerToggle {\n constructor(_intl, _changeDetectorRef, defaultTabIndex) {\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._stateChanges = Subscription.EMPTY;\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n /** Whether the toggle button is disabled. */\n get disabled() {\n if (this._disabled === undefined && this.datepicker) {\n return this.datepicker.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n ngOnChanges(changes) {\n if (changes['datepicker']) {\n this._watchStateChanges();\n }\n }\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n _open(event) {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n _watchStateChanges() {\n const datepickerStateChanged = this.datepicker ? this.datepicker.stateChanges : of();\n const inputStateChanged = this.datepicker && this.datepicker.datepickerInput\n ? this.datepicker.datepickerInput.stateChanges\n : of();\n const datepickerToggled = this.datepicker\n ? merge(this.datepicker.openedStream, this.datepicker.closedStream)\n : of();\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerStateChanged, inputStateChanged, datepickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n}\nMatDatepickerToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerToggle, deps: [{ token: MatDatepickerIntl }, { token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });\nMatDatepickerToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: { datepicker: [\"for\", \"datepicker\"], tabIndex: \"tabIndex\", ariaLabel: [\"aria-label\", \"ariaLabel\"], disabled: \"disabled\", disableRipple: \"disableRipple\" }, host: { listeners: { \"click\": \"_open($event)\" }, properties: { \"attr.tabindex\": \"null\", \"class.mat-datepicker-toggle-active\": \"datepicker && datepicker.opened\", \"class.mat-accent\": \"datepicker && datepicker.color === \\\"accent\\\"\", \"class.mat-warn\": \"datepicker && datepicker.color === \\\"warn\\\"\", \"attr.data-mat-calendar\": \"datepicker ? datepicker.id : null\" }, classAttribute: \"mat-datepicker-toggle\" }, queries: [{ propertyName: \"_customIcon\", first: true, predicate: MatDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: \"_button\", first: true, predicate: [\"button\"], descendants: true }], exportAs: [\"matDatepickerToggle\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n \\n \\n \\n\\n \\n\\n\", styles: [\".mat-form-field-appearance-legacy .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-datepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-datepicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{margin:auto}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}\\n\"], components: [{ type: i3.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerToggle, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-toggle', host: {\n 'class': 'mat-datepicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n '[class.mat-accent]': 'datepicker && datepicker.color === \"accent\"',\n '[class.mat-warn]': 'datepicker && datepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its datepicker.\n '[attr.data-mat-calendar]': 'datepicker ? datepicker.id : null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n }, exportAs: 'matDatepickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n \\n \\n \\n\\n \\n\\n\", styles: [\".mat-form-field-appearance-legacy .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-datepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-datepicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-datepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-datepicker-toggle-default-icon{margin:auto}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatDatepickerIntl }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n }, propDecorators: { datepicker: [{\n type: Input,\n args: ['for']\n }], tabIndex: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], disabled: [{\n type: Input\n }], disableRipple: [{\n type: Input\n }], _customIcon: [{\n type: ContentChild,\n args: [MatDatepickerToggleIcon]\n }], _button: [{\n type: ViewChild,\n args: ['button']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to provide the date range input wrapper component\n * to the parts without circular dependencies.\n */\nconst MAT_DATE_RANGE_INPUT_PARENT = new InjectionToken('MAT_DATE_RANGE_INPUT_PARENT');\n/**\n * Base class for the individual inputs that can be projected inside a `mat-date-range-input`.\n */\nclass MatDateRangeInputPartBase extends MatDatepickerInputBase {\n constructor(_rangeInput, elementRef, _defaultErrorStateMatcher, _injector, _parentForm, _parentFormGroup, dateAdapter, dateFormats) {\n super(elementRef, dateAdapter, dateFormats);\n this._rangeInput = _rangeInput;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._injector = _injector;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n }\n ngOnInit() {\n // We need the date input to provide itself as a `ControlValueAccessor` and a `Validator`, while\n // injecting its `NgControl` so that the error state is handled correctly. This introduces a\n // circular dependency, because both `ControlValueAccessor` and `Validator` depend on the input\n // itself. Usually we can work around it for the CVA, but there's no API to do it for the\n // validator. We work around it here by injecting the `NgControl` in `ngOnInit`, after\n // everything has been resolved.\n // tslint:disable-next-line:no-bitwise\n const ngControl = this._injector.get(NgControl, null, InjectFlags.Self | InjectFlags.Optional);\n if (ngControl) {\n this.ngControl = ngControl;\n }\n }\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n /** Gets whether the input is empty. */\n isEmpty() {\n return this._elementRef.nativeElement.value.length === 0;\n }\n /** Gets the placeholder of the input. */\n _getPlaceholder() {\n return this._elementRef.nativeElement.placeholder;\n }\n /** Focuses the input. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n /** Handles `input` events on the input element. */\n _onInput(value) {\n super._onInput(value);\n this._rangeInput._handleChildValueChange();\n }\n /** Opens the datepicker associated with the input. */\n _openPopup() {\n this._rangeInput._openDatepicker();\n }\n /** Gets the minimum date from the range input. */\n _getMinDate() {\n return this._rangeInput.min;\n }\n /** Gets the maximum date from the range input. */\n _getMaxDate() {\n return this._rangeInput.max;\n }\n /** Gets the date filter function from the range input. */\n _getDateFilter() {\n return this._rangeInput.dateFilter;\n }\n _parentDisabled() {\n return this._rangeInput._groupDisabled;\n }\n _shouldHandleChangeEvent({ source }) {\n return source !== this._rangeInput._startInput && source !== this._rangeInput._endInput;\n }\n _assignValueProgrammatically(value) {\n super._assignValueProgrammatically(value);\n const opposite = (this === this._rangeInput._startInput\n ? this._rangeInput._endInput\n : this._rangeInput._startInput);\n opposite === null || opposite === void 0 ? void 0 : opposite._validatorOnChange();\n }\n}\nMatDateRangeInputPartBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateRangeInputPartBase, deps: [{ token: MAT_DATE_RANGE_INPUT_PARENT }, { token: i0.ElementRef }, { token: i1$1.ErrorStateMatcher }, { token: i0.Injector }, { token: i2$2.NgForm, optional: true }, { token: i2$2.FormGroupDirective, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatDateRangeInputPartBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDateRangeInputPartBase, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateRangeInputPartBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATE_RANGE_INPUT_PARENT]\n }] }, { type: i0.ElementRef }, { type: i1$1.ErrorStateMatcher }, { type: i0.Injector }, { type: i2$2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2$2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }];\n } });\nconst _MatDateRangeInputBase = mixinErrorState(MatDateRangeInputPartBase);\n/** Input for entering the start date in a `mat-date-range-input`. */\nclass MatStartDate extends _MatDateRangeInputBase {\n constructor(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats) {\n super(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats);\n /** Validator that checks that the start date isn't after the end date. */\n this._startValidator = (control) => {\n const start = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const end = this._model ? this._model.selection.end : null;\n return !start || !end || this._dateAdapter.compareDate(start, end) <= 0\n ? null\n : { 'matStartDateInvalid': { 'end': end, 'actual': start } };\n };\n this._validator = Validators.compose([...super._getValidators(), this._startValidator]);\n }\n _getValueFromModel(modelValue) {\n return modelValue.start;\n }\n _shouldHandleChangeEvent(change) {\n var _a;\n if (!super._shouldHandleChangeEvent(change)) {\n return false;\n }\n else {\n return !((_a = change.oldValue) === null || _a === void 0 ? void 0 : _a.start)\n ? !!change.selection.start\n : !change.selection.start ||\n !!this._dateAdapter.compareDate(change.oldValue.start, change.selection.start);\n }\n }\n _assignValueToModel(value) {\n if (this._model) {\n const range = new DateRange(value, this._model.selection.end);\n this._model.updateSelection(range, this);\n }\n }\n _formatValue(value) {\n super._formatValue(value);\n // Any time the input value is reformatted we need to tell the parent.\n this._rangeInput._handleChildValueChange();\n }\n /** Gets the value that should be used when mirroring the input's size. */\n getMirrorValue() {\n const element = this._elementRef.nativeElement;\n const value = element.value;\n return value.length > 0 ? value : element.placeholder;\n }\n}\nMatStartDate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStartDate, deps: [{ token: MAT_DATE_RANGE_INPUT_PARENT }, { token: i0.ElementRef }, { token: i1$1.ErrorStateMatcher }, { token: i0.Injector }, { token: i2$2.NgForm, optional: true }, { token: i2$2.FormGroupDirective, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatStartDate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatStartDate, selector: \"input[matStartDate]\", inputs: { errorStateMatcher: \"errorStateMatcher\" }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, host: { attributes: { \"type\": \"text\" }, listeners: { \"input\": \"_onInput($event.target.value)\", \"change\": \"_onChange()\", \"keydown\": \"_onKeydown($event)\", \"blur\": \"_onBlur()\" }, properties: { \"disabled\": \"disabled\", \"attr.id\": \"_rangeInput.id\", \"attr.aria-haspopup\": \"_rangeInput.rangePicker ? \\\"dialog\\\" : null\", \"attr.aria-owns\": \"(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null\", \"attr.min\": \"_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null\", \"attr.max\": \"_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null\" }, classAttribute: \"mat-start-date mat-date-range-input-inner\" }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatStartDate, multi: true },\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatStartDate, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matStartDate]',\n host: {\n 'class': 'mat-start-date mat-date-range-input-inner',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(keydown)': '_onKeydown($event)',\n '[attr.id]': '_rangeInput.id',\n '[attr.aria-haspopup]': '_rangeInput.rangePicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',\n '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',\n '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',\n '(blur)': '_onBlur()',\n 'type': 'text',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatStartDate, multi: true },\n ],\n // These need to be specified explicitly, because some tooling doesn't\n // seem to pick them up from the base class. See #20932.\n outputs: ['dateChange', 'dateInput'],\n inputs: ['errorStateMatcher'],\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATE_RANGE_INPUT_PARENT]\n }] }, { type: i0.ElementRef }, { type: i1$1.ErrorStateMatcher }, { type: i0.Injector }, { type: i2$2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2$2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }];\n } });\n/** Input for entering the end date in a `mat-date-range-input`. */\nclass MatEndDate extends _MatDateRangeInputBase {\n constructor(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats) {\n super(rangeInput, elementRef, defaultErrorStateMatcher, injector, parentForm, parentFormGroup, dateAdapter, dateFormats);\n /** Validator that checks that the end date isn't before the start date. */\n this._endValidator = (control) => {\n const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const start = this._model ? this._model.selection.start : null;\n return !end || !start || this._dateAdapter.compareDate(end, start) >= 0\n ? null\n : { 'matEndDateInvalid': { 'start': start, 'actual': end } };\n };\n this._validator = Validators.compose([...super._getValidators(), this._endValidator]);\n }\n _getValueFromModel(modelValue) {\n return modelValue.end;\n }\n _shouldHandleChangeEvent(change) {\n var _a;\n if (!super._shouldHandleChangeEvent(change)) {\n return false;\n }\n else {\n return !((_a = change.oldValue) === null || _a === void 0 ? void 0 : _a.end)\n ? !!change.selection.end\n : !change.selection.end ||\n !!this._dateAdapter.compareDate(change.oldValue.end, change.selection.end);\n }\n }\n _assignValueToModel(value) {\n if (this._model) {\n const range = new DateRange(this._model.selection.start, value);\n this._model.updateSelection(range, this);\n }\n }\n _onKeydown(event) {\n // If the user is pressing backspace on an empty end input, move focus back to the start.\n if (event.keyCode === BACKSPACE && !this._elementRef.nativeElement.value) {\n this._rangeInput._startInput.focus();\n }\n super._onKeydown(event);\n }\n}\nMatEndDate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatEndDate, deps: [{ token: MAT_DATE_RANGE_INPUT_PARENT }, { token: i0.ElementRef }, { token: i1$1.ErrorStateMatcher }, { token: i0.Injector }, { token: i2$2.NgForm, optional: true }, { token: i2$2.FormGroupDirective, optional: true }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatEndDate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatEndDate, selector: \"input[matEndDate]\", inputs: { errorStateMatcher: \"errorStateMatcher\" }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, host: { attributes: { \"type\": \"text\" }, listeners: { \"input\": \"_onInput($event.target.value)\", \"change\": \"_onChange()\", \"keydown\": \"_onKeydown($event)\", \"blur\": \"_onBlur()\" }, properties: { \"disabled\": \"disabled\", \"attr.aria-haspopup\": \"_rangeInput.rangePicker ? \\\"dialog\\\" : null\", \"attr.aria-owns\": \"(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null\", \"attr.min\": \"_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null\", \"attr.max\": \"_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null\" }, classAttribute: \"mat-end-date mat-date-range-input-inner\" }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatEndDate, multi: true },\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatEndDate, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matEndDate]',\n host: {\n 'class': 'mat-end-date mat-date-range-input-inner',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(keydown)': '_onKeydown($event)',\n '[attr.aria-haspopup]': '_rangeInput.rangePicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null',\n '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',\n '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',\n '(blur)': '_onBlur()',\n 'type': 'text',\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },\n { provide: NG_VALIDATORS, useExisting: MatEndDate, multi: true },\n ],\n // These need to be specified explicitly, because some tooling doesn't\n // seem to pick them up from the base class. See #20932.\n outputs: ['dateChange', 'dateInput'],\n inputs: ['errorStateMatcher'],\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATE_RANGE_INPUT_PARENT]\n }] }, { type: i0.ElementRef }, { type: i1$1.ErrorStateMatcher }, { type: i0.Injector }, { type: i2$2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2$2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId = 0;\nclass MatDateRangeInput {\n constructor(_changeDetectorRef, _elementRef, control, _dateAdapter, _formField) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dateAdapter = _dateAdapter;\n this._formField = _formField;\n this._closedSubscription = Subscription.EMPTY;\n /** Unique ID for the input. */\n this.id = `mat-date-range-input-${nextUniqueId++}`;\n /** Whether the control is focused. */\n this.focused = false;\n /** Name of the form control. */\n this.controlType = 'mat-date-range-input';\n this._groupDisabled = false;\n /** Value for the `aria-describedby` attribute of the inputs. */\n this._ariaDescribedBy = null;\n /** Separator text to be shown between the inputs. */\n this.separator = '–';\n /** Start of the comparison range that should be shown in the calendar. */\n this.comparisonStart = null;\n /** End of the comparison range that should be shown in the calendar. */\n this.comparisonEnd = null;\n /** Emits when the input's state has changed. */\n this.stateChanges = new Subject();\n if (!_dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n // The datepicker module can be used both with MDC and non-MDC form fields. We have\n // to conditionally add the MDC input class so that the range picker looks correctly.\n if (_formField === null || _formField === void 0 ? void 0 : _formField._elementRef.nativeElement.classList.contains('mat-mdc-form-field')) {\n const classList = _elementRef.nativeElement.classList;\n classList.add('mat-mdc-input-element');\n classList.add('mat-mdc-form-field-input-control');\n }\n // TODO(crisbeto): remove `as any` after #18206 lands.\n this.ngControl = control;\n }\n /** Current value of the range input. */\n get value() {\n return this._model ? this._model.selection : null;\n }\n /** Whether the control's label should float. */\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * Set the placeholder attribute on `matStartDate` and `matEndDate`.\n * @docs-private\n */\n get placeholder() {\n var _a, _b;\n const start = ((_a = this._startInput) === null || _a === void 0 ? void 0 : _a._getPlaceholder()) || '';\n const end = ((_b = this._endInput) === null || _b === void 0 ? void 0 : _b._getPlaceholder()) || '';\n return start || end ? `${start} ${this.separator} ${end}` : '';\n }\n /** The range picker that this input is associated with. */\n get rangePicker() {\n return this._rangePicker;\n }\n set rangePicker(rangePicker) {\n if (rangePicker) {\n this._model = rangePicker.registerInput(this);\n this._rangePicker = rangePicker;\n this._closedSubscription.unsubscribe();\n this._closedSubscription = rangePicker.closedStream.subscribe(() => {\n var _a, _b;\n (_a = this._startInput) === null || _a === void 0 ? void 0 : _a._onTouched();\n (_b = this._endInput) === null || _b === void 0 ? void 0 : _b._onTouched();\n });\n this._registerModel(this._model);\n }\n }\n /** Whether the input is required. */\n get required() {\n return !!this._required;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /** Function that can be used to filter out dates within the date range picker. */\n get dateFilter() {\n return this._dateFilter;\n }\n set dateFilter(value) {\n const start = this._startInput;\n const end = this._endInput;\n const wasMatchingStart = start && start._matchesFilter(start.value);\n const wasMatchingEnd = end && end._matchesFilter(start.value);\n this._dateFilter = value;\n if (start && start._matchesFilter(start.value) !== wasMatchingStart) {\n start._validatorOnChange();\n }\n if (end && end._matchesFilter(end.value) !== wasMatchingEnd) {\n end._validatorOnChange();\n }\n }\n /** The minimum valid date. */\n get min() {\n return this._min;\n }\n set min(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._revalidate();\n }\n }\n /** The maximum valid date. */\n get max() {\n return this._max;\n }\n set max(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._revalidate();\n }\n }\n /** Whether the input is disabled. */\n get disabled() {\n return this._startInput && this._endInput\n ? this._startInput.disabled && this._endInput.disabled\n : this._groupDisabled;\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._groupDisabled) {\n this._groupDisabled = newValue;\n this.stateChanges.next(undefined);\n }\n }\n /** Whether the input is in an error state. */\n get errorState() {\n if (this._startInput && this._endInput) {\n return this._startInput.errorState || this._endInput.errorState;\n }\n return false;\n }\n /** Whether the datepicker input is empty. */\n get empty() {\n const startEmpty = this._startInput ? this._startInput.isEmpty() : false;\n const endEmpty = this._endInput ? this._endInput.isEmpty() : false;\n return startEmpty && endEmpty;\n }\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * @docs-private\n */\n setDescribedByIds(ids) {\n this._ariaDescribedBy = ids.length ? ids.join(' ') : null;\n }\n /**\n * Implemented as a part of `MatFormFieldControl`.\n * @docs-private\n */\n onContainerClick() {\n if (!this.focused && !this.disabled) {\n if (!this._model || !this._model.selection.start) {\n this._startInput.focus();\n }\n else {\n this._endInput.focus();\n }\n }\n }\n ngAfterContentInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._startInput) {\n throw Error('mat-date-range-input must contain a matStartDate input');\n }\n if (!this._endInput) {\n throw Error('mat-date-range-input must contain a matEndDate input');\n }\n }\n if (this._model) {\n this._registerModel(this._model);\n }\n // We don't need to unsubscribe from this, because we\n // know that the input streams will be completed on destroy.\n merge(this._startInput.stateChanges, this._endInput.stateChanges).subscribe(() => {\n this.stateChanges.next(undefined);\n });\n }\n ngOnChanges(changes) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n ngOnDestroy() {\n this._closedSubscription.unsubscribe();\n this.stateChanges.complete();\n }\n /** Gets the date at which the calendar should start. */\n getStartValue() {\n return this.value ? this.value.start : null;\n }\n /** Gets the input's theme palette. */\n getThemePalette() {\n return this._formField ? this._formField.color : undefined;\n }\n /** Gets the element to which the calendar overlay should be attached. */\n getConnectedOverlayOrigin() {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n /** Gets the ID of an element that should be used a description for the calendar overlay. */\n getOverlayLabelId() {\n return this._formField ? this._formField.getLabelId() : null;\n }\n /** Gets the value that is used to mirror the state input. */\n _getInputMirrorValue() {\n return this._startInput ? this._startInput.getMirrorValue() : '';\n }\n /** Whether the input placeholders should be hidden. */\n _shouldHidePlaceholders() {\n return this._startInput ? !this._startInput.isEmpty() : false;\n }\n /** Handles the value in one of the child inputs changing. */\n _handleChildValueChange() {\n this.stateChanges.next(undefined);\n this._changeDetectorRef.markForCheck();\n }\n /** Opens the date range picker associated with the input. */\n _openDatepicker() {\n if (this._rangePicker) {\n this._rangePicker.open();\n }\n }\n /** Whether the separate text should be hidden. */\n _shouldHideSeparator() {\n return ((!this._formField ||\n (this._formField.getLabelId() && !this._formField._shouldLabelFloat())) &&\n this.empty);\n }\n /** Gets the value for the `aria-labelledby` attribute of the inputs. */\n _getAriaLabelledby() {\n const formField = this._formField;\n return formField && formField._hasFloatingLabel() ? formField._labelId : null;\n }\n /** Updates the focused state of the range input. */\n _updateFocus(origin) {\n this.focused = origin !== null;\n this.stateChanges.next();\n }\n /** Re-runs the validators on the start/end inputs. */\n _revalidate() {\n if (this._startInput) {\n this._startInput._validatorOnChange();\n }\n if (this._endInput) {\n this._endInput._validatorOnChange();\n }\n }\n /** Registers the current date selection model with the start/end inputs. */\n _registerModel(model) {\n if (this._startInput) {\n this._startInput._registerModel(model);\n }\n if (this._endInput) {\n this._endInput._registerModel(model);\n }\n }\n}\nMatDateRangeInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateRangeInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2$2.ControlContainer, optional: true, self: true }, { token: i1$1.DateAdapter, optional: true }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatDateRangeInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDateRangeInput, selector: \"mat-date-range-input\", inputs: { rangePicker: \"rangePicker\", required: \"required\", dateFilter: \"dateFilter\", min: \"min\", max: \"max\", disabled: \"disabled\", separator: \"separator\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\" }, host: { attributes: { \"role\": \"group\" }, properties: { \"class.mat-date-range-input-hide-placeholders\": \"_shouldHidePlaceholders()\", \"class.mat-date-range-input-required\": \"required\", \"attr.id\": \"null\", \"attr.aria-labelledby\": \"_getAriaLabelledby()\", \"attr.aria-describedby\": \"_ariaDescribedBy\", \"attr.data-mat-calendar\": \"rangePicker ? rangePicker.id : null\" }, classAttribute: \"mat-date-range-input\" }, providers: [\n { provide: MatFormFieldControl, useExisting: MatDateRangeInput },\n { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },\n ], queries: [{ propertyName: \"_startInput\", first: true, predicate: MatStartDate, descendants: true }, { propertyName: \"_endInput\", first: true, predicate: MatEndDate, descendants: true }], exportAs: [\"matDateRangeInput\"], usesOnChanges: true, ngImport: i0, template: \"\\n
\\n \\n {{_getInputMirrorValue()}}\\n
\\n\\n {{separator}}\\n\\n
\\n \\n
\\n\\n\\n\", styles: [\".mat-date-range-input{display:block;width:100%}.mat-date-range-input-container{display:flex;align-items:center}.mat-date-range-input-separator{transition:opacity 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);margin:0 4px}.mat-date-range-input-separator-hidden{-webkit-user-select:none;user-select:none;opacity:0;transition:none}.mat-date-range-input-inner{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;vertical-align:bottom;text-align:inherit;-webkit-appearance:none;width:100%}.mat-date-range-input-inner:-moz-ui-invalid{box-shadow:none}.mat-date-range-input-inner::placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-moz-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-webkit-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner:-ms-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{opacity:0}.mat-date-range-input-mirror{-webkit-user-select:none;user-select:none;visibility:hidden;white-space:nowrap;display:inline-block;min-width:2px}.mat-date-range-input-start-wrapper{position:relative;overflow:hidden;max-width:calc(50% - 4px)}.mat-date-range-input-start-wrapper .mat-date-range-input-inner{position:absolute;top:0;left:0}.mat-date-range-input-end-wrapper{flex-grow:1;max-width:calc(50% - 4px)}.mat-form-field-type-mat-date-range-input .mat-form-field-infix{width:200px}\\n\"], directives: [{ type: i8.CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: [\"cdkFocusChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateRangeInput, decorators: [{\n type: Component,\n args: [{ selector: 'mat-date-range-input', exportAs: 'matDateRangeInput', host: {\n 'class': 'mat-date-range-input',\n '[class.mat-date-range-input-hide-placeholders]': '_shouldHidePlaceholders()',\n '[class.mat-date-range-input-required]': 'required',\n '[attr.id]': 'null',\n 'role': 'group',\n '[attr.aria-labelledby]': '_getAriaLabelledby()',\n '[attr.aria-describedby]': '_ariaDescribedBy',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': 'rangePicker ? rangePicker.id : null',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n { provide: MatFormFieldControl, useExisting: MatDateRangeInput },\n { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },\n ], template: \"\\n
\\n \\n {{_getInputMirrorValue()}}\\n
\\n\\n {{separator}}\\n\\n
\\n \\n
\\n\\n\\n\", styles: [\".mat-date-range-input{display:block;width:100%}.mat-date-range-input-container{display:flex;align-items:center}.mat-date-range-input-separator{transition:opacity 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);margin:0 4px}.mat-date-range-input-separator-hidden{-webkit-user-select:none;user-select:none;opacity:0;transition:none}.mat-date-range-input-inner{font:inherit;background:transparent;color:currentColor;border:none;outline:none;padding:0;margin:0;vertical-align:bottom;text-align:inherit;-webkit-appearance:none;width:100%}.mat-date-range-input-inner:-moz-ui-invalid{box-shadow:none}.mat-date-range-input-inner::placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-moz-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-webkit-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner:-ms-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{-webkit-user-select:none;user-select:none;color:transparent !important;-webkit-text-fill-color:transparent;transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.cdk-high-contrast-active .mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{opacity:0}.mat-date-range-input-mirror{-webkit-user-select:none;user-select:none;visibility:hidden;white-space:nowrap;display:inline-block;min-width:2px}.mat-date-range-input-start-wrapper{position:relative;overflow:hidden;max-width:calc(50% - 4px)}.mat-date-range-input-start-wrapper .mat-date-range-input-inner{position:absolute;top:0;left:0}.mat-date-range-input-end-wrapper{flex-grow:1;max-width:calc(50% - 4px)}.mat-form-field-type-mat-date-range-input .mat-form-field-infix{width:200px}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2$2.ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: i1$1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2$1.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }];\n }, propDecorators: { rangePicker: [{\n type: Input\n }], required: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], disabled: [{\n type: Input\n }], separator: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], _startInput: [{\n type: ContentChild,\n args: [MatStartDate]\n }], _endInput: [{\n type: ContentChild,\n args: [MatEndDate]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDateRangePicker\"). We can change this to a\n// directive if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the date range picker popup/dialog. */\nclass MatDateRangePicker extends MatDatepickerBase {\n _forwardContentValues(instance) {\n super._forwardContentValues(instance);\n const input = this.datepickerInput;\n if (input) {\n instance.comparisonStart = input.comparisonStart;\n instance.comparisonEnd = input.comparisonEnd;\n }\n }\n}\nMatDateRangePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateRangePicker, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatDateRangePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDateRangePicker, selector: \"mat-date-range-picker\", providers: [\n MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,\n MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDateRangePicker },\n ], exportAs: [\"matDateRangePicker\"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDateRangePicker, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-date-range-picker',\n template: '',\n exportAs: 'matDateRangePicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,\n MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDateRangePicker },\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Button that will close the datepicker and assign the current selection to the data model. */\nclass MatDatepickerApply {\n constructor(_datepicker) {\n this._datepicker = _datepicker;\n }\n _applySelection() {\n this._datepicker._applyPendingSelection();\n this._datepicker.close();\n }\n}\nMatDatepickerApply.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerApply, deps: [{ token: MatDatepickerBase }], target: i0.ɵɵFactoryTarget.Directive });\nMatDatepickerApply.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerApply, selector: \"[matDatepickerApply], [matDateRangePickerApply]\", host: { listeners: { \"click\": \"_applySelection()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerApply, decorators: [{\n type: Directive,\n args: [{\n selector: '[matDatepickerApply], [matDateRangePickerApply]',\n host: { '(click)': '_applySelection()' },\n }]\n }], ctorParameters: function () { return [{ type: MatDatepickerBase }]; } });\n/** Button that will close the datepicker and discard the current selection. */\nclass MatDatepickerCancel {\n constructor(_datepicker) {\n this._datepicker = _datepicker;\n }\n}\nMatDatepickerCancel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerCancel, deps: [{ token: MatDatepickerBase }], target: i0.ɵɵFactoryTarget.Directive });\nMatDatepickerCancel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerCancel, selector: \"[matDatepickerCancel], [matDateRangePickerCancel]\", host: { listeners: { \"click\": \"_datepicker.close()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerCancel, decorators: [{\n type: Directive,\n args: [{\n selector: '[matDatepickerCancel], [matDateRangePickerCancel]',\n host: { '(click)': '_datepicker.close()' },\n }]\n }], ctorParameters: function () { return [{ type: MatDatepickerBase }]; } });\n/**\n * Container that can be used to project a row of action buttons\n * to the bottom of a datepicker or date range picker.\n */\nclass MatDatepickerActions {\n constructor(_datepicker, _viewContainerRef) {\n this._datepicker = _datepicker;\n this._viewContainerRef = _viewContainerRef;\n }\n ngAfterViewInit() {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n this._datepicker.registerActions(this._portal);\n }\n ngOnDestroy() {\n var _a;\n this._datepicker.removeActions(this._portal);\n // Needs to be null checked since we initialize it in `ngAfterViewInit`.\n if (this._portal && this._portal.isAttached) {\n (_a = this._portal) === null || _a === void 0 ? void 0 : _a.detach();\n }\n }\n}\nMatDatepickerActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerActions, deps: [{ token: MatDatepickerBase }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });\nMatDatepickerActions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDatepickerActions, selector: \"mat-datepicker-actions, mat-date-range-picker-actions\", viewQueries: [{ propertyName: \"_template\", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `\n \n
\n \n
\n
\n `, isInline: true, styles: [\".mat-datepicker-actions{display:flex;justify-content:flex-end;align-items:center;padding:0 8px 8px 8px}.mat-datepicker-actions .mat-button-base+.mat-button-base{margin-left:8px}[dir=rtl] .mat-datepicker-actions .mat-button-base+.mat-button-base{margin-left:0;margin-right:8px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerActions, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-actions, mat-date-range-picker-actions', template: `\n \n
\n \n
\n
\n `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".mat-datepicker-actions{display:flex;justify-content:flex-end;align-items:center;padding:0 8px 8px 8px}.mat-datepicker-actions .mat-button-base+.mat-button-base{margin-left:8px}[dir=rtl] .mat-datepicker-actions .mat-button-base+.mat-button-base{margin-left:0;margin-right:8px}\\n\"] }]\n }], ctorParameters: function () { return [{ type: MatDatepickerBase }, { type: i0.ViewContainerRef }]; }, propDecorators: { _template: [{\n type: ViewChild,\n args: [TemplateRef]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatDatepickerModule {\n}\nMatDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerModule, declarations: [MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n MatDatepickerActions,\n MatDatepickerCancel,\n MatDatepickerApply], imports: [CommonModule,\n MatButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatCommonModule], exports: [CdkScrollableModule,\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n MatDatepickerActions,\n MatDatepickerCancel,\n MatDatepickerApply] });\nMatDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerModule, providers: [MatDatepickerIntl, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[\n CommonModule,\n MatButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatCommonModule,\n ], CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatCommonModule,\n ],\n exports: [\n CdkScrollableModule,\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n MatDatepickerActions,\n MatDatepickerCancel,\n MatDatepickerApply,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatDatepickerToggleIcon,\n MatMonthView,\n MatYearView,\n MatMultiYearView,\n MatCalendarHeader,\n MatDateRangeInput,\n MatStartDate,\n MatEndDate,\n MatDateRangePicker,\n MatDatepickerActions,\n MatDatepickerCancel,\n MatDatepickerApply,\n ],\n providers: [MatDatepickerIntl, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DateRange, DefaultMatCalendarRangeStrategy, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATE_RANGE_SELECTION_STRATEGY, MAT_RANGE_DATE_SELECTION_MODEL_FACTORY, MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY, MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER, MatCalendar, MatCalendarBody, MatCalendarCell, MatCalendarHeader, MatDateRangeInput, MatDateRangePicker, MatDateSelectionModel, MatDatepicker, MatDatepickerActions, MatDatepickerApply, MatDatepickerCancel, MatDatepickerContent, MatDatepickerInput, MatDatepickerInputEvent, MatDatepickerIntl, MatDatepickerModule, MatDatepickerToggle, MatDatepickerToggleIcon, MatEndDate, MatMonthView, MatMultiYearView, MatRangeDateSelectionModel, MatSingleDateSelectionModel, MatStartDate, MatYearView, matDatepickerAnimations, yearsPerPage, yearsPerRow };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Input, EventEmitter, Optional, Inject, SkipSelf, Output, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport * as i1 from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion. */\nlet nextId$1 = 0;\n/**\n * Injection token that can be used to reference instances of `CdkAccordion`. It serves\n * as alternative token to the actual `CdkAccordion` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_ACCORDION = new InjectionToken('CdkAccordion');\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nclass CdkAccordion {\n constructor() {\n /** Emits when the state of the accordion changes */\n this._stateChanges = new Subject();\n /** Stream that emits true/false when openAll/closeAll is triggered. */\n this._openCloseAllActions = new Subject();\n /** A readonly id value to use for unique selection coordination. */\n this.id = `cdk-accordion-${nextId$1++}`;\n this._multi = false;\n }\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n get multi() {\n return this._multi;\n }\n set multi(multi) {\n this._multi = coerceBooleanProperty(multi);\n }\n /** Opens all enabled accordion items in an accordion where multi is enabled. */\n openAll() {\n if (this._multi) {\n this._openCloseAllActions.next(true);\n }\n }\n /** Closes all enabled accordion items in an accordion where multi is enabled. */\n closeAll() {\n this._openCloseAllActions.next(false);\n }\n ngOnChanges(changes) {\n this._stateChanges.next(changes);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n this._openCloseAllActions.complete();\n }\n}\nCdkAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordion.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAccordion, selector: \"cdk-accordion, [cdkAccordion]\", inputs: { multi: \"multi\" }, providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }], exportAs: [\"cdkAccordion\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }],\n }]\n }], propDecorators: { multi: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n/**\n * An basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nclass CdkAccordionItem {\n constructor(accordion, _changeDetectorRef, _expansionDispatcher) {\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /** Subscription to openAll/closeAll events. */\n this._openCloseAllSubscription = Subscription.EMPTY;\n /** Event emitted every time the AccordionItem is closed. */\n this.closed = new EventEmitter();\n /** Event emitted every time the AccordionItem is opened. */\n this.opened = new EventEmitter();\n /** Event emitted when the AccordionItem is destroyed. */\n this.destroyed = new EventEmitter();\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n this.expandedChange = new EventEmitter();\n /** The unique AccordionItem id. */\n this.id = `cdk-accordion-child-${nextId++}`;\n this._expanded = false;\n this._disabled = false;\n /** Unregister function for _expansionDispatcher. */\n this._removeUniqueSelectionListener = () => { };\n this._removeUniqueSelectionListener = _expansionDispatcher.listen((id, accordionId) => {\n if (this.accordion &&\n !this.accordion.multi &&\n this.accordion.id === accordionId &&\n this.id !== id) {\n this.expanded = false;\n }\n });\n // When an accordion item is hosted in an accordion, subscribe to open/close events.\n if (this.accordion) {\n this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();\n }\n }\n /** Whether the AccordionItem is expanded. */\n get expanded() {\n return this._expanded;\n }\n set expanded(expanded) {\n expanded = coerceBooleanProperty(expanded);\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the AccordionItem is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n this._disabled = coerceBooleanProperty(disabled);\n }\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.opened.complete();\n this.closed.complete();\n this.destroyed.emit();\n this.destroyed.complete();\n this._removeUniqueSelectionListener();\n this._openCloseAllSubscription.unsubscribe();\n }\n /** Toggles the expanded state of the accordion item. */\n toggle() {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n /** Sets the expanded state of the accordion item to false. */\n close() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n /** Sets the expanded state of the accordion item to true. */\n open() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n _subscribeToOpenCloseAllActions() {\n return this.accordion._openCloseAllActions.subscribe(expanded => {\n // Only change expanded state if item is enabled\n if (!this.disabled) {\n this.expanded = expanded;\n }\n });\n }\n}\nCdkAccordionItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionItem, deps: [{ token: CDK_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordionItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAccordionItem, selector: \"cdk-accordion-item, [cdkAccordionItem]\", inputs: { expanded: \"expanded\", disabled: \"disabled\" }, outputs: { closed: \"closed\", opened: \"opened\", destroyed: \"destroyed\", expandedChange: \"expandedChange\" }, providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ], exportAs: [\"cdkAccordionItem\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionItem, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion-item, [cdkAccordionItem]',\n exportAs: 'cdkAccordionItem',\n providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ],\n }]\n }], ctorParameters: function () {\n return [{ type: CdkAccordion, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_ACCORDION]\n }, {\n type: SkipSelf\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }];\n }, propDecorators: { closed: [{\n type: Output\n }], opened: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkAccordionModule {\n}\nCdkAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule, declarations: [CdkAccordion, CdkAccordionItem], exports: [CdkAccordion, CdkAccordionItem] });\nCdkAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkAccordion, CdkAccordionItem],\n declarations: [CdkAccordion, CdkAccordionItem],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkAccordion, CdkAccordionItem, CdkAccordionModule };\n","import { CdkAccordionItem, CdkAccordion, CdkAccordionModule } from '@angular/cdk/accordion';\nimport * as i2 from '@angular/cdk/portal';\nimport { TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, SkipSelf, Inject, Input, Output, ContentChild, ViewChild, Host, Attribute, QueryList, ContentChildren, NgModule } from '@angular/core';\nimport { mixinTabIndex, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i2$1 from '@angular/cdk/a11y';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { distinctUntilChanged, startWith, filter, take } from 'rxjs/operators';\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subject, Subscription, EMPTY, merge } from 'rxjs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nconst MAT_ACCORDION = new InjectionToken('MAT_ACCORDION');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time and timing curve for expansion panel animations. */\n// Note: Keep this in sync with the Sass variable for the panel header animation.\nconst EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n/**\n * Animations used by the Material expansion panel.\n *\n * A bug in angular animation's `state` when ViewContainers are moved using ViewContainerRef.move()\n * causes the animation state of moved components to become `void` upon exit, and not update again\n * upon reentry into the DOM. This can lead a to situation for the expansion panel where the state\n * of the panel is `expanded` or `collapsed` but the animation state is `void`.\n *\n * To correctly handle animating to the next state, we animate between `void` and `collapsed` which\n * are defined to have the same styles. Since angular animates from the current styles to the\n * destination state's style definition, in situations where we are moving from `void`'s styles to\n * `collapsed` this acts a noop since no style values change.\n *\n * In the case where angular's animation state is out of sync with the expansion panel's state, the\n * expansion panel being `expanded` and angular animations being `void`, the animation from the\n * `expanded`'s effective styles (though in a `void` animation state) to the collapsed state will\n * occur as expected.\n *\n * Angular Bug: https://github.com/angular/angular/issues/18847\n *\n * @docs-private\n */\nconst matExpansionAnimations = {\n /** Animation that rotates the indicator arrow. */\n indicatorRotate: trigger('indicatorRotate', [\n state('collapsed, void', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed, void => collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n /** Animation that expands and collapses the panel content. */\n bodyExpansion: trigger('bodyExpansion', [\n state('collapsed, void', style({ height: '0px', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed, void => collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\nclass MatExpansionPanelContent {\n constructor(_template) {\n this._template = _template;\n }\n}\nMatExpansionPanelContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatExpansionPanelContent, selector: \"ng-template[matExpansionPanelContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matExpansionPanelContent]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/** Counter for generating unique element ids. */\nlet uniqueId = 0;\n/**\n * Injection token that can be used to configure the default\n * options for the expansion panel component.\n */\nconst MAT_EXPANSION_PANEL_DEFAULT_OPTIONS = new InjectionToken('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n/**\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\nclass MatExpansionPanel extends CdkAccordionItem {\n constructor(accordion, _changeDetectorRef, _uniqueSelectionDispatcher, _viewContainerRef, _document, _animationMode, defaultOptions) {\n super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n this._viewContainerRef = _viewContainerRef;\n this._animationMode = _animationMode;\n this._hideToggle = false;\n /** An event emitted after the body's expansion animation happens. */\n this.afterExpand = new EventEmitter();\n /** An event emitted after the body's collapse animation happens. */\n this.afterCollapse = new EventEmitter();\n /** Stream that emits for changes in `@Input` properties. */\n this._inputChanges = new Subject();\n /** ID for the associated header element. Used for a11y labelling. */\n this._headerId = `mat-expansion-panel-header-${uniqueId++}`;\n /** Stream of body animation done events. */\n this._bodyAnimationDone = new Subject();\n this.accordion = accordion;\n this._document = _document;\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._bodyAnimationDone\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe(event => {\n if (event.fromState !== 'void') {\n if (event.toState === 'expanded') {\n this.afterExpand.emit();\n }\n else if (event.toState === 'collapsed') {\n this.afterCollapse.emit();\n }\n }\n });\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n /** Whether the toggle indicator should be hidden. */\n get hideToggle() {\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n }\n set hideToggle(value) {\n this._hideToggle = coerceBooleanProperty(value);\n }\n /** The position of the expansion indicator. */\n get togglePosition() {\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\n }\n set togglePosition(value) {\n this._togglePosition = value;\n }\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing() {\n if (this.accordion) {\n return this.expanded && this.accordion.displayMode === 'default';\n }\n return false;\n }\n /** Gets the expanded state string. */\n _getExpandedState() {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n /** Toggles the expanded state of the expansion panel. */\n toggle() {\n this.expanded = !this.expanded;\n }\n /** Sets the expanded state of the expansion panel to false. */\n close() {\n this.expanded = false;\n }\n /** Sets the expanded state of the expansion panel to true. */\n open() {\n this.expanded = true;\n }\n ngAfterContentInit() {\n if (this._lazyContent) {\n // Render the content as soon as the panel becomes open.\n this.opened\n .pipe(startWith(null), filter(() => this.expanded && !this._portal), take(1))\n .subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n }\n ngOnChanges(changes) {\n this._inputChanges.next(changes);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._bodyAnimationDone.complete();\n this._inputChanges.complete();\n }\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus() {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n return false;\n }\n}\nMatExpansionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanel, deps: [{ token: MAT_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatExpansionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatExpansionPanel, selector: \"mat-expansion-panel\", inputs: { disabled: \"disabled\", expanded: \"expanded\", hideToggle: \"hideToggle\", togglePosition: \"togglePosition\" }, outputs: { opened: \"opened\", closed: \"closed\", expandedChange: \"expandedChange\", afterExpand: \"afterExpand\", afterCollapse: \"afterCollapse\" }, host: { properties: { \"class.mat-expanded\": \"expanded\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\", \"class.mat-expansion-panel-spacing\": \"_hasSpacing()\" }, classAttribute: \"mat-expansion-panel\" }, providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n { provide: MAT_ACCORDION, useValue: undefined },\n ], queries: [{ propertyName: \"_lazyContent\", first: true, predicate: MatExpansionPanelContent, descendants: true }], viewQueries: [{ propertyName: \"_body\", first: true, predicate: [\"body\"], descendants: true }], exportAs: [\"matExpansionPanel\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"\\n
\\n
\\n \\n \\n
\\n \\n
\\n\", styles: [\".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;border-radius:4px;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:4px;border-top-left-radius:4px}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible}.mat-expansion-panel-content[style*=\\\"visibility: hidden\\\"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"], directives: [{ type: i2.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matExpansionAnimations.bodyExpansion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanel, decorators: [{\n type: Component,\n args: [{ selector: 'mat-expansion-panel', exportAs: 'matExpansionPanel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled', 'expanded'], outputs: ['opened', 'closed', 'expandedChange'], animations: [matExpansionAnimations.bodyExpansion], providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n { provide: MAT_ACCORDION, useValue: undefined },\n ], host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n }, template: \"\\n
\\n
\\n \\n \\n
\\n \\n
\\n\", styles: [\".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;border-radius:4px;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:4px;border-top-left-radius:4px}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible}.mat-expansion-panel-content[style*=\\\"visibility: hidden\\\"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [MAT_ACCORDION]\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_EXPANSION_PANEL_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }];\n }, propDecorators: { hideToggle: [{\n type: Input\n }], togglePosition: [{\n type: Input\n }], afterExpand: [{\n type: Output\n }], afterCollapse: [{\n type: Output\n }], _lazyContent: [{\n type: ContentChild,\n args: [MatExpansionPanelContent]\n }], _body: [{\n type: ViewChild,\n args: ['body']\n }] } });\n/**\n * Actions of a ``.\n */\nclass MatExpansionPanelActionRow {\n}\nMatExpansionPanelActionRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelActionRow, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelActionRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatExpansionPanelActionRow, selector: \"mat-action-row\", host: { classAttribute: \"mat-action-row\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelActionRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row',\n },\n }]\n }] });\n\n// Boilerplate for applying mixins to MatExpansionPanelHeader.\n/** @docs-private */\nclass MatExpansionPanelHeaderBase {\n}\nconst _MatExpansionPanelHeaderMixinBase = mixinTabIndex(MatExpansionPanelHeaderBase);\n/**\n * Header element of a ``.\n */\nclass MatExpansionPanelHeader extends _MatExpansionPanelHeaderMixinBase {\n constructor(panel, _element, _focusMonitor, _changeDetectorRef, defaultOptions, _animationMode, tabIndex) {\n super();\n this.panel = panel;\n this._element = _element;\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n this._parentChangeSubscription = Subscription.EMPTY;\n const accordionHideToggleChange = panel.accordion\n ? panel.accordion._stateChanges.pipe(filter(changes => !!(changes['hideToggle'] || changes['togglePosition'])))\n : EMPTY;\n this.tabIndex = parseInt(tabIndex || '') || 0;\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription = merge(panel.opened, panel.closed, accordionHideToggleChange, panel._inputChanges.pipe(filter(changes => {\n return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\n }))).subscribe(() => this._changeDetectorRef.markForCheck());\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed\n .pipe(filter(() => panel._containsFocus()))\n .subscribe(() => _focusMonitor.focusVia(_element, 'program'));\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled() {\n return this.panel.disabled;\n }\n /** Toggles the expanded state of the panel. */\n _toggle() {\n if (!this.disabled) {\n this.panel.toggle();\n }\n }\n /** Gets whether the panel is expanded. */\n _isExpanded() {\n return this.panel.expanded;\n }\n /** Gets the expanded state string of the panel. */\n _getExpandedState() {\n return this.panel._getExpandedState();\n }\n /** Gets the panel id. */\n _getPanelId() {\n return this.panel.id;\n }\n /** Gets the toggle position for the header. */\n _getTogglePosition() {\n return this.panel.togglePosition;\n }\n /** Gets whether the expand indicator should be shown. */\n _showToggle() {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n /**\n * Gets the current height of the header. Null if no custom height has been\n * specified, and if the default height from the stylesheet should be used.\n */\n _getHeaderHeight() {\n const isExpanded = this._isExpanded();\n if (isExpanded && this.expandedHeight) {\n return this.expandedHeight;\n }\n else if (!isExpanded && this.collapsedHeight) {\n return this.collapsedHeight;\n }\n return null;\n }\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n return;\n }\n }\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n else {\n this._element.nativeElement.focus(options);\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._element).subscribe(origin => {\n if (origin && this.panel.accordion) {\n this.panel.accordion._handleHeaderFocus(this);\n }\n });\n }\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n}\nMatExpansionPanelHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelHeader, deps: [{ token: MatExpansionPanel, host: true }, { token: i0.ElementRef }, { token: i2$1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });\nMatExpansionPanelHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatExpansionPanelHeader, selector: \"mat-expansion-panel-header\", inputs: { tabIndex: \"tabIndex\", expandedHeight: \"expandedHeight\", collapsedHeight: \"collapsedHeight\" }, host: { attributes: { \"role\": \"button\" }, listeners: { \"click\": \"_toggle()\", \"keydown\": \"_keydown($event)\" }, properties: { \"attr.id\": \"panel._headerId\", \"attr.tabindex\": \"tabIndex\", \"attr.aria-controls\": \"_getPanelId()\", \"attr.aria-expanded\": \"_isExpanded()\", \"attr.aria-disabled\": \"panel.disabled\", \"class.mat-expanded\": \"_isExpanded()\", \"class.mat-expansion-toggle-indicator-after\": \"_getTogglePosition() === 'after'\", \"class.mat-expansion-toggle-indicator-before\": \"_getTogglePosition() === 'before'\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\", \"style.height\": \"_getHeaderHeight()\" }, classAttribute: \"mat-expansion-panel-header mat-focus-indicator\" }, usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n \\n\\n\\n\", styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\\\"\\\";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true])::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;border:3px solid;border-radius:4px;content:\\\"\\\"}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}\\n\"], directives: [{ type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [matExpansionAnimations.indicatorRotate], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-expansion-panel-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['tabIndex'], animations: [matExpansionAnimations.indicatorRotate], host: {\n 'class': 'mat-expansion-panel-header mat-focus-indicator',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[style.height]': '_getHeaderHeight()',\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n }, template: \"\\n \\n \\n \\n\\n\\n\", styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\\\"\\\";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true])::before,.cdk-high-contrast-active .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true])::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;border:3px solid;border-radius:4px;content:\\\"\\\"}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatExpansionPanel, decorators: [{\n type: Host\n }] }, { type: i0.ElementRef }, { type: i2$1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_EXPANSION_PANEL_DEFAULT_OPTIONS]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n }, propDecorators: { expandedHeight: [{\n type: Input\n }], collapsedHeight: [{\n type: Input\n }] } });\n/**\n * Description element of a ``.\n */\nclass MatExpansionPanelDescription {\n}\nMatExpansionPanelDescription.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelDescription.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatExpansionPanelDescription, selector: \"mat-panel-description\", host: { classAttribute: \"mat-expansion-panel-header-description\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelDescription, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description',\n },\n }]\n }] });\n/**\n * Title element of a ``.\n */\nclass MatExpansionPanelTitle {\n}\nMatExpansionPanelTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatExpansionPanelTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatExpansionPanelTitle, selector: \"mat-panel-title\", host: { classAttribute: \"mat-expansion-panel-header-title\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionPanelTitle, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title',\n },\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive for a Material Design Accordion.\n */\nclass MatAccordion extends CdkAccordion {\n constructor() {\n super(...arguments);\n /** Headers belonging to this accordion. */\n this._ownHeaders = new QueryList();\n this._hideToggle = false;\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n this.displayMode = 'default';\n /** The position of the expansion indicator. */\n this.togglePosition = 'after';\n }\n /** Whether the expansion indicator should be hidden. */\n get hideToggle() {\n return this._hideToggle;\n }\n set hideToggle(show) {\n this._hideToggle = coerceBooleanProperty(show);\n }\n ngAfterContentInit() {\n this._headers.changes\n .pipe(startWith(this._headers))\n .subscribe((headers) => {\n this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\n this._ownHeaders.notifyOnChanges();\n });\n this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\n }\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event) {\n this._keyManager.onKeydown(event);\n }\n _handleHeaderFocus(header) {\n this._keyManager.updateActiveItem(header);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._ownHeaders.destroy();\n }\n}\nMatAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAccordion, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAccordion.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatAccordion, selector: \"mat-accordion\", inputs: { multi: \"multi\", hideToggle: \"hideToggle\", displayMode: \"displayMode\", togglePosition: \"togglePosition\" }, host: { properties: { \"class.mat-accordion-multi\": \"this.multi\" }, classAttribute: \"mat-accordion\" }, providers: [\n {\n provide: MAT_ACCORDION,\n useExisting: MatAccordion,\n },\n ], queries: [{ propertyName: \"_headers\", predicate: MatExpansionPanelHeader, descendants: true }], exportAs: [\"matAccordion\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n inputs: ['multi'],\n providers: [\n {\n provide: MAT_ACCORDION,\n useExisting: MatAccordion,\n },\n ],\n host: {\n class: 'mat-accordion',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if multiple panel support is enabled.\n '[class.mat-accordion-multi]': 'this.multi',\n },\n }]\n }], propDecorators: { _headers: [{\n type: ContentChildren,\n args: [MatExpansionPanelHeader, { descendants: true }]\n }], hideToggle: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], togglePosition: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatExpansionModule {\n}\nMatExpansionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatExpansionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionModule, declarations: [MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent], imports: [CommonModule, MatCommonModule, CdkAccordionModule, PortalModule], exports: [MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent] });\nMatExpansionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionModule, imports: [[CommonModule, MatCommonModule, CdkAccordionModule, PortalModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatExpansionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule, CdkAccordionModule, PortalModule],\n exports: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n declarations: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { EXPANSION_PANEL_ANIMATION_TIMING, MAT_ACCORDION, MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, MatAccordion, MatExpansionModule, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelContent, MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle, matExpansionAnimations };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Input, ContentChildren, Directive, NgModule } from '@angular/core';\nimport { setLines, MatLine, MatLineModule, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nclass TileCoordinator {\n constructor() {\n /** Index at which the search for the next gap will start. */\n this.columnIndex = 0;\n /** The current row index. */\n this.rowIndex = 0;\n }\n /** Gets the total number of rows occupied by tiles */\n get rowCount() {\n return this.rowIndex + 1;\n }\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n * @param tiles Tiles to be positioned.\n */\n update(numColumns, tiles) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n /** Calculates the row and col position of a tile. */\n _trackTile(tile) {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n /** Finds the next available space large enough to fit the tile. */\n _findMatchingGap(tileCols) {\n if (tileCols > this.tracker.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`);\n }\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while (gapEndIndex - gapStartIndex < tileCols || gapEndIndex == 0);\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n /** Move \"down\" to the next row. */\n _nextRow() {\n this.columnIndex = 0;\n this.rowIndex++;\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n _findGapEndIndex(gapStartIndex) {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n /** Update the tile tracker to account for the given tile in the given space. */\n _markTilePosition(start, tile) {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nclass TilePosition {\n constructor(row, col) {\n this.row = row;\n this.col = col;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nconst MAT_GRID_LIST = new InjectionToken('MAT_GRID_LIST');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatGridTile {\n constructor(_element, _gridList) {\n this._element = _element;\n this._gridList = _gridList;\n this._rowspan = 1;\n this._colspan = 1;\n }\n /** Amount of rows that the grid tile takes up. */\n get rowspan() {\n return this._rowspan;\n }\n set rowspan(value) {\n this._rowspan = Math.round(coerceNumberProperty(value));\n }\n /** Amount of columns that the grid tile takes up. */\n get colspan() {\n return this._colspan;\n }\n set colspan(value) {\n this._colspan = Math.round(coerceNumberProperty(value));\n }\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property, value) {\n this._element.nativeElement.style[property] = value;\n }\n}\nMatGridTile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTile, deps: [{ token: i0.ElementRef }, { token: MAT_GRID_LIST, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatGridTile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatGridTile, selector: \"mat-grid-tile\", inputs: { rowspan: \"rowspan\", colspan: \"colspan\" }, host: { properties: { \"attr.rowspan\": \"rowspan\", \"attr.colspan\": \"colspan\" }, classAttribute: \"mat-grid-tile\" }, exportAs: [\"matGridTile\"], ngImport: i0, template: \"
\\n \\n
\\n\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTile, decorators: [{\n type: Component,\n args: [{ selector: 'mat-grid-tile', exportAs: 'matGridTile', host: {\n 'class': 'mat-grid-tile',\n // Ensures that the \"rowspan\" and \"colspan\" input value is reflected in\n // the DOM. This is needed for the grid-tile harness.\n '[attr.rowspan]': 'rowspan',\n '[attr.colspan]': 'colspan',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n \\n
\\n\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_GRID_LIST]\n }] }];\n }, propDecorators: { rowspan: [{\n type: Input\n }], colspan: [{\n type: Input\n }] } });\nclass MatGridTileText {\n constructor(_element) {\n this._element = _element;\n }\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n}\nMatGridTileText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTileText, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nMatGridTileText.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatGridTileText, selector: \"mat-grid-tile-header, mat-grid-tile-footer\", queries: [{ propertyName: \"_lines\", predicate: MatLine, descendants: true }], ngImport: i0, template: \"\\n
\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTileText, decorators: [{\n type: Component,\n args: [{ selector: 'mat-grid-tile-header, mat-grid-tile-footer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\n
\\n\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { _lines: [{\n type: ContentChildren,\n args: [MatLine, { descendants: true }]\n }] } });\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nclass MatGridAvatarCssMatStyler {\n}\nMatGridAvatarCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridAvatarCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatGridAvatarCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatGridAvatarCssMatStyler, selector: \"[mat-grid-avatar], [matGridAvatar]\", host: { classAttribute: \"mat-grid-avatar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridAvatarCssMatStyler, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: { 'class': 'mat-grid-avatar' },\n }]\n }] });\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nclass MatGridTileHeaderCssMatStyler {\n}\nMatGridTileHeaderCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTileHeaderCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatGridTileHeaderCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatGridTileHeaderCssMatStyler, selector: \"mat-grid-tile-header\", host: { classAttribute: \"mat-grid-tile-header\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTileHeaderCssMatStyler, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-grid-tile-header',\n host: { 'class': 'mat-grid-tile-header' },\n }]\n }] });\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nclass MatGridTileFooterCssMatStyler {\n}\nMatGridTileFooterCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTileFooterCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatGridTileFooterCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatGridTileFooterCssMatStyler, selector: \"mat-grid-tile-footer\", host: { classAttribute: \"mat-grid-tile-footer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridTileFooterCssMatStyler, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-grid-tile-footer',\n host: { 'class': 'mat-grid-tile-footer' },\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nclass TileStyler {\n constructor() {\n this._rows = 0;\n this._rowspan = 0;\n }\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize, tracker, cols, direction) {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent, gutterFraction) {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize, offset) {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize, span) {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile, rowIndex, colIndex) {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile, colIndex, percentWidth, gutterWidth) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan() {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight) {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight() {\n return null;\n }\n}\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example ``\n * @docs-private\n */\nclass FixedTileStyler extends TileStyler {\n constructor(fixedRowHeight) {\n super();\n this.fixedRowHeight = fixedRowHeight;\n }\n init(gutterSize, tracker, cols, direction) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n if (!cssCalcAllowedValue.test(this.fixedRowHeight) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n setRowStyles(tile, rowIndex) {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n getComputedHeight() {\n return ['height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)];\n }\n reset(list) {\n list._setListStyle(['height', null]);\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example ``\n * @docs-private\n */\nclass RatioTileStyler extends TileStyler {\n constructor(value) {\n super();\n this._parseRatio(value);\n }\n setRowStyles(tile, rowIndex, percentWidth, gutterWidth) {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n getComputedHeight() {\n return [\n 'paddingBottom',\n calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`),\n ];\n }\n reset(list) {\n list._setListStyle(['paddingBottom', null]);\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n _parseRatio(value) {\n const ratioParts = value.split(':');\n if (ratioParts.length !== 2 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example ``\n *\n * @docs-private\n */\nclass FitTileStyler extends TileStyler {\n setRowStyles(tile, rowIndex) {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n reset(list) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n/** Wraps a CSS string in a calc function */\nfunction calc(exp) {\n return `calc(${exp})`;\n}\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value) {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\nconst MAT_FIT_MODE = 'fit';\nclass MatGridList {\n constructor(_element, _dir) {\n this._element = _element;\n this._dir = _dir;\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n this._gutter = '1px';\n }\n /** Amount of columns in the grid list. */\n get cols() {\n return this._cols;\n }\n set cols(value) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n /** Size of the grid list's gutter in pixels. */\n get gutterSize() {\n return this._gutter;\n }\n set gutterSize(value) {\n this._gutter = `${value == null ? '' : value}`;\n }\n /** Set internal representation of row height from the user-provided value. */\n get rowHeight() {\n return this._rowHeight;\n }\n set rowHeight(value) {\n const newValue = `${value == null ? '' : value}`;\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n /** Throw a friendly error if cols property is missing */\n _checkCols() {\n if (!this.cols && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: must pass in number of columns. ` + `Example: `);\n }\n }\n /** Default to equal width:height if rowHeight property is missing */\n _checkRowHeight() {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n _setTileStyler(rowHeight) {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n }\n else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n }\n else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n /** Computes and applies the size and position for all children grid tiles. */\n _layoutTiles() {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style) {\n if (style) {\n this._element.nativeElement.style[style[0]] = style[1];\n }\n }\n}\nMatGridList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridList, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatGridList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatGridList, selector: \"mat-grid-list\", inputs: { cols: \"cols\", gutterSize: \"gutterSize\", rowHeight: \"rowHeight\" }, host: { properties: { \"attr.cols\": \"cols\" }, classAttribute: \"mat-grid-list\" }, providers: [\n {\n provide: MAT_GRID_LIST,\n useExisting: MatGridList,\n },\n ], queries: [{ propertyName: \"_tiles\", predicate: MatGridTile, descendants: true }], exportAs: [\"matGridList\"], ngImport: i0, template: \"
\\n \\n
\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridList, decorators: [{\n type: Component,\n args: [{ selector: 'mat-grid-list', exportAs: 'matGridList', host: {\n 'class': 'mat-grid-list',\n // Ensures that the \"cols\" input value is reflected in the DOM. This is\n // needed for the grid-list harness.\n '[attr.cols]': 'cols',\n }, providers: [\n {\n provide: MAT_GRID_LIST,\n useExisting: MatGridList,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"
\\n \\n
\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { _tiles: [{\n type: ContentChildren,\n args: [MatGridTile, { descendants: true }]\n }], cols: [{\n type: Input\n }], gutterSize: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatGridListModule {\n}\nMatGridListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatGridListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridListModule, declarations: [MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler], imports: [MatLineModule, MatCommonModule], exports: [MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler] });\nMatGridListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridListModule, imports: [[MatLineModule, MatCommonModule], MatLineModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatGridListModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Privately exported for the grid-list harness.\nconst ɵTileCoordinator = TileCoordinator;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatGridAvatarCssMatStyler, MatGridList, MatGridListModule, MatGridTile, MatGridTileFooterCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridTileText, ɵTileCoordinator };\n","import * as i1 from '@angular/cdk/a11y';\nimport { FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, QueryList, EventEmitter, TemplateRef, ContentChildren, ViewChild, ContentChild, Output, Self, NgModule } from '@angular/core';\nimport { Subject, Subscription, merge, of, asapScheduler } from 'rxjs';\nimport { startWith, switchMap, take, takeUntil, filter, delay } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i2 from '@angular/material/core';\nimport { mixinDisableRipple, mixinDisabled, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i3$1 from '@angular/cdk/bidi';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nconst matMenuAnimations = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n transform: 'scale(0.8)',\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1)',\n }))),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 }))),\n ]),\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({ opacity: 1 })),\n transition('void => *', [\n style({ opacity: 0 }),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ]),\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `MatMenuContent`. It serves\n * as alternative token to the actual `MatMenuContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');\nclass _MatMenuContentBase {\n constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {\n this._template = _template;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._document = _document;\n this._changeDetectorRef = _changeDetectorRef;\n /** Emits when the menu content has been attached. */\n this._attached = new Subject();\n }\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n var _a;\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._componentFactoryResolver, this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode.insertBefore(this._outlet.outletElement, element);\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n // @breaking-change 9.0.0 Make change detector ref required\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\n }\n }\n}\n_MatMenuContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatMenuContentBase, deps: [{ token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatMenuContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatMenuContentBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatMenuContentBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }];\n } });\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\nclass MatMenuContent extends _MatMenuContentBase {\n}\nMatMenuContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatMenuContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatMenuContent, selector: \"ng-template[matMenuContent]\", providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matMenuContent]',\n providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance\n * @docs-private\n */\nfunction throwMatMenuMissingError() {\n throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n \n `);\n}\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: `);\n}\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: `);\n}\n/**\n * Throws an exception for the case when a menu is assigned\n * to a trigger that is placed inside the same menu.\n * @docs-private\n */\nfunction throwMatMenuRecursiveError() {\n throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` +\n `not a parent of the trigger or move the trigger outside of the menu.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');\n\n// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nconst _MatMenuItemBase = mixinDisableRipple(mixinDisabled(class {\n}));\n/**\n * Single item inside of a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nclass MatMenuItem extends _MatMenuItemBase {\n constructor(_elementRef, _document, _focusMonitor, _parentMenu, _changeDetectorRef) {\n var _a;\n super();\n this._elementRef = _elementRef;\n this._document = _document;\n this._focusMonitor = _focusMonitor;\n this._parentMenu = _parentMenu;\n this._changeDetectorRef = _changeDetectorRef;\n /** ARIA role for the menu item. */\n this.role = 'menuitem';\n /** Stream that emits when the menu item is hovered. */\n this._hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n this._focused = new Subject();\n /** Whether the menu item is highlighted. */\n this._highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n this._triggersSubmenu = false;\n (_a = _parentMenu === null || _parentMenu === void 0 ? void 0 : _parentMenu.addItem) === null || _a === void 0 ? void 0 : _a.call(_parentMenu, this);\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n }\n else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\n }\n ngAfterViewInit() {\n if (this._focusMonitor) {\n // Start monitoring the element so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n this._focusMonitor.monitor(this._elementRef, false);\n }\n }\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n var _a;\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n icons[i].remove();\n }\n return ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';\n }\n _setHighlighted(isHighlighted) {\n var _a;\n // We need to mark this for check for the case where the content is coming from a\n // `matMenuContent` whose change detection tree is at the declaration position,\n // not the insertion position. See #23175.\n // @breaking-change 12.0.0 Remove null check for `_changeDetectorRef`.\n this._highlighted = isHighlighted;\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n }\n _hasFocus() {\n return this._document && this._document.activeElement === this._getHostElement();\n }\n}\nMatMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuItem, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.FocusMonitor }, { token: MAT_MENU_PANEL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatMenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatMenuItem, selector: \"[mat-menu-item]\", inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", role: \"role\" }, host: { listeners: { \"click\": \"_checkDisabled($event)\", \"mouseenter\": \"_handleMouseEnter()\" }, properties: { \"attr.role\": \"role\", \"class.mat-menu-item\": \"true\", \"class.mat-menu-item-highlighted\": \"_highlighted\", \"class.mat-menu-item-submenu-trigger\": \"_triggersSubmenu\", \"attr.tabindex\": \"_getTabIndex()\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.disabled\": \"disabled || null\" }, classAttribute: \"mat-focus-indicator\" }, exportAs: [\"matMenuItem\"], usesInheritance: true, ngImport: i0, template: \"\\n
\\n
\\n\\n\\n\", directives: [{ type: i2.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuItem, decorators: [{\n type: Component,\n args: [{ selector: '[mat-menu-item]', exportAs: 'matMenuItem', inputs: ['disabled', 'disableRipple'], host: {\n '[attr.role]': 'role',\n '[class.mat-menu-item]': 'true',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n 'class': 'mat-focus-indicator',\n '(click)': '_checkDisabled($event)',\n '(mouseenter)': '_handleMouseEnter()',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\n
\\n
\\n\\n\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { role: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n}\nlet menuPanelUid = 0;\n/** Base class with all of the `MatMenu` functionality. */\nclass _MatMenuBase {\n constructor(_elementRef, _ngZone, _defaultOptions, \n // @breaking-change 15.0.0 `_changeDetectorRef` to become a required parameter.\n _changeDetectorRef) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._changeDetectorRef = _changeDetectorRef;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /** Only the direct descendant menu items. */\n this._directDescendantItems = new QueryList();\n /** Subscription to tab events on the menu panel */\n this._tabSubscription = Subscription.EMPTY;\n /** Config object to be passed into the menu's ngClass */\n this._classList = {};\n /** Current state of the panel animation. */\n this._panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n this._animationDone = new Subject();\n /** Class or list of classes to be added to the overlay panel. */\n this.overlayPanelClass = this._defaultOptions.overlayPanelClass || '';\n /** Class to be added to the backdrop element. */\n this.backdropClass = this._defaultOptions.backdropClass;\n this._overlapTrigger = this._defaultOptions.overlapTrigger;\n this._hasBackdrop = this._defaultOptions.hasBackdrop;\n /** Event emitted when the menu is closed. */\n this.closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n this.close = this.closed;\n this.panelId = `mat-menu-panel-${menuPanelUid++}`;\n }\n /** Position of the menu in the X axis. */\n get xPosition() {\n return this._xPosition;\n }\n set xPosition(value) {\n if (value !== 'before' &&\n value !== 'after' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() {\n return this._yPosition;\n }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /** Whether the menu should overlap its trigger. */\n get overlapTrigger() {\n return this._overlapTrigger;\n }\n set overlapTrigger(value) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n /** Whether the menu has a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className) => {\n this._classList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach((className) => {\n this._classList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n get classList() {\n return this.panelClass;\n }\n set classList(classes) {\n this.panelClass = classes;\n }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems)\n .withWrap()\n .withTypeAhead()\n .withHomeAndEnd();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n // If a user manually (programmatically) focuses a menu item, we need to reflect that focus\n // change back to the key manager. Note that we don't need to unsubscribe here because _focused\n // is internal and we know that it gets completed on destroy.\n this._directDescendantItems.changes\n .pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused))))\n .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n this._directDescendantItems.changes.subscribe((itemsList) => {\n var _a;\n // Move focus to another item, if the active item is removed from the list.\n // We need to debounce the callback, because multiple items might be removed\n // in quick succession.\n const manager = this._keyManager;\n if (this._panelAnimationState === 'enter' && ((_a = manager.activeItem) === null || _a === void 0 ? void 0 : _a._hasFocus())) {\n const items = itemsList.toArray();\n const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\n if (items[index] && !items[index].disabled) {\n manager.setActiveItem(index);\n }\n else {\n manager.setNextItemActive();\n }\n }\n });\n }\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._hovered))));\n }\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item) { }\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item) { }\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n manager.onKeydown(event);\n return;\n }\n // Don't allow the event to propagate if we've already handled it, or it may\n // end up reaching other overlays that were opened earlier (see #22694).\n event.stopPropagation();\n }\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin = 'program') {\n // Wait for `onStable` to ensure iOS VoiceOver screen reader focuses the first item (#24735).\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n let menuPanel = null;\n if (this._directDescendantItems.length) {\n // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n menuPanel = this._directDescendantItems.first._getHostElement().closest('[role=\"menu\"]');\n }\n // If an item in the menuPanel is already focused, avoid overriding the focus.\n if (!menuPanel || !menuPanel.contains(document.activeElement)) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && menuPanel) {\n menuPanel.focus();\n }\n }\n });\n }\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n /**\n * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth) {\n // The elevation starts at the base and increases by one for each level.\n // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n const elevation = Math.min(this._baseElevation + depth, 24);\n const newElevation = `${this._elevationPrefix}${elevation}`;\n const customElevation = Object.keys(this._classList).find(className => {\n return className.startsWith(this._elevationPrefix);\n });\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n }\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX = this.xPosition, posY = this.yPosition) {\n var _a;\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n // @breaking-change 15.0.0 Remove null check for `_changeDetectorRef`.\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n }\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n _onAnimationStart(event) {\n this._isAnimating = true;\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\n }\n }\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n_MatMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatMenuBase, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatMenuBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatMenuBase, inputs: { backdropClass: \"backdropClass\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"], xPosition: \"xPosition\", yPosition: \"yPosition\", overlapTrigger: \"overlapTrigger\", hasBackdrop: \"hasBackdrop\", panelClass: [\"class\", \"panelClass\"], classList: \"classList\" }, outputs: { closed: \"closed\", close: \"close\" }, queries: [{ propertyName: \"lazyContent\", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: \"_allItems\", predicate: MatMenuItem, descendants: true }, { propertyName: \"items\", predicate: MatMenuItem }], viewQueries: [{ propertyName: \"templateRef\", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatMenuBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: true }]\n }], backdropClass: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }], items: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: false }]\n }], lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }], overlapTrigger: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], panelClass: [{\n type: Input,\n args: ['class']\n }], classList: [{\n type: Input\n }], closed: [{\n type: Output\n }], close: [{\n type: Output\n }] } });\n/** @docs-public MatMenu */\nclass MatMenu extends _MatMenuBase {\n constructor(elementRef, ngZone, defaultOptions, changeDetectorRef) {\n super(elementRef, ngZone, defaultOptions, changeDetectorRef);\n this._elevationPrefix = 'mat-elevation-z';\n this._baseElevation = 4;\n }\n}\nMatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatMenu, selector: \"mat-menu\", host: { properties: { \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"attr.aria-describedby\": \"null\" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: [\"matMenu\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n
\\n \\n
\\n \\n
\\n\", styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]::before{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"], directives: [{ type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenu, decorators: [{\n type: Component,\n args: [{ selector: 'mat-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: \"\\n \\n
\\n \\n
\\n \\n
\\n\", styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]::before{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/** @docs-private */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,\n};\n/** Default top padding of the menu panel. */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\nclass _MatMenuTriggerBase {\n constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu, \n // `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.\n // tslint:disable-next-line: lightweight-tokens\n _menuItemInstance, _dir, _focusMonitor, _ngZone) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._focusMonitor = _focusMonitor;\n this._ngZone = _ngZone;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closingActionsSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._menuCloseSubscription = Subscription.EMPTY;\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n this._handleTouchStart = (event) => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\n };\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n this._openedBy = undefined;\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n this.restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n this.menuOpened = new EventEmitter();\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n this.menuClosed = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuClose = this.menuClosed;\n this._scrollStrategy = scrollStrategy;\n this._parentMaterialMenu = parentMenu instanceof _MatMenuBase ? parentMenu : undefined;\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() {\n return this.menu;\n }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() {\n return this._menu;\n }\n set menu(menu) {\n if (menu === this._menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe((reason) => {\n this._destroyMenu(reason);\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {\n this._parentMaterialMenu.closed.emit(reason);\n }\n });\n }\n }\n ngAfterContentInit() {\n this._checkMenu();\n this._handleHover();\n }\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu);\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n if (this._menuOpen) {\n return;\n }\n this._checkMenu();\n const overlayRef = this._createOverlay();\n const overlayConfig = overlayRef.getConfig();\n const positionStrategy = overlayConfig.positionStrategy;\n this._setPosition(positionStrategy);\n overlayConfig.hasBackdrop =\n this.menu.hasBackdrop == null ? !this.triggersSubmenu() : this.menu.hasBackdrop;\n overlayRef.attach(this._getPortal());\n if (this.menu.lazyContent) {\n this.menu.lazyContent.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu();\n if (this.menu instanceof _MatMenuBase) {\n this.menu._startAnimation();\n this.menu._directDescendantItems.changes.pipe(takeUntil(this.menu.close)).subscribe(() => {\n // Re-adjust the position without locking when the amount of items\n // changes so that the overlay is allowed to pick a new optimal position.\n positionStrategy.withLockedPosition(false).reapplyLastPosition();\n positionStrategy.withLockedPosition(true);\n });\n }\n }\n /** Closes the menu. */\n closeMenu() {\n this.menu.close.emit();\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n else {\n this._element.nativeElement.focus(options);\n }\n }\n /**\n * Updates the position of the menu to ensure that it fits all options within the viewport.\n */\n updatePosition() {\n var _a;\n (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.updatePosition();\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n const menu = this.menu;\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n if (menu instanceof _MatMenuBase) {\n menu._resetAnimation();\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone\n .pipe(filter(event => event.toState === 'void'), take(1), \n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached))\n .subscribe({\n next: () => menu.lazyContent.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false),\n });\n }\n else {\n this._setIsMenuOpen(false);\n }\n }\n else {\n this._setIsMenuOpen(false);\n if (menu.lazyContent) {\n menu.lazyContent.detach();\n }\n }\n }\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n _initMenu() {\n this.menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n this.menu.direction = this.dir;\n this._setMenuElevation();\n this.menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n }\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n _setMenuElevation() {\n if (this.menu.setElevation) {\n let depth = 0;\n let parentMenu = this.menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n this.menu.setElevation(depth);\n }\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._setHighlighted(isOpen);\n }\n }\n /**\n * This method checks that a valid instance of MatMenu has been passed into\n * matMenuTriggerFor. If not, an exception is thrown.\n */\n _checkMenu() {\n if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuMissingError();\n }\n }\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n _createOverlay() {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig();\n this._subscribeToPositions(config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._overlay\n .position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withGrowAfterOpen()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: this.menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir,\n });\n }\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n _subscribeToPositions(position) {\n if (this.menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n // @breaking-change 15.0.0 Remove null check for `ngZone`.\n // `positionChanges` fires outside of the `ngZone` and `setPositionClasses` might be\n // updating something in the view so we need to bring it back in.\n if (this._ngZone) {\n this._ngZone.run(() => this.menu.setPositionClasses(posX, posY));\n }\n else {\n this.menu.setPositionClasses(posX, posY);\n }\n });\n }\n }\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n _setPosition(positionStrategy) {\n let [originX, originFallbackX] = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;\n }\n else if (!this.menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n positionStrategy.withPositions([\n { originX, originY, overlayX, overlayY, offsetY },\n { originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n ]);\n }\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const backdrop = this._overlayRef.backdropClick();\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu\n ? this._parentMaterialMenu._hovered().pipe(filter(active => active !== this._menuItemInstance), filter(() => this._menuOpen))\n : of();\n return merge(backdrop, parentClose, hover, detachments);\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : undefined;\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() &&\n ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n }\n else {\n this.toggleMenu();\n }\n }\n /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu() || !this._parentMaterialMenu) {\n return;\n }\n this._hoverSubscription = this._parentMaterialMenu\n ._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(filter(active => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler))\n .subscribe(() => {\n this._openedBy = 'mouse';\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof _MatMenuBase && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone\n .pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered()))\n .subscribe(() => this.openMenu());\n }\n else {\n this.openMenu();\n }\n });\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal() {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== this.menu.templateRef) {\n this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n}\n_MatMenuTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatMenuTriggerBase, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: MAT_MENU_SCROLL_STRATEGY }, { token: MAT_MENU_PANEL, optional: true }, { token: MatMenuItem, optional: true, self: true }, { token: i3$1.Directionality, optional: true }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n_MatMenuTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatMenuTriggerBase, inputs: { _deprecatedMatMenuTriggerFor: [\"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"], menu: [\"matMenuTriggerFor\", \"menu\"], menuData: [\"matMenuTriggerData\", \"menuData\"], restoreFocus: [\"matMenuTriggerRestoreFocus\", \"restoreFocus\"] }, outputs: { menuOpened: \"menuOpened\", onMenuOpen: \"onMenuOpen\", menuClosed: \"menuClosed\", onMenuClose: \"onMenuClose\" }, host: { attributes: { \"aria-haspopup\": \"true\" }, listeners: { \"click\": \"_handleClick($event)\", \"mousedown\": \"_handleMousedown($event)\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"attr.aria-expanded\": \"menuOpen || null\", \"attr.aria-controls\": \"menuOpen ? menu.panelId : null\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatMenuTriggerBase, decorators: [{\n type: Directive,\n args: [{\n host: {\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'menuOpen || null',\n '[attr.aria-controls]': 'menuOpen ? menu.panelId : null',\n '(click)': '_handleClick($event)',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_SCROLL_STRATEGY]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }, { type: MatMenuItem, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: i3$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i1.FocusMonitor }, { type: i0.NgZone }];\n }, propDecorators: { _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }], menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }], menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\n }], restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }], menuOpened: [{\n type: Output\n }], onMenuOpen: [{\n type: Output\n }], menuClosed: [{\n type: Output\n }], onMenuClose: [{\n type: Output\n }] } });\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTrigger extends _MatMenuTriggerBase {\n}\nMatMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatMenuTrigger, selector: \"[mat-menu-trigger-for], [matMenuTriggerFor]\", host: { classAttribute: \"mat-menu-trigger\" }, exportAs: [\"matMenuTrigger\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'class': 'mat-menu-trigger',\n },\n exportAs: 'matMenuTrigger',\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatMenuModule {\n}\nMatMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuModule, declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent], imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule], exports: [CdkScrollableModule,\n MatCommonModule,\n MatMenu,\n MatMenuItem,\n MatMenuTrigger,\n MatMenuContent] });\nMatMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[CommonModule, MatCommonModule, MatRippleModule, OverlayModule], CdkScrollableModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule],\n exports: [\n CdkScrollableModule,\n MatCommonModule,\n MatMenu,\n MatMenuItem,\n MatMenuTrigger,\n MatMenuContent,\n ],\n declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, _MatMenuBase, _MatMenuContentBase, _MatMenuTriggerBase, fadeInItems, matMenuAnimations, transformMenu };\n","import * as i1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport * as i4 from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport * as i7 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Input, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport * as i2 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport * as i6 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i3 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subject } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\nimport * as i5 from '@angular/cdk/bidi';\nimport { trigger, state, style, transition, animate, keyframes } from '@angular/animations';\n\n/** Time in ms to throttle repositioning after scroll events. */\nconst SCROLL_THROTTLE_MS = 20;\n/**\n * CSS class that will be attached to the overlay panel.\n * @deprecated\n * @breaking-change 13.0.0 remove this variable\n */\nconst TOOLTIP_PANEL_CLASS = 'mat-tooltip-panel';\nconst PANEL_CLASS = 'tooltip-panel';\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * Time between the user putting the pointer on a tooltip\n * trigger and the long press event being fired.\n */\nconst LONGPRESS_DELAY = 500;\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nfunction getMatTooltipInvalidPositionError(position) {\n return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nconst MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('mat-tooltip-scroll-strategy');\n/** @docs-private */\nfunction MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n/** @docs-private */\nconst MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n/** Injection token to be used to override the default options for `matTooltip`. */\nconst MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken('mat-tooltip-default-options', {\n providedIn: 'root',\n factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY() {\n return {\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500,\n };\n}\nclass _MatTooltipBase {\n constructor(_overlay, _elementRef, _scrollDispatcher, _viewContainerRef, _ngZone, _platform, _ariaDescriber, _focusMonitor, scrollStrategy, _dir, _defaultOptions, _document) {\n this._overlay = _overlay;\n this._elementRef = _elementRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._viewContainerRef = _viewContainerRef;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._ariaDescriber = _ariaDescriber;\n this._focusMonitor = _focusMonitor;\n this._dir = _dir;\n this._defaultOptions = _defaultOptions;\n this._position = 'below';\n this._disabled = false;\n this._viewInitialized = false;\n this._pointerExitEventsInitialized = false;\n this._viewportMargin = 8;\n this._cssClassPrefix = 'mat';\n this._showDelay = this._defaultOptions.showDelay;\n this._hideDelay = this._defaultOptions.hideDelay;\n /**\n * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n * uses a long press gesture to show and hide, however it can conflict with the native browser\n * gestures. To work around the conflict, Angular Material disables native gestures on the\n * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n * elements). The different values for this option configure the touch event handling as follows:\n * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n * browser gestures on particular elements. In particular, it allows text selection on inputs\n * and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n * - `on` - Enables touch gestures for all elements and disables native\n * browser gestures with no exceptions.\n * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n * showing on touch devices.\n */\n this.touchGestures = 'auto';\n this._message = '';\n /** Manually-bound passive event listeners. */\n this._passiveListeners = [];\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n this._scrollStrategy = scrollStrategy;\n this._document = _document;\n if (_defaultOptions) {\n if (_defaultOptions.position) {\n this.position = _defaultOptions.position;\n }\n if (_defaultOptions.touchGestures) {\n this.touchGestures = _defaultOptions.touchGestures;\n }\n }\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n }\n });\n }\n /** Allows the user to define the position of the tooltip relative to the parent element */\n get position() {\n return this._position;\n }\n set position(value) {\n var _a;\n if (value !== this._position) {\n this._position = value;\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n (_a = this._tooltipInstance) === null || _a === void 0 ? void 0 : _a.show(0);\n this._overlayRef.updatePosition();\n }\n }\n }\n /** Disables the display of the tooltip. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n // If tooltip is disabled, hide immediately.\n if (this._disabled) {\n this.hide(0);\n }\n else {\n this._setupPointerEnterEventsIfNeeded();\n }\n }\n /** The default delay in ms before showing the tooltip after show is called */\n get showDelay() {\n return this._showDelay;\n }\n set showDelay(value) {\n this._showDelay = coerceNumberProperty(value);\n }\n /** The default delay in ms before hiding the tooltip after hide is called */\n get hideDelay() {\n return this._hideDelay;\n }\n set hideDelay(value) {\n this._hideDelay = coerceNumberProperty(value);\n if (this._tooltipInstance) {\n this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;\n }\n }\n /** The message to be displayed in the tooltip */\n get message() {\n return this._message;\n }\n set message(value) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this._message, 'tooltip');\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n // away the string-conversion: https://github.com/angular/components/issues/20684\n this._message = value != null ? String(value).trim() : '';\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n }\n else {\n this._setupPointerEnterEventsIfNeeded();\n this._updateTooltipMessage();\n this._ngZone.runOutsideAngular(() => {\n // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n Promise.resolve().then(() => {\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n });\n });\n }\n }\n /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n get tooltipClass() {\n return this._tooltipClass;\n }\n set tooltipClass(value) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n }\n ngAfterViewInit() {\n // This needs to happen after view init so the initial values for all inputs have been set.\n this._viewInitialized = true;\n this._setupPointerEnterEventsIfNeeded();\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntil(this._destroyed))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n }\n else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n const nativeElement = this._elementRef.nativeElement;\n clearTimeout(this._touchstartTimeout);\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._tooltipInstance = null;\n }\n // Clean up the event listeners set in the constructor\n this._passiveListeners.forEach(([event, listener]) => {\n nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n });\n this._passiveListeners.length = 0;\n this._destroyed.next();\n this._destroyed.complete();\n this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n show(delay = this.showDelay) {\n if (this.disabled ||\n !this.message ||\n (this._isTooltipVisible() &&\n !this._tooltipInstance._showTimeoutId &&\n !this._tooltipInstance._hideTimeoutId)) {\n return;\n }\n const overlayRef = this._createOverlay();\n this._detach();\n this._portal =\n this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n const instance = (this._tooltipInstance = overlayRef.attach(this._portal).instance);\n instance._triggerElement = this._elementRef.nativeElement;\n instance._mouseLeaveHideDelay = this._hideDelay;\n instance\n .afterHidden()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n instance.show(delay);\n }\n /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n hide(delay = this.hideDelay) {\n if (this._tooltipInstance) {\n this._tooltipInstance.hide(delay);\n }\n }\n /** Shows/hides the tooltip */\n toggle() {\n this._isTooltipVisible() ? this.hide() : this.show();\n }\n /** Returns true if the tooltip is currently visible to the user */\n _isTooltipVisible() {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n }\n /** Create the overlay config and position strategy */\n _createOverlay() {\n var _a;\n if (this._overlayRef) {\n return this._overlayRef;\n }\n const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n .withFlexibleDimensions(false)\n .withViewportMargin(this._viewportMargin)\n .withScrollableContainers(scrollableAncestors);\n strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n this._updateCurrentPositionClass(change.connectionPair);\n if (this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide(0));\n }\n }\n });\n this._overlayRef = this._overlay.create({\n direction: this._dir,\n positionStrategy: strategy,\n panelClass: `${this._cssClassPrefix}-${PANEL_CLASS}`,\n scrollStrategy: this._scrollStrategy(),\n });\n this._updatePosition(this._overlayRef);\n this._overlayRef\n .detachments()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => { var _a; return (_a = this._tooltipInstance) === null || _a === void 0 ? void 0 : _a._handleBodyInteraction(); });\n this._overlayRef\n .keydownEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(event => {\n if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n }\n });\n if ((_a = this._defaultOptions) === null || _a === void 0 ? void 0 : _a.disableTooltipInteractivity) {\n this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);\n }\n return this._overlayRef;\n }\n /** Detaches the currently-attached tooltip. */\n _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n this._tooltipInstance = null;\n }\n /** Updates the position of the current tooltip. */\n _updatePosition(overlayRef) {\n const position = overlayRef.getConfig().positionStrategy;\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n position.withPositions([\n this._addOffset(Object.assign(Object.assign({}, origin.main), overlay.main)),\n this._addOffset(Object.assign(Object.assign({}, origin.fallback), overlay.fallback)),\n ]);\n }\n /** Adds the configured offset to a position. Used as a hook for child classes. */\n _addOffset(position) {\n return position;\n }\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n */\n _getOrigin() {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let originPosition;\n if (position == 'above' || position == 'below') {\n originPosition = { originX: 'center', originY: position == 'above' ? 'top' : 'bottom' };\n }\n else if (position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n originPosition = { originX: 'start', originY: 'center' };\n }\n else if (position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n originPosition = { originX: 'end', originY: 'center' };\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n const { x, y } = this._invertPosition(originPosition.originX, originPosition.originY);\n return {\n main: originPosition,\n fallback: { originX: x, originY: y },\n };\n }\n /** Returns the overlay position and a fallback position based on the user's preference */\n _getOverlayPosition() {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let overlayPosition;\n if (position == 'above') {\n overlayPosition = { overlayX: 'center', overlayY: 'bottom' };\n }\n else if (position == 'below') {\n overlayPosition = { overlayX: 'center', overlayY: 'top' };\n }\n else if (position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n overlayPosition = { overlayX: 'end', overlayY: 'center' };\n }\n else if (position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n overlayPosition = { overlayX: 'start', overlayY: 'center' };\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n const { x, y } = this._invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);\n return {\n main: overlayPosition,\n fallback: { overlayX: x, overlayY: y },\n };\n }\n /** Updates the tooltip message and repositions the overlay according to the new message length */\n _updateTooltipMessage() {\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {\n if (this._tooltipInstance) {\n this._overlayRef.updatePosition();\n }\n });\n }\n }\n /** Updates the tooltip class */\n _setTooltipClass(tooltipClass) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass = tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n }\n /** Inverts an overlay position. */\n _invertPosition(x, y) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n }\n else if (y === 'bottom') {\n y = 'top';\n }\n }\n else {\n if (x === 'end') {\n x = 'start';\n }\n else if (x === 'start') {\n x = 'end';\n }\n }\n return { x, y };\n }\n /** Updates the class on the overlay panel based on the current position of the tooltip. */\n _updateCurrentPositionClass(connectionPair) {\n const { overlayY, originX, originY } = connectionPair;\n let newPosition;\n // If the overlay is in the middle along the Y axis,\n // it means that it's either before or after.\n if (overlayY === 'center') {\n // Note that since this information is used for styling, we want to\n // resolve `start` and `end` to their real values, otherwise consumers\n // would have to remember to do it themselves on each consumption.\n if (this._dir && this._dir.value === 'rtl') {\n newPosition = originX === 'end' ? 'left' : 'right';\n }\n else {\n newPosition = originX === 'start' ? 'left' : 'right';\n }\n }\n else {\n newPosition = overlayY === 'bottom' && originY === 'top' ? 'above' : 'below';\n }\n if (newPosition !== this._currentPosition) {\n const overlayRef = this._overlayRef;\n if (overlayRef) {\n const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;\n overlayRef.removePanelClass(classPrefix + this._currentPosition);\n overlayRef.addPanelClass(classPrefix + newPosition);\n }\n this._currentPosition = newPosition;\n }\n }\n /** Binds the pointer events to the tooltip trigger. */\n _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._disabled ||\n !this.message ||\n !this._viewInitialized ||\n this._passiveListeners.length) {\n return;\n }\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners.push([\n 'mouseenter',\n () => {\n this._setupPointerExitEventsIfNeeded();\n this.show();\n },\n ]);\n }\n else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n this._passiveListeners.push([\n 'touchstart',\n () => {\n // Note that it's important that we don't `preventDefault` here,\n // because it can prevent click events from firing on the element.\n this._setupPointerExitEventsIfNeeded();\n clearTimeout(this._touchstartTimeout);\n this._touchstartTimeout = setTimeout(() => this.show(), LONGPRESS_DELAY);\n },\n ]);\n }\n this._addListeners(this._passiveListeners);\n }\n _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n const exitListeners = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push([\n 'mouseleave',\n event => {\n var _a;\n const newTarget = event.relatedTarget;\n if (!newTarget || !((_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.overlayElement.contains(newTarget))) {\n this.hide();\n }\n },\n ], ['wheel', event => this._wheelListener(event)]);\n }\n else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = () => {\n clearTimeout(this._touchstartTimeout);\n this.hide(this._defaultOptions.touchendHideDelay);\n };\n exitListeners.push(['touchend', touchendListener], ['touchcancel', touchendListener]);\n }\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n _addListeners(listeners) {\n listeners.forEach(([event, listener]) => {\n this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n });\n }\n _platformSupportsMouseEvents() {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n /** Listener for the `wheel` event on the element. */\n _wheelListener(event) {\n if (this._isTooltipVisible()) {\n const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n // won't fire if the user scrolls away using the wheel without moving their cursor. We\n // work around it by finding the element under the user's cursor and closing the tooltip\n // if it's not the trigger.\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n }\n /** Disables the native browser gestures, based on how the tooltip has been configured. */\n _disableNativeGesturesIfNecessary() {\n const gestures = this.touchGestures;\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n // If gestures are set to `auto`, we don't disable text selection on inputs and\n // textareas, because it prevents the user from typing into them on iOS Safari.\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect =\n style.msUserSelect =\n style.webkitUserSelect =\n style.MozUserSelect =\n 'none';\n }\n // If we have `auto` gestures and the element uses native HTML dragging,\n // we don't set `-webkit-user-drag` because it prevents the native behavior.\n if (gestures === 'on' || !element.draggable) {\n style.webkitUserDrag = 'none';\n }\n style.touchAction = 'none';\n style.webkitTapHighlightColor = 'transparent';\n }\n }\n}\n_MatTooltipBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTooltipBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\n_MatTooltipBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatTooltipBase, inputs: { position: [\"matTooltipPosition\", \"position\"], disabled: [\"matTooltipDisabled\", \"disabled\"], showDelay: [\"matTooltipShowDelay\", \"showDelay\"], hideDelay: [\"matTooltipHideDelay\", \"hideDelay\"], touchGestures: [\"matTooltipTouchGestures\", \"touchGestures\"], message: [\"matTooltip\", \"message\"], tooltipClass: [\"matTooltipClass\", \"tooltipClass\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTooltipBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i3.Platform }, { type: i4.AriaDescriber }, { type: i4.FocusMonitor }, { type: undefined }, { type: i5.Directionality }, { type: undefined }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { position: [{\n type: Input,\n args: ['matTooltipPosition']\n }], disabled: [{\n type: Input,\n args: ['matTooltipDisabled']\n }], showDelay: [{\n type: Input,\n args: ['matTooltipShowDelay']\n }], hideDelay: [{\n type: Input,\n args: ['matTooltipHideDelay']\n }], touchGestures: [{\n type: Input,\n args: ['matTooltipTouchGestures']\n }], message: [{\n type: Input,\n args: ['matTooltip']\n }], tooltipClass: [{\n type: Input,\n args: ['matTooltipClass']\n }] } });\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\nclass MatTooltip extends _MatTooltipBase {\n constructor(overlay, elementRef, scrollDispatcher, viewContainerRef, ngZone, platform, ariaDescriber, focusMonitor, scrollStrategy, dir, defaultOptions, _document) {\n super(overlay, elementRef, scrollDispatcher, viewContainerRef, ngZone, platform, ariaDescriber, focusMonitor, scrollStrategy, dir, defaultOptions, _document);\n this._tooltipComponent = TooltipComponent;\n }\n}\nMatTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTooltip, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i3.Platform }, { token: i4.AriaDescriber }, { token: i4.FocusMonitor }, { token: MAT_TOOLTIP_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }, { token: MAT_TOOLTIP_DEFAULT_OPTIONS, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nMatTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTooltip, selector: \"[matTooltip]\", host: { classAttribute: \"mat-tooltip-trigger\" }, exportAs: [\"matTooltip\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTooltip, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTooltip]',\n exportAs: 'matTooltip',\n host: {\n 'class': 'mat-tooltip-trigger',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i3.Platform }, { type: i4.AriaDescriber }, { type: i4.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TOOLTIP_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_TOOLTIP_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nclass _TooltipComponentBase {\n constructor(_changeDetectorRef, animationMode) {\n this._changeDetectorRef = _changeDetectorRef;\n /** Property watched by the animation framework to show or hide the tooltip */\n this._visibility = 'initial';\n /** Whether interactions on the page should close the tooltip */\n this._closeOnInteraction = false;\n /** Whether the tooltip is currently visible. */\n this._isVisible = false;\n /** Subject for notifying that the tooltip has been hidden from the view */\n this._onHide = new Subject();\n this._animationsDisabled = animationMode === 'NoopAnimations';\n }\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay) {\n // Cancel the delayed hide if it is scheduled\n clearTimeout(this._hideTimeoutId);\n this._showTimeoutId = setTimeout(() => {\n this._toggleVisibility(true);\n this._showTimeoutId = undefined;\n }, delay);\n }\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay) {\n // Cancel the delayed show if it is scheduled\n clearTimeout(this._showTimeoutId);\n this._hideTimeoutId = setTimeout(() => {\n this._toggleVisibility(false);\n this._hideTimeoutId = undefined;\n }, delay);\n }\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden() {\n return this._onHide;\n }\n /** Whether the tooltip is being displayed. */\n isVisible() {\n return this._isVisible;\n }\n ngOnDestroy() {\n clearTimeout(this._showTimeoutId);\n clearTimeout(this._hideTimeoutId);\n this._onHide.complete();\n this._triggerElement = null;\n }\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction() {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck() {\n this._changeDetectorRef.markForCheck();\n }\n _handleMouseLeave({ relatedTarget }) {\n if (!relatedTarget || !this._triggerElement.contains(relatedTarget)) {\n this.hide(this._mouseLeaveHideDelay);\n }\n }\n /**\n * Callback for when the timeout in this.show() gets completed.\n * This method is only needed by the mdc-tooltip, and so it is only implemented\n * in the mdc-tooltip, not here.\n */\n _onShow() { }\n /** Event listener dispatched when an animation on the tooltip finishes. */\n _handleAnimationEnd({ animationName }) {\n if (animationName === this._showAnimation || animationName === this._hideAnimation) {\n this._finalizeAnimation(animationName === this._showAnimation);\n }\n }\n /** Handles the cleanup after an animation has finished. */\n _finalizeAnimation(toVisible) {\n if (toVisible) {\n this._closeOnInteraction = true;\n }\n else if (!this.isVisible()) {\n this._onHide.next();\n }\n }\n /** Toggles the visibility of the tooltip element. */\n _toggleVisibility(isVisible) {\n // We set the classes directly here ourselves so that toggling the tooltip state\n // isn't bound by change detection. This allows us to hide it even if the\n // view ref has been detached from the CD tree.\n const tooltip = this._tooltip.nativeElement;\n const showClass = this._showAnimation;\n const hideClass = this._hideAnimation;\n tooltip.classList.remove(isVisible ? hideClass : showClass);\n tooltip.classList.add(isVisible ? showClass : hideClass);\n this._isVisible = isVisible;\n // It's common for internal apps to disable animations using `* { animation: none !important }`\n // which can break the opening sequence. Try to detect such cases and work around them.\n if (isVisible && !this._animationsDisabled && typeof getComputedStyle === 'function') {\n const styles = getComputedStyle(tooltip);\n // Use `getPropertyValue` to avoid issues with property renaming.\n if (styles.getPropertyValue('animation-duration') === '0s' ||\n styles.getPropertyValue('animation-name') === 'none') {\n this._animationsDisabled = true;\n }\n }\n if (isVisible) {\n this._onShow();\n }\n if (this._animationsDisabled) {\n tooltip.classList.add('_mat-animation-noopable');\n this._finalizeAnimation(isVisible);\n }\n }\n}\n_TooltipComponentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _TooltipComponentBase, deps: [{ token: i0.ChangeDetectorRef }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_TooltipComponentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _TooltipComponentBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _TooltipComponentBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n } });\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\nclass TooltipComponent extends _TooltipComponentBase {\n constructor(changeDetectorRef, _breakpointObserver, animationMode) {\n super(changeDetectorRef, animationMode);\n this._breakpointObserver = _breakpointObserver;\n /** Stream that emits whether the user has a handset-sized display. */\n this._isHandset = this._breakpointObserver.observe(Breakpoints.Handset);\n this._showAnimation = 'mat-tooltip-show';\n this._hideAnimation = 'mat-tooltip-hide';\n }\n}\nTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i6.BreakpointObserver }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: TooltipComponent, selector: \"mat-tooltip-component\", host: { attributes: { \"aria-hidden\": \"true\" }, listeners: { \"mouseleave\": \"_handleMouseLeave($event)\" }, properties: { \"style.zoom\": \"isVisible() ? 1 : null\" } }, viewQueries: [{ propertyName: \"_tooltip\", first: true, predicate: [\"tooltip\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"
{{message}}
\\n\", styles: [\".mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis;transform:scale(0)}.mat-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}.mat-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-tooltip-show{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(0.99)}100%{opacity:1;transform:scale(1)}}@keyframes mat-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1)}}.mat-tooltip-show{animation:mat-tooltip-show 200ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-tooltip-hide{animation:mat-tooltip-hide 100ms cubic-bezier(0, 0, 0.2, 1) forwards}\\n\"], directives: [{ type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], pipes: { \"async\": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TooltipComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tooltip-component', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n // Forces the element to have a layout in IE and Edge. This fixes issues where the element\n // won't be rendered if the animations are disabled or there is no web animations polyfill.\n '[style.zoom]': 'isVisible() ? 1 : null',\n '(mouseleave)': '_handleMouseLeave($event)',\n 'aria-hidden': 'true',\n }, template: \"
{{message}}
\\n\", styles: [\".mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis;transform:scale(0)}.mat-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}.mat-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-tooltip-show{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(0.99)}100%{opacity:1;transform:scale(1)}}@keyframes mat-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1)}}.mat-tooltip-show{animation:mat-tooltip-show 200ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-tooltip-hide{animation:mat-tooltip-hide 100ms cubic-bezier(0, 0, 0.2, 1) forwards}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: i6.BreakpointObserver }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { _tooltip: [{\n type: ViewChild,\n args: ['tooltip', {\n // Use a static query here since we interact directly with\n // the DOM which can happen before `ngAfterViewInit`.\n static: true,\n }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatTooltipModule {\n}\nMatTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTooltipModule, declarations: [MatTooltip, TooltipComponent], imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule], exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule] });\nMatTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTooltipModule, providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[A11yModule, CommonModule, OverlayModule, MatCommonModule], MatCommonModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTooltipModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule],\n exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],\n declarations: [MatTooltip, TooltipComponent],\n providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by MatTooltip.\n * @docs-private\n */\nconst matTooltipAnimations = {\n /** Animation that transitions a tooltip in and out. */\n tooltipState: trigger('state', [\n state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),\n state('visible', style({ transform: 'scale(1)' })),\n transition('* => visible', animate('200ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n style({ opacity: 0.5, transform: 'scale(0.99)', offset: 0.5 }),\n style({ opacity: 1, transform: 'scale(1)', offset: 1 }),\n ]))),\n transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 }))),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_TOOLTIP_DEFAULT_OPTIONS, MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, MatTooltip, MatTooltipModule, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, TooltipComponent, _MatTooltipBase, _TooltipComponentBase, getMatTooltipInvalidPositionError, matTooltipAnimations };\n","import * as i6 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Optional, SkipSelf, InjectionToken, EventEmitter, Directive, Input, Output, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, NgModule } from '@angular/core';\nimport * as i4 from '@angular/material/core';\nimport { mixinDisabled, mixinInitialized, MatCommonModule } from '@angular/material/core';\nimport * as i5 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as i3 from '@angular/material/select';\nimport { MatSelectModule } from '@angular/material/select';\nimport * as i7 from '@angular/material/tooltip';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject } from 'rxjs';\nimport * as i2 from '@angular/material/form-field';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\nclass MatPaginatorIntl {\n constructor() {\n /**\n * Stream to emit from when labels are changed. Use this to notify components when the labels have\n * changed after initialization.\n */\n this.changes = new Subject();\n /** A label for the page size selector. */\n this.itemsPerPageLabel = 'Items per page:';\n /** A label for the button that increments the current page. */\n this.nextPageLabel = 'Next page';\n /** A label for the button that decrements the current page. */\n this.previousPageLabel = 'Previous page';\n /** A label for the button that moves to the first page. */\n this.firstPageLabel = 'First page';\n /** A label for the button that moves to the last page. */\n this.lastPageLabel = 'Last page';\n /** A label for the range of items within the current page and the length of the whole list. */\n this.getRangeLabel = (page, pageSize, length) => {\n if (length == 0 || pageSize == 0) {\n return `0 of ${length}`;\n }\n length = Math.max(length, 0);\n const startIndex = page * pageSize;\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n return `${startIndex + 1} – ${endIndex} of ${length}`;\n };\n }\n}\nMatPaginatorIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMatPaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorIntl, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorIntl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** @docs-private */\nfunction MAT_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl) {\n return parentIntl || new MatPaginatorIntl();\n}\n/** @docs-private */\nconst MAT_PAGINATOR_INTL_PROVIDER = {\n // If there is already an MatPaginatorIntl available, use that. Otherwise, provide a new one.\n provide: MatPaginatorIntl,\n deps: [[new Optional(), new SkipSelf(), MatPaginatorIntl]],\n useFactory: MAT_PAGINATOR_INTL_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 50;\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nclass PageEvent {\n}\n/** Injection token that can be used to provide the default options for the paginator module. */\nconst MAT_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken('MAT_PAGINATOR_DEFAULT_OPTIONS');\n// Boilerplate for applying mixins to _MatPaginatorBase.\n/** @docs-private */\nconst _MatPaginatorMixinBase = mixinDisabled(mixinInitialized(class {\n}));\n/**\n * Base class with all of the `MatPaginator` functionality.\n * @docs-private\n */\nclass _MatPaginatorBase extends _MatPaginatorMixinBase {\n constructor(_intl, _changeDetectorRef, defaults) {\n super();\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._pageIndex = 0;\n this._length = 0;\n this._pageSizeOptions = [];\n this._hidePageSize = false;\n this._showFirstLastButtons = false;\n /** Event emitted when the paginator changes the page size or page index. */\n this.page = new EventEmitter();\n this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck());\n if (defaults) {\n const { pageSize, pageSizeOptions, hidePageSize, showFirstLastButtons } = defaults;\n if (pageSize != null) {\n this._pageSize = pageSize;\n }\n if (pageSizeOptions != null) {\n this._pageSizeOptions = pageSizeOptions;\n }\n if (hidePageSize != null) {\n this._hidePageSize = hidePageSize;\n }\n if (showFirstLastButtons != null) {\n this._showFirstLastButtons = showFirstLastButtons;\n }\n }\n }\n /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n get pageIndex() {\n return this._pageIndex;\n }\n set pageIndex(value) {\n this._pageIndex = Math.max(coerceNumberProperty(value), 0);\n this._changeDetectorRef.markForCheck();\n }\n /** The length of the total number of items that are being paginated. Defaulted to 0. */\n get length() {\n return this._length;\n }\n set length(value) {\n this._length = coerceNumberProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n /** Number of items to display on a page. By default set to 50. */\n get pageSize() {\n return this._pageSize;\n }\n set pageSize(value) {\n this._pageSize = Math.max(coerceNumberProperty(value), 0);\n this._updateDisplayedPageSizeOptions();\n }\n /** The set of provided page size options to display to the user. */\n get pageSizeOptions() {\n return this._pageSizeOptions;\n }\n set pageSizeOptions(value) {\n this._pageSizeOptions = (value || []).map(p => coerceNumberProperty(p));\n this._updateDisplayedPageSizeOptions();\n }\n /** Whether to hide the page size selection UI from the user. */\n get hidePageSize() {\n return this._hidePageSize;\n }\n set hidePageSize(value) {\n this._hidePageSize = coerceBooleanProperty(value);\n }\n /** Whether to show the first/last buttons UI to the user. */\n get showFirstLastButtons() {\n return this._showFirstLastButtons;\n }\n set showFirstLastButtons(value) {\n this._showFirstLastButtons = coerceBooleanProperty(value);\n }\n ngOnInit() {\n this._initialized = true;\n this._updateDisplayedPageSizeOptions();\n this._markInitialized();\n }\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n }\n /** Advances to the next page if it exists. */\n nextPage() {\n if (!this.hasNextPage()) {\n return;\n }\n const previousPageIndex = this.pageIndex;\n this.pageIndex = this.pageIndex + 1;\n this._emitPageEvent(previousPageIndex);\n }\n /** Move back to the previous page if it exists. */\n previousPage() {\n if (!this.hasPreviousPage()) {\n return;\n }\n const previousPageIndex = this.pageIndex;\n this.pageIndex = this.pageIndex - 1;\n this._emitPageEvent(previousPageIndex);\n }\n /** Move to the first page if not already there. */\n firstPage() {\n // hasPreviousPage being false implies at the start\n if (!this.hasPreviousPage()) {\n return;\n }\n const previousPageIndex = this.pageIndex;\n this.pageIndex = 0;\n this._emitPageEvent(previousPageIndex);\n }\n /** Move to the last page if not already there. */\n lastPage() {\n // hasNextPage being false implies at the end\n if (!this.hasNextPage()) {\n return;\n }\n const previousPageIndex = this.pageIndex;\n this.pageIndex = this.getNumberOfPages() - 1;\n this._emitPageEvent(previousPageIndex);\n }\n /** Whether there is a previous page. */\n hasPreviousPage() {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n /** Whether there is a next page. */\n hasNextPage() {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n /** Calculate the number of pages */\n getNumberOfPages() {\n if (!this.pageSize) {\n return 0;\n }\n return Math.ceil(this.length / this.pageSize);\n }\n /**\n * Changes the page size so that the first item displayed on the page will still be\n * displayed using the new page size.\n *\n * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n * switching so that the page size is 5 will set the third page as the current page so\n * that the 10th item will still be displayed.\n */\n _changePageSize(pageSize) {\n // Current page needs to be updated to reflect the new page size. Navigate to the page\n // containing the previous page's first item.\n const startIndex = this.pageIndex * this.pageSize;\n const previousPageIndex = this.pageIndex;\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n this.pageSize = pageSize;\n this._emitPageEvent(previousPageIndex);\n }\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n _updateDisplayedPageSizeOptions() {\n if (!this._initialized) {\n return;\n }\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.pageSize) {\n this._pageSize =\n this.pageSizeOptions.length != 0 ? this.pageSizeOptions[0] : DEFAULT_PAGE_SIZE;\n }\n this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\n this._displayedPageSizeOptions.push(this.pageSize);\n }\n // Sort the numbers using a number-specific sort function.\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._changeDetectorRef.markForCheck();\n }\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n _emitPageEvent(previousPageIndex) {\n this.page.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n_MatPaginatorBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatPaginatorBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\n_MatPaginatorBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatPaginatorBase, inputs: { color: \"color\", pageIndex: \"pageIndex\", length: \"length\", pageSize: \"pageSize\", pageSizeOptions: \"pageSizeOptions\", hidePageSize: \"hidePageSize\", showFirstLastButtons: \"showFirstLastButtons\" }, outputs: { page: \"page\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatPaginatorBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: MatPaginatorIntl }, { type: i0.ChangeDetectorRef }, { type: undefined }]; }, propDecorators: { color: [{\n type: Input\n }], pageIndex: [{\n type: Input\n }], length: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], pageSizeOptions: [{\n type: Input\n }], hidePageSize: [{\n type: Input\n }], showFirstLastButtons: [{\n type: Input\n }], page: [{\n type: Output\n }] } });\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\nclass MatPaginator extends _MatPaginatorBase {\n constructor(intl, changeDetectorRef, defaults) {\n super(intl, changeDetectorRef, defaults);\n if (defaults && defaults.formFieldAppearance != null) {\n this._formFieldAppearance = defaults.formFieldAppearance;\n }\n }\n}\nMatPaginator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginator, deps: [{ token: MatPaginatorIntl }, { token: i0.ChangeDetectorRef }, { token: MAT_PAGINATOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatPaginator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatPaginator, selector: \"mat-paginator\", inputs: { disabled: \"disabled\" }, host: { attributes: { \"role\": \"group\" }, classAttribute: \"mat-paginator\" }, exportAs: [\"matPaginator\"], usesInheritance: true, ngImport: i0, template: \"
\\n
\\n
\\n
\\n {{_intl.itemsPerPageLabel}}\\n
\\n\\n 1\\\"\\n [appearance]=\\\"_formFieldAppearance!\\\"\\n [color]=\\\"color\\\"\\n class=\\\"mat-paginator-page-size-select\\\">\\n \\n \\n {{pageSizeOption}}\\n \\n \\n \\n\\n {{pageSize}}
\\n
\\n\\n
\\n
\\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\\n
\\n\\n \\n \\n \\n \\n
\\n
\\n\\n\", styles: [\".mat-paginator{display:block}.mat-paginator-outer-container{display:flex}.mat-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap-reverse;width:100%}.mat-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-paginator-page-size{margin-right:0;margin-left:8px}.mat-paginator-page-size-label{margin:0 4px}.mat-paginator-page-size-select{margin:6px 4px 0 4px;width:56px}.mat-paginator-page-size-select.mat-form-field-appearance-outline{width:64px}.mat-paginator-page-size-select.mat-form-field-appearance-fill{width:64px}.mat-paginator-range-label{margin:0 32px 0 24px}.mat-paginator-range-actions{display:flex;align-items:center}.mat-paginator-icon{width:28px;fill:currentColor}[dir=rtl] .mat-paginator-icon{transform:rotate(180deg)}.cdk-high-contrast-active .mat-paginator-icon{fill:CanvasText}\\n\"], components: [{ type: i2.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { type: i3.MatSelect, selector: \"mat-select\", inputs: [\"disabled\", \"disableRipple\", \"tabIndex\"], exportAs: [\"matSelect\"] }, { type: i4.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { type: i5.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], directives: [{ type: i6.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i6.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i7.MatTooltip, selector: \"[matTooltip]\", exportAs: [\"matTooltip\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginator, decorators: [{\n type: Component,\n args: [{ selector: 'mat-paginator', exportAs: 'matPaginator', inputs: ['disabled'], host: {\n 'class': 'mat-paginator',\n 'role': 'group',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"
\\n
\\n
\\n
\\n {{_intl.itemsPerPageLabel}}\\n
\\n\\n 1\\\"\\n [appearance]=\\\"_formFieldAppearance!\\\"\\n [color]=\\\"color\\\"\\n class=\\\"mat-paginator-page-size-select\\\">\\n \\n \\n {{pageSizeOption}}\\n \\n \\n \\n\\n {{pageSize}}
\\n
\\n\\n
\\n
\\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\\n
\\n\\n \\n \\n \\n \\n
\\n
\\n\\n\", styles: [\".mat-paginator{display:block}.mat-paginator-outer-container{display:flex}.mat-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap-reverse;width:100%}.mat-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-paginator-page-size{margin-right:0;margin-left:8px}.mat-paginator-page-size-label{margin:0 4px}.mat-paginator-page-size-select{margin:6px 4px 0 4px;width:56px}.mat-paginator-page-size-select.mat-form-field-appearance-outline{width:64px}.mat-paginator-page-size-select.mat-form-field-appearance-fill{width:64px}.mat-paginator-range-label{margin:0 32px 0 24px}.mat-paginator-range-actions{display:flex;align-items:center}.mat-paginator-icon{width:28px;fill:currentColor}[dir=rtl] .mat-paginator-icon{transform:rotate(180deg)}.cdk-high-contrast-active .mat-paginator-icon{fill:CanvasText}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatPaginatorIntl }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_PAGINATOR_DEFAULT_OPTIONS]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatPaginatorModule {\n}\nMatPaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatPaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorModule, declarations: [MatPaginator], imports: [CommonModule, MatButtonModule, MatSelectModule, MatTooltipModule, MatCommonModule], exports: [MatPaginator] });\nMatPaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorModule, providers: [MAT_PAGINATOR_INTL_PROVIDER], imports: [[CommonModule, MatButtonModule, MatSelectModule, MatTooltipModule, MatCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatButtonModule, MatSelectModule, MatTooltipModule, MatCommonModule],\n exports: [MatPaginator],\n declarations: [MatPaginator],\n providers: [MAT_PAGINATOR_INTL_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PAGINATOR_DEFAULT_OPTIONS, MAT_PAGINATOR_INTL_PROVIDER, MAT_PAGINATOR_INTL_PROVIDER_FACTORY, MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent, _MatPaginatorBase };\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getShadowRoot } from '@angular/cdk/platform';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subscription } from 'rxjs';\nimport * as i2 from '@angular/cdk/scrolling';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Base reference size of the spinner.\n * @docs-private\n */\nconst BASE_SIZE = 100;\n/**\n * Base reference stroke width of the spinner.\n * @docs-private\n */\nconst BASE_STROKE_WIDTH = 10;\n// Boilerplate for applying mixins to MatProgressSpinner.\n/** @docs-private */\nconst _MatProgressSpinnerBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}, 'primary');\n/** Injection token to be used to override the default options for `mat-progress-spinner`. */\nconst MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY() {\n return { diameter: BASE_SIZE };\n}\n// .0001 percentage difference is necessary in order to avoid unwanted animation frames\n// for example because the animation duration is 4 seconds, .1% accounts to 4ms\n// which are enough to see the flicker described in\n// https://github.com/angular/components/issues/8984\nconst INDETERMINATE_ANIMATION_TEMPLATE = `\n @keyframes mat-progress-spinner-stroke-rotate-DIAMETER {\n 0% { stroke-dashoffset: START_VALUE; transform: rotate(0); }\n 12.5% { stroke-dashoffset: END_VALUE; transform: rotate(0); }\n 12.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n 25% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n\n 25.0001% { stroke-dashoffset: START_VALUE; transform: rotate(270deg); }\n 37.5% { stroke-dashoffset: END_VALUE; transform: rotate(270deg); }\n 37.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n 50% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n\n 50.0001% { stroke-dashoffset: START_VALUE; transform: rotate(180deg); }\n 62.5% { stroke-dashoffset: END_VALUE; transform: rotate(180deg); }\n 62.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n 75% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n\n 75.0001% { stroke-dashoffset: START_VALUE; transform: rotate(90deg); }\n 87.5% { stroke-dashoffset: END_VALUE; transform: rotate(90deg); }\n 87.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n 100% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n }\n`;\n/**\n * `` component.\n */\nclass MatProgressSpinner extends _MatProgressSpinnerBase {\n constructor(elementRef, _platform, _document, animationMode, defaults, \n /**\n * @deprecated `changeDetectorRef`, `viewportRuler` and `ngZone`\n * parameters to become required.\n * @breaking-change 14.0.0\n */\n changeDetectorRef, viewportRuler, ngZone) {\n super(elementRef);\n this._document = _document;\n this._diameter = BASE_SIZE;\n this._value = 0;\n this._resizeSubscription = Subscription.EMPTY;\n /** Mode of the progress circle */\n this.mode = 'determinate';\n const trackedDiameters = MatProgressSpinner._diameters;\n this._spinnerAnimationLabel = this._getSpinnerAnimationLabel();\n // The base size is already inserted via the component's structural styles. We still\n // need to track it so we don't end up adding the same styles again.\n if (!trackedDiameters.has(_document.head)) {\n trackedDiameters.set(_document.head, new Set([BASE_SIZE]));\n }\n this._noopAnimations =\n animationMode === 'NoopAnimations' && !!defaults && !defaults._forceAnimations;\n if (elementRef.nativeElement.nodeName.toLowerCase() === 'mat-spinner') {\n this.mode = 'indeterminate';\n }\n if (defaults) {\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n // Safari has an issue where the circle isn't positioned correctly when the page has a\n // different zoom level from the default. This handler triggers a recalculation of the\n // `transform-origin` when the page zoom level changes.\n // See `_getCircleTransformOrigin` for more info.\n // @breaking-change 14.0.0 Remove null checks for `_changeDetectorRef`,\n // `viewportRuler` and `ngZone`.\n if (_platform.isBrowser && _platform.SAFARI && viewportRuler && changeDetectorRef && ngZone) {\n this._resizeSubscription = viewportRuler.change(150).subscribe(() => {\n // When the window is resize while the spinner is in `indeterminate` mode, we\n // have to mark for check so the transform origin of the circle can be recomputed.\n if (this.mode === 'indeterminate') {\n ngZone.run(() => changeDetectorRef.markForCheck());\n }\n });\n }\n }\n /** The diameter of the progress spinner (will set width and height of svg). */\n get diameter() {\n return this._diameter;\n }\n set diameter(size) {\n this._diameter = coerceNumberProperty(size);\n this._spinnerAnimationLabel = this._getSpinnerAnimationLabel();\n // If this is set before `ngOnInit`, the style root may not have been resolved yet.\n if (this._styleRoot) {\n this._attachStyleNode();\n }\n }\n /** Stroke width of the progress spinner. */\n get strokeWidth() {\n return this._strokeWidth || this.diameter / 10;\n }\n set strokeWidth(value) {\n this._strokeWidth = coerceNumberProperty(value);\n }\n /** Value of the progress circle. */\n get value() {\n return this.mode === 'determinate' ? this._value : 0;\n }\n set value(newValue) {\n this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n }\n ngOnInit() {\n const element = this._elementRef.nativeElement;\n // Note that we need to look up the root node in ngOnInit, rather than the constructor, because\n // Angular seems to create the element outside the shadow root and then moves it inside, if the\n // node is inside an `ngIf` and a ShadowDom-encapsulated component.\n this._styleRoot = _getShadowRoot(element) || this._document.head;\n this._attachStyleNode();\n element.classList.add('mat-progress-spinner-indeterminate-animation');\n }\n ngOnDestroy() {\n this._resizeSubscription.unsubscribe();\n }\n /** The radius of the spinner, adjusted for stroke width. */\n _getCircleRadius() {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n /** The view box of the spinner's svg element. */\n _getViewBox() {\n const viewBox = this._getCircleRadius() * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n /** The stroke circumference of the svg circle. */\n _getStrokeCircumference() {\n return 2 * Math.PI * this._getCircleRadius();\n }\n /** The dash offset of the svg circle. */\n _getStrokeDashOffset() {\n if (this.mode === 'determinate') {\n return (this._getStrokeCircumference() * (100 - this._value)) / 100;\n }\n return null;\n }\n /** Stroke width of the circle in percent. */\n _getCircleStrokeWidth() {\n return (this.strokeWidth / this.diameter) * 100;\n }\n /** Gets the `transform-origin` for the inner circle element. */\n _getCircleTransformOrigin(svg) {\n var _a;\n // Safari has an issue where the `transform-origin` doesn't work as expected when the page\n // has a different zoom level from the default. The problem appears to be that a zoom\n // is applied on the `svg` node itself. We can work around it by calculating the origin\n // based on the zoom level. On all other browsers the `currentScale` appears to always be 1.\n const scale = ((_a = svg.currentScale) !== null && _a !== void 0 ? _a : 1) * 50;\n return `${scale}% ${scale}%`;\n }\n /** Dynamically generates a style tag containing the correct animation for this diameter. */\n _attachStyleNode() {\n const styleRoot = this._styleRoot;\n const currentDiameter = this._diameter;\n const diameters = MatProgressSpinner._diameters;\n let diametersForElement = diameters.get(styleRoot);\n if (!diametersForElement || !diametersForElement.has(currentDiameter)) {\n const styleTag = this._document.createElement('style');\n styleTag.setAttribute('mat-spinner-animation', this._spinnerAnimationLabel);\n styleTag.textContent = this._getAnimationText();\n styleRoot.appendChild(styleTag);\n if (!diametersForElement) {\n diametersForElement = new Set();\n diameters.set(styleRoot, diametersForElement);\n }\n diametersForElement.add(currentDiameter);\n }\n }\n /** Generates animation styles adjusted for the spinner's diameter. */\n _getAnimationText() {\n const strokeCircumference = this._getStrokeCircumference();\n return (INDETERMINATE_ANIMATION_TEMPLATE\n // Animation should begin at 5% and end at 80%\n .replace(/START_VALUE/g, `${0.95 * strokeCircumference}`)\n .replace(/END_VALUE/g, `${0.2 * strokeCircumference}`)\n .replace(/DIAMETER/g, `${this._spinnerAnimationLabel}`));\n }\n /** Returns the circle diameter formatted for use with the animation-name CSS property. */\n _getSpinnerAnimationLabel() {\n // The string of a float point number will include a period ‘.’ character,\n // which is not valid for a CSS animation-name.\n return this.diameter.toString().replace('.', '_');\n }\n}\n/**\n * Tracks diameters of existing instances to de-dupe generated styles (default d = 100).\n * We need to keep track of which elements the diameters were attached to, because for\n * elements in the Shadow DOM the style tags are attached to the shadow root, rather\n * than the document head.\n */\nMatProgressSpinner._diameters = new WeakMap();\nMatProgressSpinner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatProgressSpinner, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: DOCUMENT, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }, { token: i2.ViewportRuler }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nMatProgressSpinner.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatProgressSpinner, selector: \"mat-progress-spinner, mat-spinner\", inputs: { color: \"color\", diameter: \"diameter\", strokeWidth: \"strokeWidth\", mode: \"mode\", value: \"value\" }, host: { attributes: { \"role\": \"progressbar\", \"tabindex\": \"-1\" }, properties: { \"class._mat-animation-noopable\": \"_noopAnimations\", \"style.width.px\": \"diameter\", \"style.height.px\": \"diameter\", \"attr.aria-valuemin\": \"mode === \\\"determinate\\\" ? 0 : null\", \"attr.aria-valuemax\": \"mode === \\\"determinate\\\" ? 100 : null\", \"attr.aria-valuenow\": \"mode === \\\"determinate\\\" ? value : null\", \"attr.mode\": \"mode\" }, classAttribute: \"mat-progress-spinner mat-spinner\" }, exportAs: [\"matProgressSpinner\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n \\n \\n\\n \\n\\n\", styles: [\".mat-progress-spinner{display:block;position:relative;overflow:hidden}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.cdk-high-contrast-active .mat-progress-spinner circle{stroke:CanvasText}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}\\n\"], directives: [{ type: i3.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i3.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatProgressSpinner, decorators: [{\n type: Component,\n args: [{ selector: 'mat-progress-spinner, mat-spinner', exportAs: 'matProgressSpinner', host: {\n 'role': 'progressbar',\n // `mat-spinner` is here for backward compatibility.\n 'class': 'mat-progress-spinner mat-spinner',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode',\n }, inputs: ['color'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\n\\n\\n\\n \\n \\n\\n \\n\\n\", styles: [\".mat-progress-spinner{display:block;position:relative;overflow:hidden}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.cdk-high-contrast-active .mat-progress-spinner circle{stroke:CanvasText}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] svg{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }, { type: i2.ViewportRuler }, { type: i0.NgZone }];\n }, propDecorators: { diameter: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], mode: [{\n type: Input\n }], value: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatProgressSpinnerModule {\n}\nMatProgressSpinnerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatProgressSpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatProgressSpinnerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatProgressSpinnerModule, declarations: [MatProgressSpinner], imports: [MatCommonModule, CommonModule], exports: [MatProgressSpinner, MatCommonModule] });\nMatProgressSpinnerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatProgressSpinnerModule, imports: [[MatCommonModule, CommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatProgressSpinnerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule],\n exports: [MatProgressSpinner, MatCommonModule],\n declarations: [MatProgressSpinner],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @deprecated Import `MatProgressSpinner` instead. Note that the\n * `mat-spinner` selector isn't deprecated.\n * @breaking-change 8.0.0\n */\n// tslint:disable-next-line:variable-name\nconst MatSpinner = MatProgressSpinner;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, MatProgressSpinner, MatProgressSpinnerModule, MatSpinner };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, Directive, Output, Input, ContentChildren, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Attribute, NgModule } from '@angular/core';\nimport * as i3 from '@angular/material/core';\nimport { mixinDisableRipple, mixinTabIndex, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i2 from '@angular/cdk/collections';\n\nconst MAT_RADIO_DEFAULT_OPTIONS = new InjectionToken('mat-radio-default-options', {\n providedIn: 'root',\n factory: MAT_RADIO_DEFAULT_OPTIONS_FACTORY,\n});\nfunction MAT_RADIO_DEFAULT_OPTIONS_FACTORY() {\n return {\n color: 'accent',\n };\n}\n// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nconst MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatRadioGroup),\n multi: true,\n};\n/** Change event object emitted by MatRadio and MatRadioGroup. */\nclass MatRadioChange {\n constructor(\n /** The MatRadioButton that emits the change event. */\n source, \n /** The value of the MatRadioButton. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/**\n * Injection token that can be used to inject instances of `MatRadioGroup`. It serves as\n * alternative token to the actual `MatRadioGroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nconst MAT_RADIO_GROUP = new InjectionToken('MatRadioGroup');\n/**\n * Base class with all of the `MatRadioGroup` functionality.\n * @docs-private\n */\nclass _MatRadioGroupBase {\n constructor(_changeDetector) {\n this._changeDetector = _changeDetector;\n /** Selected value for the radio group. */\n this._value = null;\n /** The HTML name attribute applied to radio buttons in this group. */\n this._name = `mat-radio-group-${nextUniqueId++}`;\n /** The currently selected radio button. Should match value. */\n this._selected = null;\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n this._labelPosition = 'after';\n /** Whether the radio group is disabled. */\n this._disabled = false;\n /** Whether the radio group is required. */\n this._required = false;\n /** The method to be called in order to update ngModel */\n this._controlValueAccessorChangeFn = () => { };\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n this.onTouched = () => { };\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as ``).\n */\n this.change = new EventEmitter();\n }\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n get name() {\n return this._name;\n }\n set name(value) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n get labelPosition() {\n return this._labelPosition;\n }\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n get value() {\n return this._value;\n }\n set value(newValue) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n get selected() {\n return this._selected;\n }\n set selected(selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n /** Whether the radio group is disabled */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n /** Whether the radio group is required */\n get required() {\n return this._required;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n }\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n _updateRadioButtonNames() {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio._markForCheck();\n });\n }\n }\n /** Updates the `selected` radio button from the internal _value state. */\n _updateSelectedRadioFromValue() {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n if (this._radios && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent() {\n if (this._isInitialized) {\n this.change.emit(new MatRadioChange(this._selected, this._value));\n }\n }\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n}\n_MatRadioGroupBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatRadioGroupBase, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatRadioGroupBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatRadioGroupBase, inputs: { color: \"color\", name: \"name\", labelPosition: \"labelPosition\", value: \"value\", selected: \"selected\", disabled: \"disabled\", required: \"required\" }, outputs: { change: \"change\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatRadioGroupBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{\n type: Output\n }], color: [{\n type: Input\n }], name: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], value: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }] } });\n/**\n * A group of radio buttons. May contain one or more `` elements.\n */\nclass MatRadioGroup extends _MatRadioGroupBase {\n}\nMatRadioGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioGroup, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatRadioGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatRadioGroup, selector: \"mat-radio-group\", host: { attributes: { \"role\": \"radiogroup\" }, classAttribute: \"mat-radio-group\" }, providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n { provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup },\n ], queries: [{ propertyName: \"_radios\", predicate: i0.forwardRef(function () { return MatRadioButton; }), descendants: true }], exportAs: [\"matRadioGroup\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioGroup, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n { provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup },\n ],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-radio-group',\n },\n }]\n }], propDecorators: { _radios: [{\n type: ContentChildren,\n args: [forwardRef(() => MatRadioButton), { descendants: true }]\n }] } });\n// Boilerplate for applying mixins to MatRadioButton.\n/** @docs-private */\nclass MatRadioButtonBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatRadioButtonMixinBase = mixinDisableRipple(mixinTabIndex(MatRadioButtonBase));\n/**\n * Base class with all of the `MatRadioButton` functionality.\n * @docs-private\n */\nclass _MatRadioButtonBase extends _MatRadioButtonMixinBase {\n constructor(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, animationMode, _providerOverride, tabIndex) {\n super(elementRef);\n this._changeDetector = _changeDetector;\n this._focusMonitor = _focusMonitor;\n this._radioDispatcher = _radioDispatcher;\n this._providerOverride = _providerOverride;\n this._uniqueId = `mat-radio-${++nextUniqueId}`;\n /** The unique ID for the radio button. */\n this.id = this._uniqueId;\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as ``).\n */\n this.change = new EventEmitter();\n /** Whether this radio is checked. */\n this._checked = false;\n /** Value assigned to this radio. */\n this._value = null;\n /** Unregister function for _radioDispatcher */\n this._removeUniqueSelectionListener = () => { };\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n this.radioGroup = radioGroup;\n this._noopAnimations = animationMode === 'NoopAnimations';\n if (tabIndex) {\n this.tabIndex = coerceNumberProperty(tabIndex, 0);\n }\n this._removeUniqueSelectionListener = _radioDispatcher.listen((id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n /** Whether this radio button is checked. */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n const newCheckedState = coerceBooleanProperty(value);\n if (this._checked !== newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n }\n else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n if (newCheckedState) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n }\n /** The value of this radio button. */\n get value() {\n return this._value;\n }\n set value(value) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n get labelPosition() {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n set labelPosition(value) {\n this._labelPosition = value;\n }\n /** Whether the radio button is disabled. */\n get disabled() {\n return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\n }\n set disabled(value) {\n this._setDisabled(coerceBooleanProperty(value));\n }\n /** Whether the radio button is required. */\n get required() {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /** Theme color of the radio button. */\n get color() {\n // As per Material design specifications the selection control radio should use the accent color\n // palette by default. https://material.io/guidelines/components/selection-controls.html\n return (this._color ||\n (this.radioGroup && this.radioGroup.color) ||\n (this._providerOverride && this._providerOverride.color) ||\n 'accent');\n }\n set color(newValue) {\n this._color = newValue;\n }\n /** ID of the native input element inside `` */\n get inputId() {\n return `${this.id || this._uniqueId}-input`;\n }\n /** Focuses the radio button. */\n focus(options, origin) {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n }\n else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n }\n ngDoCheck() {\n this._updateTabIndex();\n }\n ngAfterViewInit() {\n this._updateTabIndex();\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup._touch();\n }\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._removeUniqueSelectionListener();\n }\n /** Dispatch change event with current value. */\n _emitChangeEvent() {\n this.change.emit(new MatRadioChange(this, this._value));\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n _onInputClick(event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n /** Triggered when the radio button receives an interaction from the user. */\n _onInputInteraction(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n if (!this.checked && !this.disabled) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n }\n /** Sets the disabled state and marks for check if a change occurred. */\n _setDisabled(value) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._changeDetector.markForCheck();\n }\n }\n /** Gets the tabindex for the underlying input element. */\n _updateTabIndex() {\n var _a;\n const group = this.radioGroup;\n let value;\n // Implement a roving tabindex if the button is inside a group. For most cases this isn't\n // necessary, because the browser handles the tab order for inputs inside a group automatically,\n // but we need an explicitly higher tabindex for the selected button in order for things like\n // the focus trap to pick it up correctly.\n if (!group || !group.selected || this.disabled) {\n value = this.tabIndex;\n }\n else {\n value = group.selected === this ? this.tabIndex : -1;\n }\n if (value !== this._previousTabIndex) {\n // We have to set the tabindex directly on the DOM node, because it depends on\n // the selected state which is prone to \"changed after checked errors\".\n const input = (_a = this._inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;\n if (input) {\n input.setAttribute('tabindex', value + '');\n this._previousTabIndex = value;\n }\n }\n }\n}\n_MatRadioButtonBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatRadioButtonBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\n_MatRadioButtonBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatRadioButtonBase, inputs: { id: \"id\", name: \"name\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"], checked: \"checked\", value: \"value\", labelPosition: \"labelPosition\", disabled: \"disabled\", required: \"required\", color: \"color\" }, outputs: { change: \"change\" }, viewQueries: [{ propertyName: \"_inputElement\", first: true, predicate: [\"input\"], descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatRadioButtonBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: _MatRadioGroupBase }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.UniqueSelectionDispatcher }, { type: undefined }, { type: undefined }, { type: undefined }]; }, propDecorators: { id: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], checked: [{\n type: Input\n }], value: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }], color: [{\n type: Input\n }], change: [{\n type: Output\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }] } });\n/**\n * A Material design radio-button. Typically placed inside of `` elements.\n */\nclass MatRadioButton extends _MatRadioButtonBase {\n constructor(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher, animationMode, providerOverride, tabIndex) {\n super(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher, animationMode, providerOverride, tabIndex);\n }\n}\nMatRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioButton, deps: [{ token: MAT_RADIO_GROUP, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.UniqueSelectionDispatcher }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_RADIO_DEFAULT_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });\nMatRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatRadioButton, selector: \"mat-radio-button\", inputs: { disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, host: { listeners: { \"focus\": \"_inputElement.nativeElement.focus()\" }, properties: { \"class.mat-radio-checked\": \"checked\", \"class.mat-radio-disabled\": \"disabled\", \"class._mat-animation-noopable\": \"_noopAnimations\", \"class.mat-primary\": \"color === \\\"primary\\\"\", \"class.mat-accent\": \"color === \\\"accent\\\"\", \"class.mat-warn\": \"color === \\\"warn\\\"\", \"attr.tabindex\": \"null\", \"attr.id\": \"id\", \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"attr.aria-describedby\": \"null\" }, classAttribute: \"mat-radio-button\" }, exportAs: [\"matRadioButton\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\", styles: [\".mat-radio-button{display:inline-block;-webkit-tap-highlight-color:transparent;outline:0}.mat-radio-label{-webkit-user-select:none;user-select:none;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}._mat-animation-noopable .mat-radio-outer-circle{transition:none}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;opacity:0;transition:transform ease 280ms,background-color ease 280ms,opacity linear 1ms 280ms;width:20px;transform:scale(0.001);-webkit-print-color-adjust:exact;color-adjust:exact}.mat-radio-checked .mat-radio-inner-circle{transform:scale(0.5);opacity:1;transition:transform ease 280ms,background-color ease 280ms}.cdk-high-contrast-active .mat-radio-checked .mat-radio-inner-circle{border:solid 10px}._mat-animation-noopable .mat-radio-inner-circle{transition:none}.mat-radio-label-content{-webkit-user-select:auto;user-select:auto;display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-button .mat-radio-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-radio-button .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple){opacity:.16}.mat-radio-persistent-ripple{width:100%;height:100%;transform:none;top:0;left:0}.mat-radio-container:hover .mat-radio-persistent-ripple{opacity:.04}.mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-persistent-ripple,.mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-persistent-ripple{opacity:.12}.mat-radio-persistent-ripple,.mat-radio-disabled .mat-radio-container:hover .mat-radio-persistent-ripple{opacity:0}@media(hover: none){.mat-radio-container:hover .mat-radio-persistent-ripple{display:none}}.mat-radio-input{opacity:0;position:absolute;top:0;left:0;margin:0;width:100%;height:100%;cursor:inherit;z-index:-1}.cdk-high-contrast-active .mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-ripple,.cdk-high-contrast-active .mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-ripple{outline:solid 3px}.cdk-high-contrast-active .mat-radio-disabled{opacity:.5}\\n\"], directives: [{ type: i3.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioButton, decorators: [{\n type: Component,\n args: [{ selector: 'mat-radio-button', inputs: ['disableRipple', 'tabIndex'], encapsulation: ViewEncapsulation.None, exportAs: 'matRadioButton', host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_noopAnimations',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.id]': 'id',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()',\n }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n\\n\", styles: [\".mat-radio-button{display:inline-block;-webkit-tap-highlight-color:transparent;outline:0}.mat-radio-label{-webkit-user-select:none;user-select:none;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}._mat-animation-noopable .mat-radio-outer-circle{transition:none}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;opacity:0;transition:transform ease 280ms,background-color ease 280ms,opacity linear 1ms 280ms;width:20px;transform:scale(0.001);-webkit-print-color-adjust:exact;color-adjust:exact}.mat-radio-checked .mat-radio-inner-circle{transform:scale(0.5);opacity:1;transition:transform ease 280ms,background-color ease 280ms}.cdk-high-contrast-active .mat-radio-checked .mat-radio-inner-circle{border:solid 10px}._mat-animation-noopable .mat-radio-inner-circle{transition:none}.mat-radio-label-content{-webkit-user-select:auto;user-select:auto;display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-button .mat-radio-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-radio-button .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple){opacity:.16}.mat-radio-persistent-ripple{width:100%;height:100%;transform:none;top:0;left:0}.mat-radio-container:hover .mat-radio-persistent-ripple{opacity:.04}.mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-persistent-ripple,.mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-persistent-ripple{opacity:.12}.mat-radio-persistent-ripple,.mat-radio-disabled .mat-radio-container:hover .mat-radio-persistent-ripple{opacity:0}@media(hover: none){.mat-radio-container:hover .mat-radio-persistent-ripple{display:none}}.mat-radio-input{opacity:0;position:absolute;top:0;left:0;margin:0;width:100%;height:100%;cursor:inherit;z-index:-1}.cdk-high-contrast-active .mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-ripple,.cdk-high-contrast-active .mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-ripple{outline:solid 3px}.cdk-high-contrast-active .mat-radio-disabled{opacity:.5}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatRadioGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_GROUP]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.UniqueSelectionDispatcher }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatRadioModule {\n}\nMatRadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioModule, declarations: [MatRadioGroup, MatRadioButton], imports: [MatRippleModule, MatCommonModule], exports: [MatRadioGroup, MatRadioButton, MatCommonModule] });\nMatRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioModule, imports: [[MatRippleModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRadioModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n declarations: [MatRadioGroup, MatRadioButton],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_RADIO_DEFAULT_OPTIONS, MAT_RADIO_DEFAULT_OPTIONS_FACTORY, MAT_RADIO_GROUP, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioButton, MatRadioChange, MatRadioGroup, MatRadioModule, _MatRadioButtonBase, _MatRadioGroupBase };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollable, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i5 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, EventEmitter, Optional, Input, Output, ViewChild, QueryList, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { filter, map, mapTo, takeUntil, distinctUntilChanged, take, startWith, debounceTime } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/platform';\nimport * as i4 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nconst matDrawerAnimations = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')),\n ]),\n};\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nfunction throwMatDuplicatedDrawerError(position) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n/** Configures whether drawers should use auto sizing by default. */\nconst MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n});\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nconst MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER');\n/** @docs-private */\nfunction MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY() {\n return false;\n}\nclass MatDrawerContent extends CdkScrollable {\n constructor(_changeDetectorRef, _container, elementRef, scrollDispatcher, ngZone) {\n super(elementRef, scrollDispatcher, ngZone);\n this._changeDetectorRef = _changeDetectorRef;\n this._container = _container;\n }\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\nMatDrawerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDrawerContent, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => MatDrawerContainer) }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nMatDrawerContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDrawerContent, selector: \"mat-drawer-content\", host: { properties: { \"style.margin-left.px\": \"_container._contentMargins.left\", \"style.margin-right.px\": \"_container._contentMargins.right\" }, classAttribute: \"mat-drawer-content\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: MatDrawerContent,\n },\n ], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDrawerContent, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-drawer-content',\n template: '',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatDrawerContent,\n },\n ],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: MatDrawerContainer, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatDrawerContainer)]\n }] }, { type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.NgZone }];\n } });\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nclass MatDrawer {\n constructor(_elementRef, _focusTrapFactory, _focusMonitor, _platform, _ngZone, _interactivityChecker, _doc, _container) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._focusMonitor = _focusMonitor;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._interactivityChecker = _interactivityChecker;\n this._doc = _doc;\n this._container = _container;\n this._elementFocusedBeforeDrawerWasOpened = null;\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n this._enableAnimations = false;\n this._position = 'start';\n this._mode = 'over';\n this._disableClose = false;\n this._opened = false;\n /** Emits whenever the drawer has started animating. */\n this._animationStarted = new Subject();\n /** Emits whenever the drawer is done animating. */\n this._animationEnd = new Subject();\n /** Current state of the sidenav animation. */\n this._animationState = 'void';\n /** Event emitted when the drawer open state is changed. */\n this.openedChange =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter(/* isAsync */ true);\n /** Event emitted when the drawer has been opened. */\n this._openedStream = this.openedChange.pipe(filter(o => o), map(() => { }));\n /** Event emitted when the drawer has started opening. */\n this.openedStart = this._animationStarted.pipe(filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0), mapTo(undefined));\n /** Event emitted when the drawer has been closed. */\n this._closedStream = this.openedChange.pipe(filter(o => !o), map(() => { }));\n /** Event emitted when the drawer has started closing. */\n this.closedStart = this._animationStarted.pipe(filter(e => e.fromState !== e.toState && e.toState === 'void'), mapTo(undefined));\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onPositionChanged = new EventEmitter();\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n this._modeChanged = new Subject();\n this.openedChange.subscribe((opened) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement;\n }\n this._takeFocus();\n }\n else if (this._isFocusWithinDrawer()) {\n this._restoreFocus(this._openedVia || 'program');\n }\n });\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent(this._elementRef.nativeElement, 'keydown')\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }), takeUntil(this._destroyed))\n .subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }));\n });\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe((event) => {\n const { fromState, toState } = event;\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n /** The side that the drawer is attached to. */\n get position() {\n return this._position;\n }\n set position(value) {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value !== this._position) {\n // Static inputs in Ivy are set before the element is in the DOM.\n if (this._isAttached) {\n this._updatePositionInParent(value);\n }\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n get mode() {\n return this._mode;\n }\n set mode(value) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n get disableClose() {\n return this._disableClose;\n }\n set disableClose(value) {\n this._disableClose = coerceBooleanProperty(value);\n }\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or AutoFocusTarget\n * instead.\n */\n get autoFocus() {\n const value = this._autoFocus;\n // Note that usually we don't allow autoFocus to be set to `first-tabbable` in `side` mode,\n // because we don't know how the sidenav is being used, but in some cases it still makes\n // sense to do it. The consumer can explicitly set `autoFocus`.\n if (value == null) {\n if (this.mode === 'side') {\n return 'dialog';\n }\n else {\n return 'first-tabbable';\n }\n }\n return value;\n }\n set autoFocus(value) {\n if (value === 'true' || value === 'false' || value == null) {\n value = coerceBooleanProperty(value);\n }\n this._autoFocus = value;\n }\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n this.toggle(coerceBooleanProperty(value));\n }\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n _forceFocus(element, options) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n element.removeEventListener('blur', callback);\n element.removeEventListener('mousedown', callback);\n element.removeAttribute('tabindex');\n };\n element.addEventListener('blur', callback);\n element.addEventListener('mousedown', callback);\n });\n }\n element.focus(options);\n }\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n _focusByCssSelector(selector, options) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(selector);\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n _takeFocus() {\n if (!this._focusTrap) {\n return;\n }\n const element = this._elementRef.nativeElement;\n // When autoFocus is not on the sidenav, if the element cannot be focused or does\n // not exist, focus the sidenav itself so the keyboard navigation still works.\n // We need to check that `focus` is a function due to Universal.\n switch (this.autoFocus) {\n case false:\n case 'dialog':\n return;\n case true:\n case 'first-tabbable':\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n element.focus();\n }\n });\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this.autoFocus);\n break;\n }\n }\n /**\n * Restores focus to the element that was originally focused when the drawer opened.\n * If no element was focused at that time, the focus will be restored to the drawer.\n */\n _restoreFocus(focusOrigin) {\n if (this.autoFocus === 'dialog') {\n return;\n }\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, focusOrigin);\n }\n else {\n this._elementRef.nativeElement.blur();\n }\n this._elementFocusedBeforeDrawerWasOpened = null;\n }\n /** Whether focus is currently within the drawer. */\n _isFocusWithinDrawer() {\n const activeEl = this._doc.activeElement;\n return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n }\n ngAfterViewInit() {\n this._isAttached = true;\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n // Only update the DOM position when the sidenav is positioned at\n // the end since we project the sidenav before the content by default.\n if (this._position === 'end') {\n this._updatePositionInParent('end');\n }\n }\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n ngOnDestroy() {\n var _a;\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n (_a = this._anchor) === null || _a === void 0 ? void 0 : _a.remove();\n this._anchor = null;\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia) {\n return this.toggle(true, openedVia);\n }\n /** Close the drawer. */\n close() {\n return this.toggle(false);\n }\n /** Closes the drawer with context that the backdrop was clicked. */\n _closeViaBackdropClick() {\n // If the drawer is closed upon a backdrop click, we always want to restore focus. We\n // don't need to check whether focus is currently in the drawer, as clicking on the\n // backdrop causes blurs the active element.\n return this._setOpen(/* isOpen */ false, /* restoreFocus */ true, 'mouse');\n }\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen = !this.opened, openedVia) {\n // If the focus is currently inside the drawer content and we are closing the drawer,\n // restore the focus to the initially focused element (when the drawer opened).\n if (isOpen && openedVia) {\n this._openedVia = openedVia;\n }\n const result = this._setOpen(isOpen, \n /* restoreFocus */ !isOpen && this._isFocusWithinDrawer(), this._openedVia || 'program');\n if (!isOpen) {\n this._openedVia = null;\n }\n return result;\n }\n /**\n * Toggles the opened state of the drawer.\n * @param isOpen Whether the drawer should open or close.\n * @param restoreFocus Whether focus should be restored on close.\n * @param focusOrigin Origin to use when restoring focus.\n */\n _setOpen(isOpen, restoreFocus, focusOrigin) {\n this._opened = isOpen;\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n }\n else {\n this._animationState = 'void';\n if (restoreFocus) {\n this._restoreFocus(focusOrigin);\n }\n }\n this._updateFocusTrapState();\n return new Promise(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n _getWidth() {\n return this._elementRef.nativeElement ? this._elementRef.nativeElement.offsetWidth || 0 : 0;\n }\n /** Updates the enabled state of the focus trap. */\n _updateFocusTrapState() {\n if (this._focusTrap) {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n this._focusTrap.enabled = this.opened && this.mode !== 'side';\n }\n }\n /**\n * Updates the position of the drawer in the DOM. We need to move the element around ourselves\n * when it's in the `end` position so that it comes after the content and the visual order\n * matches the tab order. We also need to be able to move it back to `start` if the sidenav\n * started off as `end` and was changed to `start`.\n */\n _updatePositionInParent(newPosition) {\n const element = this._elementRef.nativeElement;\n const parent = element.parentNode;\n if (newPosition === 'end') {\n if (!this._anchor) {\n this._anchor = this._doc.createComment('mat-drawer-anchor');\n parent.insertBefore(this._anchor, element);\n }\n parent.appendChild(element);\n }\n else if (this._anchor) {\n this._anchor.parentNode.insertBefore(element, this._anchor);\n }\n }\n}\nMatDrawer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDrawer, deps: [{ token: i0.ElementRef }, { token: i2.FocusTrapFactory }, { token: i2.FocusMonitor }, { token: i3.Platform }, { token: i0.NgZone }, { token: i2.InteractivityChecker }, { token: DOCUMENT, optional: true }, { token: MAT_DRAWER_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatDrawer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDrawer, selector: \"mat-drawer\", inputs: { position: \"position\", mode: \"mode\", disableClose: \"disableClose\", autoFocus: \"autoFocus\", opened: \"opened\" }, outputs: { openedChange: \"openedChange\", _openedStream: \"opened\", openedStart: \"openedStart\", _closedStream: \"closed\", closedStart: \"closedStart\", onPositionChanged: \"positionChanged\" }, host: { attributes: { \"tabIndex\": \"-1\" }, listeners: { \"@transform.start\": \"_animationStarted.next($event)\", \"@transform.done\": \"_animationEnd.next($event)\" }, properties: { \"attr.align\": \"null\", \"class.mat-drawer-end\": \"position === \\\"end\\\"\", \"class.mat-drawer-over\": \"mode === \\\"over\\\"\", \"class.mat-drawer-push\": \"mode === \\\"push\\\"\", \"class.mat-drawer-side\": \"mode === \\\"side\\\"\", \"class.mat-drawer-opened\": \"opened\", \"@transform\": \"_animationState\" }, classAttribute: \"mat-drawer\" }, viewQueries: [{ propertyName: \"_content\", first: true, predicate: [\"content\"], descendants: true }], exportAs: [\"matDrawer\"], ngImport: i0, template: \"
\\r\\n \\r\\n
\\r\\n\", directives: [{ type: i1.CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }], animations: [matDrawerAnimations.transformDrawer], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDrawer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-drawer', exportAs: 'matDrawer', animations: [matDrawerAnimations.transformDrawer], host: {\n 'class': 'mat-drawer',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_animationStarted.next($event)',\n '(@transform.done)': '_animationEnd.next($event)',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"
\\r\\n \\r\\n
\\r\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i2.FocusTrapFactory }, { type: i2.FocusMonitor }, { type: i3.Platform }, { type: i0.NgZone }, { type: i2.InteractivityChecker }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: MatDrawerContainer, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DRAWER_CONTAINER]\n }] }];\n }, propDecorators: { position: [{\n type: Input\n }], mode: [{\n type: Input\n }], disableClose: [{\n type: Input\n }], autoFocus: [{\n type: Input\n }], opened: [{\n type: Input\n }], openedChange: [{\n type: Output\n }], _openedStream: [{\n type: Output,\n args: ['opened']\n }], openedStart: [{\n type: Output\n }], _closedStream: [{\n type: Output,\n args: ['closed']\n }], closedStart: [{\n type: Output\n }], onPositionChanged: [{\n type: Output,\n args: ['positionChanged']\n }], _content: [{\n type: ViewChild,\n args: ['content']\n }] } });\n/**\n * `` component.\n *\n * This is the parent component to one or two ``s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\nclass MatDrawerContainer {\n constructor(_dir, _element, _ngZone, _changeDetectorRef, viewportRuler, defaultAutosize = false, _animationMode) {\n this._dir = _dir;\n this._element = _element;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** Drawers that belong to this container. */\n this._drawers = new QueryList();\n /** Event emitted when the drawer backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n this._doCheckSubject = new Subject();\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n this._contentMargins = { left: null, right: null };\n this._contentMarginChanges = new Subject();\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n }\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler\n .change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n this._autosize = defaultAutosize;\n }\n /** The drawer child with the `start` position. */\n get start() {\n return this._start;\n }\n /** The drawer child with the `end` position. */\n get end() {\n return this._end;\n }\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n get autosize() {\n return this._autosize;\n }\n set autosize(value) {\n this._autosize = coerceBooleanProperty(value);\n }\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n return this._backdropOverride;\n }\n set hasBackdrop(value) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable() {\n return this._userContent || this._content;\n }\n ngAfterContentInit() {\n this._allDrawers.changes\n .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n .subscribe((drawer) => {\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n this._drawers.forEach((drawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this.updateContentMargins();\n }\n this._changeDetectorRef.markForCheck();\n });\n // Avoid hitting the NgZone through the debounce timeout.\n this._ngZone.runOutsideAngular(() => {\n this._doCheckSubject\n .pipe(debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n });\n }\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Calls `open` of both start and end drawers */\n open() {\n this._drawers.forEach(drawer => drawer.open());\n }\n /** Calls `close` of both start and end drawers */\n close() {\n this._drawers.forEach(drawer => drawer.close());\n }\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._getWidth();\n }\n else if (this._left.mode == 'push') {\n const width = this._left._getWidth();\n left += width;\n right -= width;\n }\n }\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._getWidth();\n }\n else if (this._right.mode == 'push') {\n const width = this._right._getWidth();\n right += width;\n left -= width;\n }\n }\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null;\n right = right || null;\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = { left, right };\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n _watchDrawerToggle(drawer) {\n drawer._animationStarted\n .pipe(filter((event) => event.fromState !== event.toState), takeUntil(this._drawers.changes))\n .subscribe((event) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n if (drawer.mode !== 'side') {\n drawer.openedChange\n .pipe(takeUntil(this._drawers.changes))\n .subscribe(() => this._setContainerClass(drawer.opened));\n }\n }\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n _watchDrawerPosition(drawer) {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n /** Subscribes to changes in drawer mode so we can run change detection. */\n _watchDrawerMode(drawer) {\n if (drawer) {\n drawer._modeChanged\n .pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n _setContainerClass(isAdd) {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n if (isAdd) {\n classList.add(className);\n }\n else {\n classList.remove(className);\n }\n }\n /** Validate the state of the drawer children components. */\n _validateDrawers() {\n this._start = this._end = null;\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n }\n else {\n if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n this._right = this._left = null;\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n }\n else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n /** Whether the container is being pushed to the side by one of the drawers. */\n _isPushed() {\n return ((this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over'));\n }\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawersViaBackdrop();\n }\n _closeModalDrawersViaBackdrop() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer._closeViaBackdropClick());\n }\n _isShowingBackdrop() {\n return ((this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end)));\n }\n _canHaveBackdrop(drawer) {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n _isDrawerOpen(drawer) {\n return drawer != null && drawer.opened;\n }\n}\nMatDrawerContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDrawerContainer, deps: [{ token: i4.Directionality, optional: true }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ViewportRuler }, { token: MAT_DRAWER_DEFAULT_AUTOSIZE }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatDrawerContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatDrawerContainer, selector: \"mat-drawer-container\", inputs: { autosize: \"autosize\", hasBackdrop: \"hasBackdrop\" }, outputs: { backdropClick: \"backdropClick\" }, host: { properties: { \"class.mat-drawer-container-explicit-backdrop\": \"_backdropOverride\" }, classAttribute: \"mat-drawer-container\" }, providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer,\n },\n ], queries: [{ propertyName: \"_content\", first: true, predicate: MatDrawerContent, descendants: true }, { propertyName: \"_allDrawers\", predicate: MatDrawer, descendants: true }], viewQueries: [{ propertyName: \"_userContent\", first: true, predicate: MatDrawerContent, descendants: true }], exportAs: [\"matDrawerContainer\"], ngImport: i0, template: \"
\\n\\n\\n\\n\\n\\n\\n \\n\\n\", styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\\n\"], components: [{ type: MatDrawerContent, selector: \"mat-drawer-content\" }], directives: [{ type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatDrawerContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-drawer-container', exportAs: 'matDrawerContainer', host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer,\n },\n ], template: \"
\\n\\n\\n\\n\\n\\n\\n \\n\\n\", styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i4.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DRAWER_DEFAULT_AUTOSIZE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { _allDrawers: [{\n type: ContentChildren,\n args: [MatDrawer, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }], _content: [{\n type: ContentChild,\n args: [MatDrawerContent]\n }], _userContent: [{\n type: ViewChild,\n args: [MatDrawerContent]\n }], autosize: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], backdropClick: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSidenavContent extends MatDrawerContent {\n constructor(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\nMatSidenavContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavContent, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => MatSidenavContainer) }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nMatSidenavContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatSidenavContent, selector: \"mat-sidenav-content\", host: { properties: { \"style.margin-left.px\": \"_container._contentMargins.left\", \"style.margin-right.px\": \"_container._contentMargins.right\" }, classAttribute: \"mat-drawer-content mat-sidenav-content\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: MatSidenavContent,\n },\n ], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavContent, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-sidenav-content',\n template: '',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatSidenavContent,\n },\n ],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ChangeDetectorRef }, { type: MatSidenavContainer, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatSidenavContainer)]\n }] }, { type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.NgZone }];\n } });\nclass MatSidenav extends MatDrawer {\n constructor() {\n super(...arguments);\n this._fixedInViewport = false;\n this._fixedTopGap = 0;\n this._fixedBottomGap = 0;\n }\n /** Whether the sidenav is fixed in the viewport. */\n get fixedInViewport() {\n return this._fixedInViewport;\n }\n set fixedInViewport(value) {\n this._fixedInViewport = coerceBooleanProperty(value);\n }\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n get fixedTopGap() {\n return this._fixedTopGap;\n }\n set fixedTopGap(value) {\n this._fixedTopGap = coerceNumberProperty(value);\n }\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n get fixedBottomGap() {\n return this._fixedBottomGap;\n }\n set fixedBottomGap(value) {\n this._fixedBottomGap = coerceNumberProperty(value);\n }\n}\nMatSidenav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenav, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatSidenav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatSidenav, selector: \"mat-sidenav\", inputs: { fixedInViewport: \"fixedInViewport\", fixedTopGap: \"fixedTopGap\", fixedBottomGap: \"fixedBottomGap\" }, host: { attributes: { \"tabIndex\": \"-1\" }, properties: { \"attr.align\": \"null\", \"class.mat-drawer-end\": \"position === \\\"end\\\"\", \"class.mat-drawer-over\": \"mode === \\\"over\\\"\", \"class.mat-drawer-push\": \"mode === \\\"push\\\"\", \"class.mat-drawer-side\": \"mode === \\\"side\\\"\", \"class.mat-drawer-opened\": \"opened\", \"class.mat-sidenav-fixed\": \"fixedInViewport\", \"style.top.px\": \"fixedInViewport ? fixedTopGap : null\", \"style.bottom.px\": \"fixedInViewport ? fixedBottomGap : null\" }, classAttribute: \"mat-drawer mat-sidenav\" }, exportAs: [\"matSidenav\"], usesInheritance: true, ngImport: i0, template: \"
\\r\\n \\r\\n
\\r\\n\", directives: [{ type: i1.CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }], animations: [matDrawerAnimations.transformDrawer], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenav, decorators: [{\n type: Component,\n args: [{ selector: 'mat-sidenav', exportAs: 'matSidenav', animations: [matDrawerAnimations.transformDrawer], host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-drawer-opened]': 'opened',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"
\\r\\n \\r\\n
\\r\\n\" }]\n }], propDecorators: { fixedInViewport: [{\n type: Input\n }], fixedTopGap: [{\n type: Input\n }], fixedBottomGap: [{\n type: Input\n }] } });\nclass MatSidenavContainer extends MatDrawerContainer {\n}\nMatSidenavContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatSidenavContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatSidenavContainer, selector: \"mat-sidenav-container\", host: { properties: { \"class.mat-drawer-container-explicit-backdrop\": \"_backdropOverride\" }, classAttribute: \"mat-drawer-container mat-sidenav-container\" }, providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer,\n },\n ], queries: [{ propertyName: \"_content\", first: true, predicate: MatSidenavContent, descendants: true }, { propertyName: \"_allDrawers\", predicate: MatSidenav, descendants: true }], exportAs: [\"matSidenavContainer\"], usesInheritance: true, ngImport: i0, template: \"
\\n\\n\\n\\n\\n\\n\\n \\n\\n\", styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\\n\"], components: [{ type: MatSidenavContent, selector: \"mat-sidenav-content\" }], directives: [{ type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-sidenav-container', exportAs: 'matSidenavContainer', host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer,\n },\n ], template: \"
\\n\\n\\n\\n\\n\\n\\n \\n\\n\", styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\\n\"] }]\n }], propDecorators: { _allDrawers: [{\n type: ContentChildren,\n args: [MatSidenav, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }], _content: [{\n type: ContentChild,\n args: [MatSidenavContent]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSidenavModule {\n}\nMatSidenavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatSidenavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavModule, declarations: [MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent], imports: [CommonModule, MatCommonModule, CdkScrollableModule], exports: [CdkScrollableModule,\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent] });\nMatSidenavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavModule, imports: [[CommonModule, MatCommonModule, CdkScrollableModule], CdkScrollableModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSidenavModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule, CdkScrollableModule],\n exports: [\n CdkScrollableModule,\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_DRAWER_DEFAULT_AUTOSIZE, MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, MatDrawer, MatDrawerContainer, MatDrawerContent, MatSidenav, MatSidenavContainer, MatSidenavContent, MatSidenavModule, matDrawerAnimations, throwMatDuplicatedDrawerError };\n","import * as i0 from '@angular/core';\nimport { Injectable, Optional, SkipSelf, InjectionToken, EventEmitter, Directive, Inject, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SPACE, ENTER } from '@angular/cdk/keycodes';\nimport { AnimationDurations, AnimationCurves, mixinInitialized, mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport { Subject, merge } from 'rxjs';\nimport { trigger, state, style, transition, animate, keyframes, query, animateChild } from '@angular/animations';\nimport * as i3 from '@angular/cdk/a11y';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' + AnimationCurves.STANDARD_CURVE;\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nconst matSortAnimations = {\n /** Animation that moves the sort indicator. */\n indicator: trigger('indicator', [\n state('active-asc, asc', style({ transform: 'translateY(0px)' })),\n // 10px is the height of the sort indicator, minus the width of the pointers\n state('active-desc, desc', style({ transform: 'translateY(10px)' })),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n leftPointer: trigger('leftPointer', [\n state('active-asc, asc', style({ transform: 'rotate(-45deg)' })),\n state('active-desc, desc', style({ transform: 'rotate(45deg)' })),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n rightPointer: trigger('rightPointer', [\n state('active-asc, asc', style({ transform: 'rotate(45deg)' })),\n state('active-desc, desc', style({ transform: 'rotate(-45deg)' })),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /** Animation that controls the arrow opacity. */\n arrowOpacity: trigger('arrowOpacity', [\n state('desc-to-active, asc-to-active, active', style({ opacity: 1 })),\n state('desc-to-hint, asc-to-hint, hint', style({ opacity: 0.54 })),\n state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void', style({ opacity: 0 })),\n // Transition between all states except for immediate transitions\n transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /**\n * Animation for the translation of the arrow as a whole. States are separated into two\n * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n * peek, and active. The other states define a specific animation (source-to-destination)\n * and are determined as a function of their prev user-perceived state and what the next state\n * should be.\n */\n arrowPosition: trigger('arrowPosition', [\n // Hidden Above => Hint Center\n transition('* => desc-to-hint, * => desc-to-active', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(-25%)' }), style({ transform: 'translateY(0)' })]))),\n // Hint Center => Hidden Below\n transition('* => hint-to-desc, * => active-to-desc', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(0)' }), style({ transform: 'translateY(25%)' })]))),\n // Hidden Below => Hint Center\n transition('* => asc-to-hint, * => asc-to-active', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(25%)' }), style({ transform: 'translateY(0)' })]))),\n // Hint Center => Hidden Above\n transition('* => hint-to-asc, * => active-to-asc', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(0)' }), style({ transform: 'translateY(-25%)' })]))),\n state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active', style({ transform: 'translateY(0)' })),\n state('hint-to-desc, active-to-desc, desc', style({ transform: 'translateY(-25%)' })),\n state('hint-to-asc, active-to-asc, asc', style({ transform: 'translateY(25%)' })),\n ]),\n /** Necessary trigger that calls animate on children animations. */\n allowChildren: trigger('allowChildren', [\n transition('* <=> *', [query('@*', animateChild(), { optional: true })]),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction getSortDuplicateSortableIdError(id) {\n return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n/** @docs-private */\nfunction getSortHeaderNotContainedWithinSortError() {\n return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n/** @docs-private */\nfunction getSortHeaderMissingIdError() {\n return Error(`MatSortHeader must be provided with a unique id.`);\n}\n/** @docs-private */\nfunction getSortInvalidDirectionError(direction) {\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\nclass MatSortHeaderIntl {\n constructor() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n }\n}\nMatSortHeaderIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortHeaderIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMatSortHeaderIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortHeaderIntl, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortHeaderIntl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** @docs-private */\nfunction MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl) {\n return parentIntl || new MatSortHeaderIntl();\n}\n/** @docs-private */\nconst MAT_SORT_HEADER_INTL_PROVIDER = {\n // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n provide: MatSortHeaderIntl,\n deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token to be used to override the default options for `mat-sort`. */\nconst MAT_SORT_DEFAULT_OPTIONS = new InjectionToken('MAT_SORT_DEFAULT_OPTIONS');\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nconst _MatSortBase = mixinInitialized(mixinDisabled(class {\n}));\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\nclass MatSort extends _MatSortBase {\n constructor(_defaultOptions) {\n super();\n this._defaultOptions = _defaultOptions;\n /** Collection of all registered sortables that this directive manages. */\n this.sortables = new Map();\n /** Used to notify any child components listening to state changes. */\n this._stateChanges = new Subject();\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overriden by the MatSortable's sort start.\n */\n this.start = 'asc';\n this._direction = '';\n /** Event emitted when the user changes either the active sort or sort direction. */\n this.sortChange = new EventEmitter();\n }\n /** The sort direction of the currently active MatSortable. */\n get direction() {\n return this._direction;\n }\n set direction(direction) {\n if (direction &&\n direction !== 'asc' &&\n direction !== 'desc' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overriden by the MatSortable's disable clear input.\n */\n get disableClear() {\n return this._disableClear;\n }\n set disableClear(v) {\n this._disableClear = coerceBooleanProperty(v);\n }\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n */\n register(sortable) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n }\n this.sortables.set(sortable.id, sortable);\n }\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n */\n deregister(sortable) {\n this.sortables.delete(sortable.id);\n }\n /** Sets the active sort id and determines the new sort direction. */\n sort(sortable) {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n }\n else {\n this.direction = this.getNextSortDirection(sortable);\n }\n this.sortChange.emit({ active: this.active, direction: this.direction });\n }\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n getNextSortDirection(sortable) {\n var _a, _b, _c;\n if (!sortable) {\n return '';\n }\n // Get the sort direction cycle with the potential sortable overrides.\n const disableClear = (_b = (_a = sortable === null || sortable === void 0 ? void 0 : sortable.disableClear) !== null && _a !== void 0 ? _a : this.disableClear) !== null && _b !== void 0 ? _b : !!((_c = this._defaultOptions) === null || _c === void 0 ? void 0 : _c.disableClear);\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n // Get and return the next direction in the cycle\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) {\n nextDirectionIndex = 0;\n }\n return sortDirectionCycle[nextDirectionIndex];\n }\n ngOnInit() {\n this._markInitialized();\n }\n ngOnChanges() {\n this._stateChanges.next();\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\nMatSort.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSort, deps: [{ token: MAT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatSort.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatSort, selector: \"[matSort]\", inputs: { disabled: [\"matSortDisabled\", \"disabled\"], active: [\"matSortActive\", \"active\"], start: [\"matSortStart\", \"start\"], direction: [\"matSortDirection\", \"direction\"], disableClear: [\"matSortDisableClear\", \"disableClear\"] }, outputs: { sortChange: \"matSortChange\" }, host: { classAttribute: \"mat-sort\" }, exportAs: [\"matSort\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSort, decorators: [{\n type: Directive,\n args: [{\n selector: '[matSort]',\n exportAs: 'matSort',\n host: { 'class': 'mat-sort' },\n inputs: ['disabled: matSortDisabled'],\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SORT_DEFAULT_OPTIONS]\n }] }];\n }, propDecorators: { active: [{\n type: Input,\n args: ['matSortActive']\n }], start: [{\n type: Input,\n args: ['matSortStart']\n }], direction: [{\n type: Input,\n args: ['matSortDirection']\n }], disableClear: [{\n type: Input,\n args: ['matSortDisableClear']\n }], sortChange: [{\n type: Output,\n args: ['matSortChange']\n }] } });\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start, disableClear) {\n let sortOrder = ['asc', 'desc'];\n if (start == 'desc') {\n sortOrder.reverse();\n }\n if (!disableClear) {\n sortOrder.push('');\n }\n return sortOrder;\n}\n\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nconst _MatSortHeaderBase = mixinDisabled(class {\n});\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\nclass MatSortHeader extends _MatSortHeaderBase {\n constructor(\n /**\n * @deprecated `_intl` parameter isn't being used anymore and it'll be removed.\n * @breaking-change 13.0.0\n */\n _intl, _changeDetectorRef, \n // `MatSort` is not optionally injected, but just asserted manually w/ better error.\n // tslint:disable-next-line: lightweight-tokens\n _sort, _columnDef, _focusMonitor, _elementRef, \n /** @breaking-change 14.0.0 _ariaDescriber will be required. */\n _ariaDescriber) {\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\n // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n // and we want to avoid having the sort header depending on the CDK table because\n // of this single reference.\n super();\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._sort = _sort;\n this._columnDef = _columnDef;\n this._focusMonitor = _focusMonitor;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n /**\n * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n * provide an affordance that the header is sortable by showing on focus and hover.\n */\n this._showIndicatorHint = false;\n /**\n * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n * position through the animation. If animations are currently disabled, the fromState is removed\n * so that there is no animation displayed.\n */\n this._viewState = {};\n /** The direction the arrow should be facing according to the current state. */\n this._arrowDirection = '';\n /**\n * Whether the view state animation should show the transition between the `from` and `to` states.\n */\n this._disableViewStateAnimation = false;\n /** Sets the position of the arrow that displays when sorted. */\n this.arrowPosition = 'after';\n // Default the action description to \"Sort\" because it's better than nothing.\n // Without a description, the button's label comes from the sort header text content,\n // which doesn't give any indication that it performs a sorting operation.\n this._sortActionDescription = 'Sort';\n if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n this._handleStateChanges();\n }\n /**\n * Description applied to MatSortHeader's button element with aria-describedby. This text should\n * describe the action that will occur when the user clicks the sort header.\n */\n get sortActionDescription() {\n return this._sortActionDescription;\n }\n set sortActionDescription(value) {\n this._updateSortActionDescription(value);\n }\n /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n get disableClear() {\n return this._disableClear;\n }\n set disableClear(v) {\n this._disableClear = coerceBooleanProperty(v);\n }\n ngOnInit() {\n if (!this.id && this._columnDef) {\n this.id = this._columnDef.name;\n }\n // Initialize the direction of the arrow and set the view state to be immediately that state.\n this._updateArrowDirection();\n this._setAnimationTransitionState({\n toState: this._isSorted() ? 'active' : this._arrowDirection,\n });\n this._sort.register(this);\n this._sortButton = this._elementRef.nativeElement.querySelector('.mat-sort-header-container');\n this._updateSortActionDescription(this._sortActionDescription);\n }\n ngAfterViewInit() {\n // We use the focus monitor because we also want to style\n // things differently based on the focus origin.\n this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n const newState = !!origin;\n if (newState !== this._showIndicatorHint) {\n this._setIndicatorHintVisible(newState);\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n }\n /**\n * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n * user showing what the active sort will become. If set to false, the arrow will fade away.\n */\n _setIndicatorHintVisible(visible) {\n // No-op if the sort header is disabled - should not make the hint visible.\n if (this._isDisabled() && visible) {\n return;\n }\n this._showIndicatorHint = visible;\n if (!this._isSorted()) {\n this._updateArrowDirection();\n if (this._showIndicatorHint) {\n this._setAnimationTransitionState({ fromState: this._arrowDirection, toState: 'hint' });\n }\n else {\n this._setAnimationTransitionState({ fromState: 'hint', toState: this._arrowDirection });\n }\n }\n }\n /**\n * Sets the animation transition view state for the arrow's position and opacity. If the\n * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n * no animation appears.\n */\n _setAnimationTransitionState(viewState) {\n this._viewState = viewState || {};\n // If the animation for arrow position state (opacity/translation) should be disabled,\n // remove the fromState so that it jumps right to the toState.\n if (this._disableViewStateAnimation) {\n this._viewState = { toState: viewState.toState };\n }\n }\n /** Triggers the sort on this sort header and removes the indicator hint. */\n _toggleOnInteraction() {\n this._sort.sort(this);\n // Do not show the animation if the header was already shown in the right position.\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n this._disableViewStateAnimation = true;\n }\n }\n _handleClick() {\n if (!this._isDisabled()) {\n this._sort.sort(this);\n }\n }\n _handleKeydown(event) {\n if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n event.preventDefault();\n this._toggleOnInteraction();\n }\n }\n /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n _isSorted() {\n return (this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc'));\n }\n /** Returns the animation state for the arrow direction (indicator and pointers). */\n _getArrowDirectionState() {\n return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n }\n /** Returns the arrow position state (opacity, translation). */\n _getArrowViewState() {\n const fromState = this._viewState.fromState;\n return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n }\n /**\n * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n * active sorted direction. The reason this is updated through a function is because the direction\n * should only be changed at specific times - when deactivated but the hint is displayed and when\n * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n * preserving its direction, even though the next sort direction is actually different and should\n * only be changed once the arrow displays again (hint or activation).\n */\n _updateArrowDirection() {\n this._arrowDirection = this._isSorted() ? this._sort.direction : this.start || this._sort.start;\n }\n _isDisabled() {\n return this._sort.disabled || this.disabled;\n }\n /**\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n * says that the aria-sort property should only be present on one header at a time, so removing\n * ensures this is true.\n */\n _getAriaSortAttribute() {\n if (!this._isSorted()) {\n return 'none';\n }\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n }\n /** Whether the arrow inside the sort header should be rendered. */\n _renderArrow() {\n return !this._isDisabled() || this._isSorted();\n }\n _updateSortActionDescription(newDescription) {\n var _a, _b;\n // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\n // screen readers (notably VoiceOver) will read both the column header *and* the button's label\n // for every *cell* in the table, creating a lot of unnecessary noise.\n // If _sortButton is undefined, the component hasn't been initialized yet so there's\n // nothing to update in the DOM.\n if (this._sortButton) {\n // removeDescription will no-op if there is no existing message.\n // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\n (_a = this._ariaDescriber) === null || _a === void 0 ? void 0 : _a.removeDescription(this._sortButton, this._sortActionDescription);\n (_b = this._ariaDescriber) === null || _b === void 0 ? void 0 : _b.describe(this._sortButton, newDescription);\n }\n this._sortActionDescription = newDescription;\n }\n /** Handles changes in the sorting state. */\n _handleStateChanges() {\n this._rerenderSubscription = merge(this._sort.sortChange, this._sort._stateChanges, this._intl.changes).subscribe(() => {\n if (this._isSorted()) {\n this._updateArrowDirection();\n // Do not show the animation if the header was already shown in the right position.\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n this._disableViewStateAnimation = true;\n }\n this._setAnimationTransitionState({ fromState: this._arrowDirection, toState: 'active' });\n this._showIndicatorHint = false;\n }\n // If this header was recently active and now no longer sorted, animate away the arrow.\n if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n this._disableViewStateAnimation = false;\n this._setAnimationTransitionState({ fromState: 'active', toState: this._arrowDirection });\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n}\nMatSortHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortHeader, deps: [{ token: MatSortHeaderIntl }, { token: i0.ChangeDetectorRef }, { token: MatSort, optional: true }, { token: 'MAT_SORT_HEADER_COLUMN_DEF', optional: true }, { token: i3.FocusMonitor }, { token: i0.ElementRef }, { token: i3.AriaDescriber, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatSortHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatSortHeader, selector: \"[mat-sort-header]\", inputs: { disabled: \"disabled\", id: [\"mat-sort-header\", \"id\"], arrowPosition: \"arrowPosition\", start: \"start\", sortActionDescription: \"sortActionDescription\", disableClear: \"disableClear\" }, host: { listeners: { \"click\": \"_handleClick()\", \"keydown\": \"_handleKeydown($event)\", \"mouseenter\": \"_setIndicatorHintVisible(true)\", \"mouseleave\": \"_setIndicatorHintVisible(false)\" }, properties: { \"attr.aria-sort\": \"_getAriaSortAttribute()\", \"class.mat-sort-header-disabled\": \"_isDisabled()\" }, classAttribute: \"mat-sort-header\" }, exportAs: [\"matSortHeader\"], usesInheritance: true, ngImport: i0, template: \"\\n
\\n\\n \\n
\\n \\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\", styles: [\".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\\n\"], directives: [{ type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [\n matSortAnimations.indicator,\n matSortAnimations.leftPointer,\n matSortAnimations.rightPointer,\n matSortAnimations.arrowOpacity,\n matSortAnimations.arrowPosition,\n matSortAnimations.allowChildren,\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortHeader, decorators: [{\n type: Component,\n args: [{ selector: '[mat-sort-header]', exportAs: 'matSortHeader', host: {\n 'class': 'mat-sort-header',\n '(click)': '_handleClick()',\n '(keydown)': '_handleKeydown($event)',\n '(mouseenter)': '_setIndicatorHintVisible(true)',\n '(mouseleave)': '_setIndicatorHintVisible(false)',\n '[attr.aria-sort]': '_getAriaSortAttribute()',\n '[class.mat-sort-header-disabled]': '_isDisabled()',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], animations: [\n matSortAnimations.indicator,\n matSortAnimations.leftPointer,\n matSortAnimations.rightPointer,\n matSortAnimations.arrowOpacity,\n matSortAnimations.arrowPosition,\n matSortAnimations.allowChildren,\n ], template: \"\\n
\\n\\n \\n
\\n \\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\", styles: [\".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: MatSortHeaderIntl }, { type: i0.ChangeDetectorRef }, { type: MatSort, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: ['MAT_SORT_HEADER_COLUMN_DEF']\n }, {\n type: Optional\n }] }, { type: i3.FocusMonitor }, { type: i0.ElementRef }, { type: i3.AriaDescriber, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { id: [{\n type: Input,\n args: ['mat-sort-header']\n }], arrowPosition: [{\n type: Input\n }], start: [{\n type: Input\n }], sortActionDescription: [{\n type: Input\n }], disableClear: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSortModule {\n}\nMatSortModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatSortModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortModule, declarations: [MatSort, MatSortHeader], imports: [CommonModule, MatCommonModule], exports: [MatSort, MatSortHeader] });\nMatSortModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortModule, providers: [MAT_SORT_HEADER_INTL_PROVIDER], imports: [[CommonModule, MatCommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatSortModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatSort, MatSortHeader],\n declarations: [MatSort, MatSortHeader],\n providers: [MAT_SORT_HEADER_INTL_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SORT_DEFAULT_OPTIONS, MAT_SORT_HEADER_INTL_PROVIDER, MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, MatSort, MatSortHeader, MatSortHeaderIntl, MatSortModule, matSortAnimations };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, isDataSource, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Input, ContentChild, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, EventEmitter, NgZone, Attribute, SkipSelf, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { Subject, from, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/bidi';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkCellDef, selector: \"[cdkCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkHeaderCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterCellDef, selector: \"[cdkFooterCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkFooterCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n// Boilerplate for applying mixins to CdkColumnDef.\n/** @docs-private */\nclass CdkColumnDefBase {\n}\nconst _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef extends _CdkColumnDefBase {\n constructor(_table) {\n super();\n this._table = _table;\n this._stickyEnd = false;\n }\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(v) {\n const prevValue = this._stickyEnd;\n this._stickyEnd = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._stickyEnd;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n}\nCdkColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkColumnDef, deps: [{ token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: { sticky: \"sticky\", name: [\"cdkColumnDef\", \"name\"], stickyEnd: \"stickyEnd\" }, providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }], queries: [{ propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true }, { propertyName: \"footerCell\", first: true, predicate: CdkFooterCellDef, descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n inputs: ['sticky'],\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }],\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], stickyEnd: [{\n type: Input,\n args: ['stickyEnd']\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] } });\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"cdk-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n var _a;\n super(columnDef, elementRef);\n if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterCell, selector: \"cdk-footer-cell, td[cdk-footer-cell]\", host: { classAttribute: \"cdk-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n var _a;\n super(columnDef, elementRef);\n if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\", host: { classAttribute: \"cdk-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n this._currentSchedule = null;\n this._destroyed = new Subject();\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n /** Prevent any further tasks from running. */\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._getScheduleObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n });\n }\n _getScheduleObservable() {\n // Use onStable when in the context of an ongoing change detection cycle so that we\n // do not accidentally trigger additional cycles.\n return this._ngZone.isStable\n ? from(Promise.resolve(undefined))\n : this._ngZone.onStable.pipe(take(1));\n }\n}\n_CoalescedStyleScheduler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _CoalescedStyleScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\n_CoalescedStyleScheduler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _CoalescedStyleScheduler });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n}\nBaseRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nBaseRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: BaseRowDef, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseRowDef, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }]; } });\n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/** @docs-private */\nclass CdkHeaderRowDefBase extends BaseRowDef {\n}\nconst _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends _CdkHeaderRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderRowDef, selector: \"[cdkHeaderRowDef]\", inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n// Boilerplate for applying mixins to CdkFooterRowDef.\n/** @docs-private */\nclass CdkFooterRowDefBase extends BaseRowDef {\n}\nconst _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends _CdkFooterRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterRowDef, selector: \"[cdkFooterRowDef]\", inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n}\nCdkRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkRowDef, selector: \"[cdkRowDef]\", inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n}\n/**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\nCdkCellOutlet.mostRecentCellOutlet = null;\nCdkCellOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkCellOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n}\nCdkHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkHeaderRow, selector: \"cdk-header-row, tr[cdk-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-header-row\" }, ngImport: i0, template: \"\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n}\nCdkFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFooterRow, selector: \"cdk-footer-row, tr[cdk-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-footer-row\" }, ngImport: i0, template: \"\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n}\nCdkRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkRow, selector: \"cdk-row, tr[cdk-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-row\" }, ngImport: i0, template: \"\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._contentClassName = 'cdk-no-data-row';\n }\n}\nCdkNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkNoDataRow, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkNoDataRow, selector: \"ng-template[cdkNoDataRow]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length ||\n !this._isBrowser ||\n !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1\n ? []\n : cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => (stickyStartStates[index] ? width : null)),\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1\n ? []\n : cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))\n .reverse(),\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable\n ? Array.from(row.children)\n : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n var _a, _b;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n (_a = this._positionListener) === null || _a === void 0 ? void 0 : _a.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n else {\n (_b = this._positionListener) === null || _b === void 0 ? void 0 : _b.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n const tfoot = tableElement.querySelector('tfoot');\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to find an unexisting column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass CdkRecycleRows {\n}\nCdkRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkRecycleRows, selector: \"cdk-table[recycleRows], table[cdk-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: DataRowOutlet, selector: \"[rowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[rowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nHeaderRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HeaderRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HeaderRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[headerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nFooterRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FooterRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFooterRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FooterRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[footerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nNoDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoDataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoDataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[noDataRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n \n \n \n \n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, _viewRepeater, _coalescedStyleScheduler, _viewportRuler, \n /**\n * @deprecated `_stickyPositioningListener` parameter to become required.\n * @breaking-change 13.0.0\n */\n _stickyPositioningListener, \n /**\n * @deprecated `_ngZone` parameter to become required.\n * @breaking-change 14.0.0\n */\n _ngZone) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._viewportRuler = _viewportRuler;\n this._stickyPositioningListener = _stickyPositioningListener;\n this._ngZone = _ngZone;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overriden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add positon: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n this.contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._document = _document;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(v) {\n this._multiTemplateDataRows = coerceBooleanProperty(v);\n // In Ivy if this value is set via a static attribute (e.g.
),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(v) {\n this._fixedLayout = coerceBooleanProperty(v);\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n ngOnInit() {\n this._setupStickyStyler();\n if (this._isNativeHtmlTable) {\n this._applyNativeTableSections();\n }\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentChecked() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length &&\n !this._footerRowDefs.length &&\n !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n ngOnDestroy() {\n [\n this._rowOutlet.viewContainer,\n this._headerRowOutlet.viewContainer,\n this._footerRowOutlet.viewContainer,\n this._cachedRenderRowsMap,\n this._customColumnDefs,\n this._customRowDefs,\n this._customHeaderRowDefs,\n this._customFooterRowDefs,\n this._columnDefsByName,\n ].forEach(def => {\n def.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, (change) => {\n if (change.operation === 1 /* INSERTED */ && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n // Allow the new row data to render before measuring it.\n // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.\n if (this._ngZone && NgZone.isInAngularZone()) {\n this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n this.updateStickyColumnStyles();\n });\n }\n else {\n this.updateStickyColumnStyles();\n }\n this.contentChanged.next();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const thead = tableElement.querySelector('thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows &&\n defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n this._rowOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n _applyNativeTableSections() {\n const documentFragment = this._document.createDocumentFragment();\n const sections = [\n { tag: 'thead', outlets: [this._headerRowOutlet] },\n { tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet] },\n { tag: 'tfoot', outlets: [this._footerRowOutlet] },\n ];\n for (const section of sections) {\n const element = this._document.createElement(section.tag);\n element.setAttribute('role', 'rowgroup');\n for (const outlet of section.outlets) {\n element.appendChild(outlet.elementRef.nativeElement);\n }\n documentFragment.appendChild(element);\n }\n // Use a DocumentFragment so we don't hit the DOM on each iteration.\n this._elementRef.nativeElement.appendChild(documentFragment);\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && (rootNode === null || rootNode === void 0 ? void 0 : rootNode.nodeType) === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n }\n else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n }\n}\nCdkTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTable, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: 'role', attribute: true }, { token: i1.Directionality, optional: true }, { token: DOCUMENT }, { token: i2.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i3.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTable, selector: \"cdk-table, table[cdk-table]\", inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\", fixedLayout: \"fixedLayout\" }, outputs: { contentChanged: \"contentChanged\" }, host: { properties: { \"class.cdk-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"cdk-table\" }, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], queries: [{ propertyName: \"_noDataRow\", first: true, predicate: CdkNoDataRow, descendants: true }, { propertyName: \"_contentColumnDefs\", predicate: CdkColumnDef, descendants: true }, { propertyName: \"_contentRowDefs\", predicate: CdkRowDef, descendants: true }, { propertyName: \"_contentHeaderRowDefs\", predicate: CdkHeaderRowDef, descendants: true }, { propertyName: \"_contentFooterRowDefs\", predicate: CdkFooterRowDef, descendants: true }], viewQueries: [{ propertyName: \"_rowOutlet\", first: true, predicate: DataRowOutlet, descendants: true, static: true }, { propertyName: \"_headerRowOutlet\", first: true, predicate: HeaderRowOutlet, descendants: true, static: true }, { propertyName: \"_footerRowOutlet\", first: true, predicate: FooterRowOutlet, descendants: true, static: true }, { propertyName: \"_noDataRowOutlet\", first: true, predicate: NoDataRowOutlet, descendants: true, static: true }], exportAs: [\"cdkTable\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n\", isInline: true, styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"], directives: [{ type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { type: DataRowOutlet, selector: \"[rowOutlet]\" }, { type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTable, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-table, table[cdk-table]', exportAs: 'cdkTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input\n }], fixedLayout: [{\n type: Input\n }], contentChanged: [{\n type: Output\n }], _rowOutlet: [{\n type: ViewChild,\n args: [DataRowOutlet, { static: true }]\n }], _headerRowOutlet: [{\n type: ViewChild,\n args: [HeaderRowOutlet, { static: true }]\n }], _footerRowOutlet: [{\n type: ViewChild,\n args: [FooterRowOutlet, { static: true }]\n }], _noDataRowOutlet: [{\n type: ViewChild,\n args: [NoDataRowOutlet, { static: true }]\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true,\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true,\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] } });\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n}\nCdkTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextColumn, deps: [{ token: CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTextColumn, selector: \"cdk-text-column\", inputs: { name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\", justify: \"justify\" }, viewQueries: [{ propertyName: \"columnDef\", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: [\"sticky\", \"cdkColumnDef\", \"stickyEnd\"] }, { type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\" }, { type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\" }, { type: CdkCellDef, selector: \"[cdkCellDef]\" }, { type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }], ctorParameters: function () {\n return [{ type: CdkTable, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TEXT_COLUMN_OPTIONS]\n }] }];\n }, propDecorators: { name: [{\n type: Input\n }], headerText: [{\n type: Input\n }], dataAccessor: [{\n type: Input\n }], justify: [{\n type: Input\n }], columnDef: [{\n type: ViewChild,\n args: [CdkColumnDef, { static: true }]\n }], cell: [{\n type: ViewChild,\n args: [CdkCellDef, { static: true }]\n }], headerCell: [{\n type: ViewChild,\n args: [CdkHeaderCellDef, { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet,\n];\nclass CdkTableModule {\n}\nCdkTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, declarations: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet], imports: [ScrollingModule], exports: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet] });\nCdkTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, imports: [[ScrollingModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n imports: [ScrollingModule],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRecycleRows, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n","import * as i0 from '@angular/core';\nimport { Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/table';\nimport { CdkTable, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, STICKY_POSITIONING_LISTENER, CDK_TABLE_TEMPLATE, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass MatRecycleRows {\n}\nMatRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatRecycleRows, selector: \"mat-table[recycleRows], table[mat-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-table[recycleRows], table[mat-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nclass MatTable extends CdkTable {\n constructor() {\n super(...arguments);\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n this.stickyCssClass = 'mat-table-sticky';\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n this.needsPositionStickyOnElement = false;\n }\n}\nMatTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTable, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTable, selector: \"mat-table, table[mat-table]\", host: { properties: { \"class.mat-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"mat-table\" }, providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], exportAs: [\"matTable\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n\", isInline: true, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"], directives: [{ type: i1.HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { type: i1.DataRowOutlet, selector: \"[rowOutlet]\" }, { type: i1.NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { type: i1.FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTable, decorators: [{\n type: Component,\n args: [{ selector: 'mat-table, table[mat-table]', exportAs: 'matTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'mat-table',\n '[class.mat-table-fixed-layout]': 'fixedLayout',\n }, providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"] }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass MatCellDef extends CdkCellDef {\n}\nMatCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCellDef, selector: \"[matCellDef]\", providers: [{ provide: CdkCellDef, useExisting: MatCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }],\n }]\n }] });\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass MatHeaderCellDef extends CdkHeaderCellDef {\n}\nMatHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\", providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }],\n }]\n }] });\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass MatFooterCellDef extends CdkFooterCellDef {\n}\nMatFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatFooterCellDef, selector: \"[matFooterCellDef]\", providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterCellDef]',\n providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }],\n }]\n }] });\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nclass MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n}\nMatColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatColumnDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatColumnDef, selector: \"[matColumnDef]\", inputs: { sticky: \"sticky\", name: [\"matColumnDef\", \"name\"] }, providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matColumnDef]',\n inputs: ['sticky'],\n providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ],\n }]\n }], propDecorators: { name: [{\n type: Input,\n args: ['matColumnDef']\n }] } });\n/** Header cell template container that adds the right classes and role. */\nclass MatHeaderCell extends CdkHeaderCell {\n}\nMatHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"mat-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n }]\n }] });\n/** Footer cell template container that adds the right classes and role. */\nclass MatFooterCell extends CdkFooterCell {\n}\nMatFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n }]\n }] });\n/** Cell template container that adds the right classes and role. */\nclass MatCell extends CdkCell {\n}\nMatCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCell, selector: \"mat-cell, td[mat-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass MatHeaderRowDef extends CdkHeaderRowDef {\n}\nMatHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: { columns: [\"matHeaderRowDef\", \"columns\"], sticky: [\"matHeaderRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n }]\n }] });\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass MatFooterRowDef extends CdkFooterRowDef {\n}\nMatFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: { columns: [\"matFooterRowDef\", \"columns\"], sticky: [\"matFooterRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterRowDef]',\n providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n }]\n }] });\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass MatRowDef extends CdkRowDef {\n}\nMatRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatRowDef, selector: \"[matRowDef]\", inputs: { columns: [\"matRowDefColumns\", \"columns\"], when: [\"matRowDefWhen\", \"when\"] }, providers: [{ provide: CdkRowDef, useExisting: MatRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n }]\n }] });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass MatHeaderRow extends CdkHeaderRow {\n}\nMatHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-header-row\" }, providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }], exportAs: [\"matHeaderRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass MatFooterRow extends CdkFooterRow {\n}\nMatFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-footer-row\" }, providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }], exportAs: [\"matFooterRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass MatRow extends CdkRow {\n}\nMatRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatRow, selector: \"mat-row, tr[mat-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-row\" }, providers: [{ provide: CdkRow, useExisting: MatRow }], exportAs: [\"matRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{ provide: CdkRow, useExisting: MatRow }],\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass MatNoDataRow extends CdkNoDataRow {\n constructor() {\n super(...arguments);\n this._contentClassName = 'mat-no-data-row';\n }\n}\nMatNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatNoDataRow, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatNoDataRow, selector: \"ng-template[matNoDataRow]\", providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matNoDataRow]',\n providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass MatTextColumn extends CdkTextColumn {\n}\nMatTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTextColumn, selector: \"mat-text-column\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, directives: [{ type: MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"sticky\", \"matColumnDef\"] }, { type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { type: MatCellDef, selector: \"[matCellDef]\" }, { type: MatCell, selector: \"mat-cell, td[mat-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn,\n];\nclass MatTableModule {\n}\nMatTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTableModule, declarations: [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn\n ], imports: [CdkTableModule, MatCommonModule], exports: [MatCommonModule,\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn] });\nMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTableModule, imports: [[CdkTableModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkTableModule, MatCommonModule],\n exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n declarations: EXPORTED_DECLARATIONS,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/** Shared base class with MDC-based implementation. */\nclass _MatTableDataSource extends DataSource {\n constructor(initialData = []) {\n super();\n /** Stream emitting render data to the table (depends on ordered data changes). */\n this._renderData = new BehaviorSubject([]);\n /** Stream that emits when a new filter string is set on the data source. */\n this._filter = new BehaviorSubject('');\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n this._internalPageChanges = new Subject();\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n this._renderChangesSubscription = null;\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n this.sortingDataAccessor = (data, sortHeaderId) => {\n const value = data[sortHeaderId];\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n return value;\n };\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n this.sortData = (data, sort) => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n }\n else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n else if (valueA != null) {\n comparatorResult = 1;\n }\n else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n this.filterPredicate = (data, filter) => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + data[key] + '◬';\n }, '')\n .toLowerCase();\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n return dataStr.indexOf(transformedFilter) != -1;\n };\n this._data = new BehaviorSubject(initialData);\n this._updateChangeSubscription();\n }\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n set data(data) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter() {\n return this._filter.value;\n }\n set filter(filter) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort() {\n return this._sort;\n }\n set sort(sort) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator() {\n return this._paginator;\n }\n set paginator(paginator) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n var _a;\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange = this._sort\n ? merge(this._sort.sortChange, this._sort.initialized)\n : of(null);\n const pageChange = this._paginator\n ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized)\n : of(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n this.filter == null || this.filter === ''\n ? data\n : data.filter(obj => this.filterPredicate(obj, this.filter));\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n return this.filteredData;\n }\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data) {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n return this.sortData(data.slice(), this.sort);\n }\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data) {\n if (!this.paginator) {\n return data;\n }\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n if (!paginator) {\n return;\n }\n paginator.length = filteredDataLength;\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n return this._renderData;\n }\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n var _a;\n (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nclass MatTableDataSource extends _MatTableDataSource {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRecycleRows, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };\n","import * as i0 from '@angular/core';\nimport { Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, ContentChildren, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/platform';\n\n// Boilerplate for applying mixins to MatToolbar.\n/** @docs-private */\nconst _MatToolbarBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n});\nclass MatToolbarRow {\n}\nMatToolbarRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarRow, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatToolbarRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatToolbarRow, selector: \"mat-toolbar-row\", host: { classAttribute: \"mat-toolbar-row\" }, exportAs: [\"matToolbarRow\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: { 'class': 'mat-toolbar-row' },\n }]\n }] });\nclass MatToolbar extends _MatToolbarBase {\n constructor(elementRef, _platform, document) {\n super(elementRef);\n this._platform = _platform;\n // TODO: make the document a required param when doing breaking changes.\n this._document = document;\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._checkToolbarMixedModes();\n this._toolbarRows.changes.subscribe(() => this._checkToolbarMixedModes());\n }\n }\n /**\n * Throws an exception when developers are attempting to combine the different toolbar row modes.\n */\n _checkToolbarMixedModes() {\n if (this._toolbarRows.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n // Check if there are any other DOM nodes that can display content but aren't inside of\n // a element.\n const isCombinedUsage = Array.from(this._elementRef.nativeElement.childNodes)\n .filter(node => !(node.classList && node.classList.contains('mat-toolbar-row')))\n .filter(node => node.nodeType !== (this._document ? this._document.COMMENT_NODE : 8))\n .some(node => !!(node.textContent && node.textContent.trim()));\n if (isCombinedUsage) {\n throwToolbarMixedModesError();\n }\n }\n }\n}\nMatToolbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbar, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });\nMatToolbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatToolbar, selector: \"mat-toolbar\", inputs: { color: \"color\" }, host: { properties: { \"class.mat-toolbar-multiple-rows\": \"_toolbarRows.length > 0\", \"class.mat-toolbar-single-row\": \"_toolbarRows.length === 0\" }, classAttribute: \"mat-toolbar\" }, queries: [{ propertyName: \"_toolbarRows\", predicate: MatToolbarRow, descendants: true }], exportAs: [\"matToolbar\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\", styles: [\".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-toolbar', exportAs: 'matToolbar', inputs: ['color'], host: {\n 'class': 'mat-toolbar',\n '[class.mat-toolbar-multiple-rows]': '_toolbarRows.length > 0',\n '[class.mat-toolbar-single-row]': '_toolbarRows.length === 0',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\n\\n\", styles: [\".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { _toolbarRows: [{\n type: ContentChildren,\n args: [MatToolbarRow, { descendants: true }]\n }] } });\n/**\n * Throws an exception when attempting to combine the different toolbar row modes.\n * @docs-private\n */\nfunction throwToolbarMixedModesError() {\n throw Error('MatToolbar: Attempting to combine different toolbar modes. ' +\n 'Either specify multiple `` elements explicitly or just place content ' +\n 'inside of a `` for a single row.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatToolbarModule {\n}\nMatToolbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatToolbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, declarations: [MatToolbar, MatToolbarRow], imports: [MatCommonModule], exports: [MatToolbar, MatToolbarRow, MatCommonModule] });\nMatToolbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, imports: [[MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatToolbarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatToolbar, MatToolbarRow, MatCommonModule],\n declarations: [MatToolbar, MatToolbarRow],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatToolbar, MatToolbarModule, MatToolbarRow, throwToolbarMixedModesError };\n","import { SelectionModel, isDataSource } from '@angular/cdk/collections';\nimport { isObservable, Subject, BehaviorSubject, of } from 'rxjs';\nimport { take, filter, takeUntil } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i2 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Base tree control. It has basic toggle/expand/collapse operations on a single data node. */\nclass BaseTreeControl {\n constructor() {\n /** A selection model with multi-selection to track expansion status. */\n this.expansionModel = new SelectionModel(true);\n }\n /** Toggles one single data node's expanded/collapsed state. */\n toggle(dataNode) {\n this.expansionModel.toggle(this._trackByValue(dataNode));\n }\n /** Expands one single data node. */\n expand(dataNode) {\n this.expansionModel.select(this._trackByValue(dataNode));\n }\n /** Collapses one single data node. */\n collapse(dataNode) {\n this.expansionModel.deselect(this._trackByValue(dataNode));\n }\n /** Whether a given data node is expanded or not. Returns true if the data node is expanded. */\n isExpanded(dataNode) {\n return this.expansionModel.isSelected(this._trackByValue(dataNode));\n }\n /** Toggles a subtree rooted at `node` recursively. */\n toggleDescendants(dataNode) {\n this.expansionModel.isSelected(this._trackByValue(dataNode))\n ? this.collapseDescendants(dataNode)\n : this.expandDescendants(dataNode);\n }\n /** Collapse all dataNodes in the tree. */\n collapseAll() {\n this.expansionModel.clear();\n }\n /** Expands a subtree rooted at given data node recursively. */\n expandDescendants(dataNode) {\n let toBeProcessed = [dataNode];\n toBeProcessed.push(...this.getDescendants(dataNode));\n this.expansionModel.select(...toBeProcessed.map(value => this._trackByValue(value)));\n }\n /** Collapses a subtree rooted at given data node recursively. */\n collapseDescendants(dataNode) {\n let toBeProcessed = [dataNode];\n toBeProcessed.push(...this.getDescendants(dataNode));\n this.expansionModel.deselect(...toBeProcessed.map(value => this._trackByValue(value)));\n }\n _trackByValue(value) {\n return this.trackBy ? this.trackBy(value) : value;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Flat tree control. Able to expand/collapse a subtree recursively for flattened tree. */\nclass FlatTreeControl extends BaseTreeControl {\n /** Construct with flat tree data node functions getLevel and isExpandable. */\n constructor(getLevel, isExpandable, options) {\n super();\n this.getLevel = getLevel;\n this.isExpandable = isExpandable;\n this.options = options;\n if (this.options) {\n this.trackBy = this.options.trackBy;\n }\n }\n /**\n * Gets a list of the data node's subtree of descendent data nodes.\n *\n * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes\n * with correct levels.\n */\n getDescendants(dataNode) {\n const startIndex = this.dataNodes.indexOf(dataNode);\n const results = [];\n // Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.\n // The level of descendants of a tree node must be greater than the level of the given\n // tree node.\n // If we reach a node whose level is equal to the level of the tree node, we hit a sibling.\n // If we reach a node whose level is greater than the level of the tree node, we hit a\n // sibling of an ancestor.\n for (let i = startIndex + 1; i < this.dataNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataNodes[i]); i++) {\n results.push(this.dataNodes[i]);\n }\n return results;\n }\n /**\n * Expands all data nodes in the tree.\n *\n * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened\n * data nodes of the tree.\n */\n expandAll() {\n this.expansionModel.select(...this.dataNodes.map(node => this._trackByValue(node)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type. */\nclass NestedTreeControl extends BaseTreeControl {\n /** Construct with nested tree function getChildren. */\n constructor(getChildren, options) {\n super();\n this.getChildren = getChildren;\n this.options = options;\n if (this.options) {\n this.trackBy = this.options.trackBy;\n }\n }\n /**\n * Expands all dataNodes in the tree.\n *\n * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level\n * data nodes of the tree.\n */\n expandAll() {\n this.expansionModel.clear();\n const allNodes = this.dataNodes.reduce((accumulator, dataNode) => [...accumulator, ...this.getDescendants(dataNode), dataNode], []);\n this.expansionModel.select(...allNodes.map(node => this._trackByValue(node)));\n }\n /** Gets a list of descendant dataNodes of a subtree rooted at given data node recursively. */\n getDescendants(dataNode) {\n const descendants = [];\n this._getDescendants(descendants, dataNode);\n // Remove the node itself\n return descendants.splice(1);\n }\n /** A helper function to get descendants recursively. */\n _getDescendants(descendants, dataNode) {\n descendants.push(dataNode);\n const childrenNodes = this.getChildren(dataNode);\n if (Array.isArray(childrenNodes)) {\n childrenNodes.forEach((child) => this._getDescendants(descendants, child));\n }\n else if (isObservable(childrenNodes)) {\n // TypeScript as of version 3.5 doesn't seem to treat `Boolean` like a function that\n // returns a `boolean` specifically in the context of `filter`, so we manually clarify that.\n childrenNodes.pipe(take(1), filter(Boolean)).subscribe(children => {\n for (const child of children) {\n this._getDescendants(descendants, child);\n }\n });\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to provide a `CdkTreeNode` to its outlet.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst CDK_TREE_NODE_OUTLET_NODE = new InjectionToken('CDK_TREE_NODE_OUTLET_NODE');\n/**\n * Outlet for nested CdkNode. Put `[cdkTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nclass CdkTreeNodeOutlet {\n constructor(viewContainer, _node) {\n this.viewContainer = viewContainer;\n this._node = _node;\n }\n}\nCdkTreeNodeOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: CDK_TREE_NODE_OUTLET_NODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTreeNodeOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTreeNodeOutlet, selector: \"[cdkTreeNodeOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodeOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeOutlet]',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TREE_NODE_OUTLET_NODE]\n }, {\n type: Optional\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Context provided to the tree node component. */\nclass CdkTreeNodeOutletContext {\n constructor(data) {\n this.$implicit = data;\n }\n}\n/**\n * Data node definition for the CdkTree.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\nclass CdkTreeNodeDef {\n /** @docs-private */\n constructor(template) {\n this.template = template;\n }\n}\nCdkTreeNodeDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodeDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTreeNodeDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTreeNodeDef, selector: \"[cdkTreeNodeDef]\", inputs: { when: [\"cdkTreeNodeDefWhen\", \"when\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodeDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeDef]',\n inputs: ['when: cdkTreeNodeDefWhen'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when there is no usable data.\n * @docs-private\n */\nfunction getTreeNoValidDataSourceError() {\n return Error(`A valid data source must be provided.`);\n}\n/**\n * Returns an error to be thrown when there are multiple nodes that are missing a when function.\n * @docs-private\n */\nfunction getTreeMultipleDefaultNodeDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching node defs for a particular set of data.\n * @docs-private\n */\nfunction getTreeMissingMatchingNodeDefError() {\n return Error(`Could not find a matching node definition for the provided node data.`);\n}\n/**\n * Returns an error to be thrown when there are tree control.\n * @docs-private\n */\nfunction getTreeControlMissingError() {\n return Error(`Could not find a tree control for the tree.`);\n}\n/**\n * Returns an error to be thrown when tree control did not implement functions for flat/nested node.\n * @docs-private\n */\nfunction getTreeControlFunctionsMissingError() {\n return Error(`Could not find functions for nested/flat tree in tree control.`);\n}\n\n/**\n * CDK tree component that connects with a data source to retrieve data of type `T` and renders\n * dataNodes with hierarchy. Updates the dataNodes when new data is provided by the data source.\n */\nclass CdkTree {\n constructor(_differs, _changeDetectorRef) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /** Level of nodes */\n this._levels = new Map();\n // TODO(tinayuangao): Setup a listener for scrolling, emit the calculated view to viewChange.\n // Remove the MAX_VALUE in viewChange\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n }\n /**\n * Provides a stream containing the latest data array to render. Influenced by the tree's\n * stream of view window (what dataNodes are currently on screen).\n * Data source can be an observable of data array, or a data array to render.\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n ngOnInit() {\n this._dataDiffer = this._differs.find([]).create(this.trackBy);\n if (!this.treeControl && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeControlMissingError();\n }\n }\n ngOnDestroy() {\n this._nodeOutlet.viewContainer.clear();\n this.viewChange.complete();\n this._onDestroy.next();\n this._onDestroy.complete();\n if (this._dataSource && typeof this._dataSource.disconnect === 'function') {\n this.dataSource.disconnect(this);\n }\n if (this._dataSubscription) {\n this._dataSubscription.unsubscribe();\n this._dataSubscription = null;\n }\n }\n ngAfterContentChecked() {\n const defaultNodeDefs = this._nodeDefs.filter(def => !def.when);\n if (defaultNodeDefs.length > 1 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeMultipleDefaultNodeDefsError();\n }\n this._defaultNodeDef = defaultNodeDefs[0];\n if (this.dataSource && this._nodeDefs && !this._dataSubscription) {\n this._observeRenderChanges();\n }\n }\n // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL\n // and nested trees.\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the node outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n if (this._dataSource && typeof this._dataSource.disconnect === 'function') {\n this.dataSource.disconnect(this);\n }\n if (this._dataSubscription) {\n this._dataSubscription.unsubscribe();\n this._dataSubscription = null;\n }\n // Remove the all dataNodes if there is now no data source\n if (!dataSource) {\n this._nodeOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n if (this._nodeDefs) {\n this._observeRenderChanges();\n }\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n let dataStream;\n if (isDataSource(this._dataSource)) {\n dataStream = this._dataSource.connect(this);\n }\n else if (isObservable(this._dataSource)) {\n dataStream = this._dataSource;\n }\n else if (Array.isArray(this._dataSource)) {\n dataStream = of(this._dataSource);\n }\n if (dataStream) {\n this._dataSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => this.renderNodeChanges(data));\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTreeNoValidDataSourceError();\n }\n }\n /** Check for changes made in the data and render each change (node added/removed/moved). */\n renderNodeChanges(data, dataDiffer = this._dataDiffer, viewContainer = this._nodeOutlet.viewContainer, parentData) {\n const changes = dataDiffer.diff(data);\n if (!changes) {\n return;\n }\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n this.insertNode(data[currentIndex], currentIndex, viewContainer, parentData);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex);\n this._levels.delete(item.item);\n }\n else {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n }\n });\n this._changeDetectorRef.detectChanges();\n }\n /**\n * Finds the matching node definition that should be used for this node data. If there is only\n * one node definition, it is returned. Otherwise, find the node definition that has a when\n * predicate that returns true with the data. If none return true, return the default node\n * definition.\n */\n _getNodeDef(data, i) {\n if (this._nodeDefs.length === 1) {\n return this._nodeDefs.first;\n }\n const nodeDef = this._nodeDefs.find(def => def.when && def.when(i, data)) || this._defaultNodeDef;\n if (!nodeDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeMissingMatchingNodeDefError();\n }\n return nodeDef;\n }\n /**\n * Create the embedded view for the data node template and place it in the correct index location\n * within the data node view container.\n */\n insertNode(nodeData, index, viewContainer, parentData) {\n const node = this._getNodeDef(nodeData, index);\n // Node context that will be provided to created embedded view\n const context = new CdkTreeNodeOutletContext(nodeData);\n // If the tree is flat tree, then use the `getLevel` function in flat tree control\n // Otherwise, use the level of parent node.\n if (this.treeControl.getLevel) {\n context.level = this.treeControl.getLevel(nodeData);\n }\n else if (typeof parentData !== 'undefined' && this._levels.has(parentData)) {\n context.level = this._levels.get(parentData) + 1;\n }\n else {\n context.level = 0;\n }\n this._levels.set(nodeData, context.level);\n // Use default tree nodeOutlet, or nested node's nodeOutlet\n const container = viewContainer ? viewContainer : this._nodeOutlet.viewContainer;\n container.createEmbeddedView(node.template, context, index);\n // Set the data to just created `CdkTreeNode`.\n // The `CdkTreeNode` created from `createEmbeddedView` will be saved in static variable\n // `mostRecentTreeNode`. We get it from static variable and pass the node data to it.\n if (CdkTreeNode.mostRecentTreeNode) {\n CdkTreeNode.mostRecentTreeNode.data = nodeData;\n }\n }\n}\nCdkTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTree, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nCdkTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTree, selector: \"cdk-tree\", inputs: { dataSource: \"dataSource\", treeControl: \"treeControl\", trackBy: \"trackBy\" }, host: { attributes: { \"role\": \"tree\" }, classAttribute: \"cdk-tree\" }, queries: [{ propertyName: \"_nodeDefs\", predicate: CdkTreeNodeDef, descendants: true }], viewQueries: [{ propertyName: \"_nodeOutlet\", first: true, predicate: CdkTreeNodeOutlet, descendants: true, static: true }], exportAs: [\"cdkTree\"], ngImport: i0, template: ``, isInline: true, directives: [{ type: CdkTreeNodeOutlet, selector: \"[cdkTreeNodeOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTree, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-tree',\n exportAs: 'cdkTree',\n template: ``,\n host: {\n 'class': 'cdk-tree',\n 'role': 'tree',\n },\n encapsulation: ViewEncapsulation.None,\n // The \"OnPush\" status for the `CdkTree` component is effectively a noop, so we are removing it.\n // The view for `CdkTree` consists entirely of templates declared in other views. As they are\n // declared elsewhere, they are checked when their declaration points are checked.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dataSource: [{\n type: Input\n }], treeControl: [{\n type: Input\n }], trackBy: [{\n type: Input\n }], _nodeOutlet: [{\n type: ViewChild,\n args: [CdkTreeNodeOutlet, { static: true }]\n }], _nodeDefs: [{\n type: ContentChildren,\n args: [CdkTreeNodeDef, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n/**\n * Tree node for CdkTree. It contains the data in the tree node.\n */\nclass CdkTreeNode {\n constructor(_elementRef, _tree) {\n this._elementRef = _elementRef;\n this._tree = _tree;\n /** Subject that emits when the component has been destroyed. */\n this._destroyed = new Subject();\n /** Emits when the node's data has changed. */\n this._dataChanges = new Subject();\n CdkTreeNode.mostRecentTreeNode = this;\n this.role = 'treeitem';\n }\n /**\n * The role of the tree node.\n * @deprecated The correct role is 'treeitem', 'group' should not be used. This input will be\n * removed in a future version.\n * @breaking-change 12.0.0 Remove this input\n */\n get role() {\n return 'treeitem';\n }\n set role(_role) {\n // TODO: move to host after View Engine deprecation\n this._elementRef.nativeElement.setAttribute('role', _role);\n }\n /** The tree node's data. */\n get data() {\n return this._data;\n }\n set data(value) {\n if (value !== this._data) {\n this._data = value;\n this._setRoleFromData();\n this._dataChanges.next();\n }\n }\n get isExpanded() {\n return this._tree.treeControl.isExpanded(this._data);\n }\n get level() {\n // If the treeControl has a getLevel method, use it to get the level. Otherwise read the\n // aria-level off the parent node and use it as the level for this node (note aria-level is\n // 1-indexed, while this property is 0-indexed, so we don't need to increment).\n return this._tree.treeControl.getLevel\n ? this._tree.treeControl.getLevel(this._data)\n : this._parentNodeAriaLevel;\n }\n ngOnInit() {\n this._parentNodeAriaLevel = getParentNodeAriaLevel(this._elementRef.nativeElement);\n this._elementRef.nativeElement.setAttribute('aria-level', `${this.level + 1}`);\n }\n ngOnDestroy() {\n // If this is the last tree node being destroyed,\n // clear out the reference to avoid leaking memory.\n if (CdkTreeNode.mostRecentTreeNode === this) {\n CdkTreeNode.mostRecentTreeNode = null;\n }\n this._dataChanges.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Focuses the menu item. Implements for FocusableOption. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n // TODO: role should eventually just be set in the component host\n _setRoleFromData() {\n if (!this._tree.treeControl.isExpandable &&\n !this._tree.treeControl.getChildren &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeControlFunctionsMissingError();\n }\n this.role = 'treeitem';\n }\n}\n/**\n * The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it\n * in `CdkTree` and set the data to it.\n */\nCdkTreeNode.mostRecentTreeNode = null;\nCdkTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTreeNode, selector: \"cdk-tree-node\", inputs: { role: \"role\" }, host: { properties: { \"attr.aria-expanded\": \"isExpanded\" }, classAttribute: \"cdk-tree-node\" }, exportAs: [\"cdkTreeNode\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-tree-node',\n exportAs: 'cdkTreeNode',\n host: {\n 'class': 'cdk-tree-node',\n '[attr.aria-expanded]': 'isExpanded',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: CdkTree }]; }, propDecorators: { role: [{\n type: Input\n }] } });\nfunction getParentNodeAriaLevel(nodeElement) {\n let parent = nodeElement.parentElement;\n while (parent && !isNodeElement(parent)) {\n parent = parent.parentElement;\n }\n if (!parent) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw Error('Incorrect tree structure containing detached node.');\n }\n else {\n return -1;\n }\n }\n else if (parent.classList.contains('cdk-nested-tree-node')) {\n return coerceNumberProperty(parent.getAttribute('aria-level'));\n }\n else {\n // The ancestor element is the cdk-tree itself\n return 0;\n }\n}\nfunction isNodeElement(element) {\n const classList = element.classList;\n return !!((classList === null || classList === void 0 ? void 0 : classList.contains('cdk-nested-tree-node')) || (classList === null || classList === void 0 ? void 0 : classList.contains('cdk-tree')));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Nested node is a child of ``. It works with nested tree.\n * By using `cdk-nested-tree-node` component in tree node template, children of the parent node will\n * be added in the `cdkTreeNodeOutlet` in tree node template.\n * The children of node will be automatically added to `cdkTreeNodeOutlet`.\n */\nclass CdkNestedTreeNode extends CdkTreeNode {\n constructor(elementRef, tree, _differs) {\n super(elementRef, tree);\n this._differs = _differs;\n }\n ngAfterContentInit() {\n this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);\n if (!this._tree.treeControl.getChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTreeControlFunctionsMissingError();\n }\n const childrenNodes = this._tree.treeControl.getChildren(this.data);\n if (Array.isArray(childrenNodes)) {\n this.updateChildrenNodes(childrenNodes);\n }\n else if (isObservable(childrenNodes)) {\n childrenNodes\n .pipe(takeUntil(this._destroyed))\n .subscribe(result => this.updateChildrenNodes(result));\n }\n this.nodeOutlet.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateChildrenNodes());\n }\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy() {\n this._clear();\n super.ngOnDestroy();\n }\n /** Add children dataNodes to the NodeOutlet */\n updateChildrenNodes(children) {\n const outlet = this._getNodeOutlet();\n if (children) {\n this._children = children;\n }\n if (outlet && this._children) {\n const viewContainer = outlet.viewContainer;\n this._tree.renderNodeChanges(this._children, this._dataDiffer, viewContainer, this._data);\n }\n else {\n // Reset the data differ if there's no children nodes displayed\n this._dataDiffer.diff([]);\n }\n }\n /** Clear the children dataNodes. */\n _clear() {\n const outlet = this._getNodeOutlet();\n if (outlet) {\n outlet.viewContainer.clear();\n this._dataDiffer.diff([]);\n }\n }\n /** Gets the outlet for the current node. */\n _getNodeOutlet() {\n const outlets = this.nodeOutlet;\n // Note that since we use `descendants: true` on the query, we have to ensure\n // that we don't pick up the outlet of a child node by accident.\n return outlets && outlets.find(outlet => !outlet._node || outlet._node === this);\n }\n}\nCdkNestedTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkNestedTreeNode, deps: [{ token: i0.ElementRef }, { token: CdkTree }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nCdkNestedTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkNestedTreeNode, selector: \"cdk-nested-tree-node\", inputs: { role: \"role\", disabled: \"disabled\", tabIndex: \"tabIndex\" }, host: { classAttribute: \"cdk-nested-tree-node\" }, providers: [\n { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },\n ], queries: [{ propertyName: \"nodeOutlet\", predicate: CdkTreeNodeOutlet, descendants: true }], exportAs: [\"cdkNestedTreeNode\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkNestedTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-nested-tree-node',\n exportAs: 'cdkNestedTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [\n { provide: CdkTreeNode, useExisting: CdkNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode },\n ],\n host: {\n 'class': 'cdk-nested-tree-node',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: CdkTree }, { type: i0.IterableDiffers }]; }, propDecorators: { nodeOutlet: [{\n type: ContentChildren,\n args: [CdkTreeNodeOutlet, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * Indent for the children tree dataNodes.\n * This directive will add left-padding to the node to show hierarchy.\n */\nclass CdkTreeNodePadding {\n constructor(_treeNode, _tree, _element, _dir) {\n this._treeNode = _treeNode;\n this._tree = _tree;\n this._element = _element;\n this._dir = _dir;\n /** Subject that emits when the component has been destroyed. */\n this._destroyed = new Subject();\n /** CSS units used for the indentation value. */\n this.indentUnits = 'px';\n this._indent = 40;\n this._setPadding();\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this._setPadding(true));\n }\n // In Ivy the indentation binding might be set before the tree node's data has been added,\n // which means that we'll miss the first render. We have to subscribe to changes in the\n // data to ensure that everything is up to date.\n _treeNode._dataChanges.subscribe(() => this._setPadding());\n }\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n get level() {\n return this._level;\n }\n set level(value) {\n this._setLevelInput(value);\n }\n /**\n * The indent for each level. Can be a number or a CSS string.\n * Default number 40px from material design menu sub-menu spec.\n */\n get indent() {\n return this._indent;\n }\n set indent(indent) {\n this._setIndentInput(indent);\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** The padding indent value for the tree node. Returns a string with px numbers if not null. */\n _paddingIndent() {\n const nodeLevel = this._treeNode.data && this._tree.treeControl.getLevel\n ? this._tree.treeControl.getLevel(this._treeNode.data)\n : null;\n const level = this._level == null ? nodeLevel : this._level;\n return typeof level === 'number' ? `${level * this._indent}${this.indentUnits}` : null;\n }\n _setPadding(forceChange = false) {\n const padding = this._paddingIndent();\n if (padding !== this._currentPadding || forceChange) {\n const element = this._element.nativeElement;\n const paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';\n const resetProp = paddingProp === 'paddingLeft' ? 'paddingRight' : 'paddingLeft';\n element.style[paddingProp] = padding || '';\n element.style[resetProp] = '';\n this._currentPadding = padding;\n }\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setLevelInput(value) {\n // Set to null as the fallback value so that _setPadding can fall back to the node level if the\n // consumer set the directive as `cdkTreeNodePadding=\"\"`. We still want to take this value if\n // they set 0 explicitly.\n this._level = coerceNumberProperty(value, null);\n this._setPadding();\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setIndentInput(indent) {\n let value = indent;\n let units = 'px';\n if (typeof indent === 'string') {\n const parts = indent.split(cssUnitPattern);\n value = parts[0];\n units = parts[1] || units;\n }\n this.indentUnits = units;\n this._indent = coerceNumberProperty(value);\n this._setPadding();\n }\n}\nCdkTreeNodePadding.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodePadding, deps: [{ token: CdkTreeNode }, { token: CdkTree }, { token: i0.ElementRef }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTreeNodePadding.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTreeNodePadding, selector: \"[cdkTreeNodePadding]\", inputs: { level: [\"cdkTreeNodePadding\", \"level\"], indent: [\"cdkTreeNodePaddingIndent\", \"indent\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodePadding, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodePadding]',\n }]\n }], ctorParameters: function () {\n return [{ type: CdkTreeNode }, { type: CdkTree }, { type: i0.ElementRef }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { level: [{\n type: Input,\n args: ['cdkTreeNodePadding']\n }], indent: [{\n type: Input,\n args: ['cdkTreeNodePaddingIndent']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Node toggle to expand/collapse the node.\n */\nclass CdkTreeNodeToggle {\n constructor(_tree, _treeNode) {\n this._tree = _tree;\n this._treeNode = _treeNode;\n this._recursive = false;\n }\n /** Whether expand/collapse the node recursively. */\n get recursive() {\n return this._recursive;\n }\n set recursive(value) {\n this._recursive = coerceBooleanProperty(value);\n }\n _toggle(event) {\n this.recursive\n ? this._tree.treeControl.toggleDescendants(this._treeNode.data)\n : this._tree.treeControl.toggle(this._treeNode.data);\n event.stopPropagation();\n }\n}\nCdkTreeNodeToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodeToggle, deps: [{ token: CdkTree }, { token: CdkTreeNode }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTreeNodeToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTreeNodeToggle, selector: \"[cdkTreeNodeToggle]\", inputs: { recursive: [\"cdkTreeNodeToggleRecursive\", \"recursive\"] }, host: { listeners: { \"click\": \"_toggle($event)\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeNodeToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTreeNodeToggle]',\n host: {\n '(click)': '_toggle($event)',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkTree }, { type: CdkTreeNode }]; }, propDecorators: { recursive: [{\n type: Input,\n args: ['cdkTreeNodeToggleRecursive']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EXPORTED_DECLARATIONS = [\n CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet,\n];\nclass CdkTreeModule {\n}\nCdkTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeModule, declarations: [CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet], exports: [CdkNestedTreeNode,\n CdkTreeNodeDef,\n CdkTreeNodePadding,\n CdkTreeNodeToggle,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeOutlet] });\nCdkTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTreeModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseTreeControl, CDK_TREE_NODE_OUTLET_NODE, CdkNestedTreeNode, CdkTree, CdkTreeModule, CdkTreeNode, CdkTreeNodeDef, CdkTreeNodeOutlet, CdkTreeNodeOutletContext, CdkTreeNodePadding, CdkTreeNodeToggle, FlatTreeControl, NestedTreeControl, getTreeControlFunctionsMissingError, getTreeControlMissingError, getTreeMissingMatchingNodeDefError, getTreeMultipleDefaultNodeDefsError, getTreeNoValidDataSourceError };\n","import * as i1 from '@angular/cdk/tree';\nimport { CdkTreeNode, CdkTreeNodeDef, CdkNestedTreeNode, CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodePadding, CdkTreeNodeOutlet, CdkTree, CdkTreeNodeToggle, CdkTreeModule } from '@angular/cdk/tree';\nimport * as i0 from '@angular/core';\nimport { Directive, Attribute, Input, Inject, Optional, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';\nimport { mixinTabIndex, mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport { take, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _MatTreeNodeBase = mixinTabIndex(mixinDisabled(CdkTreeNode));\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\nclass MatTreeNode extends _MatTreeNodeBase {\n constructor(elementRef, tree, tabIndex) {\n super(elementRef, tree);\n this.tabIndex = Number(tabIndex) || 0;\n }\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n ngOnInit() {\n super.ngOnInit();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\nMatTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNode, deps: [{ token: i0.ElementRef }, { token: i1.CdkTree }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTreeNode, selector: \"mat-tree-node\", inputs: { role: \"role\", disabled: \"disabled\", tabIndex: \"tabIndex\" }, host: { classAttribute: \"mat-tree-node\" }, providers: [{ provide: CdkTreeNode, useExisting: MatTreeNode }], exportAs: [\"matTreeNode\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [{ provide: CdkTreeNode, useExisting: MatTreeNode }],\n host: {\n 'class': 'mat-tree-node',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.CdkTree }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n } });\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\nclass MatTreeNodeDef extends CdkTreeNodeDef {\n}\nMatTreeNodeDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodeDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatTreeNodeDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTreeNodeDef, selector: \"[matTreeNodeDef]\", inputs: { when: [\"matTreeNodeDefWhen\", \"when\"], data: [\"matTreeNode\", \"data\"] }, providers: [{ provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodeDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodeDef]',\n inputs: ['when: matTreeNodeDefWhen'],\n providers: [{ provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef }],\n }]\n }], propDecorators: { data: [{\n type: Input,\n args: ['matTreeNode']\n }] } });\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\nclass MatNestedTreeNode extends CdkNestedTreeNode {\n constructor(elementRef, tree, differs, tabIndex) {\n super(elementRef, tree, differs);\n this._disabled = false;\n this.tabIndex = Number(tabIndex) || 0;\n }\n /** Whether the node is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Tabindex for the node. */\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? value : 0;\n }\n // This is a workaround for https://github.com/angular/angular/issues/19145\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #19145 is fixed\n ngOnInit() {\n super.ngOnInit();\n }\n ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\nMatNestedTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatNestedTreeNode, deps: [{ token: i0.ElementRef }, { token: i1.CdkTree }, { token: i0.IterableDiffers }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatNestedTreeNode.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatNestedTreeNode, selector: \"mat-nested-tree-node\", inputs: { role: \"role\", disabled: \"disabled\", tabIndex: \"tabIndex\", node: [\"matNestedTreeNode\", \"node\"] }, host: { classAttribute: \"mat-nested-tree-node\" }, providers: [\n { provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode },\n { provide: CdkTreeNode, useExisting: MatNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode },\n ], exportAs: [\"matNestedTreeNode\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatNestedTreeNode, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [\n { provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode },\n { provide: CdkTreeNode, useExisting: MatNestedTreeNode },\n { provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode },\n ],\n host: {\n 'class': 'mat-nested-tree-node',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.CdkTree }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n }, propDecorators: { node: [{\n type: Input,\n args: ['matNestedTreeNode']\n }], disabled: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }] } });\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\nclass MatTreeNodePadding extends CdkTreeNodePadding {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n get level() {\n return this._level;\n }\n set level(value) {\n this._setLevelInput(value);\n }\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n get indent() {\n return this._indent;\n }\n set indent(indent) {\n this._setIndentInput(indent);\n }\n}\nMatTreeNodePadding.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodePadding, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatTreeNodePadding.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTreeNodePadding, selector: \"[matTreeNodePadding]\", inputs: { level: [\"matTreeNodePadding\", \"level\"], indent: [\"matTreeNodePaddingIndent\", \"indent\"] }, providers: [{ provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodePadding, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodePadding]',\n providers: [{ provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding }],\n }]\n }], propDecorators: { level: [{\n type: Input,\n args: ['matTreeNodePadding']\n }], indent: [{\n type: Input,\n args: ['matTreeNodePaddingIndent']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nclass MatTreeNodeOutlet {\n constructor(viewContainer, _node) {\n this.viewContainer = viewContainer;\n this._node = _node;\n }\n}\nMatTreeNodeOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodeOutlet, deps: [{ token: i0.ViewContainerRef }, { token: CDK_TREE_NODE_OUTLET_NODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTreeNodeOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTreeNodeOutlet, selector: \"[matTreeNodeOutlet]\", providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodeOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodeOutlet]',\n providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TREE_NODE_OUTLET_NODE]\n }, {\n type: Optional\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nclass MatTree extends CdkTree {\n}\nMatTree.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTree, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTree.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTree, selector: \"mat-tree\", host: { attributes: { \"role\": \"tree\" }, classAttribute: \"mat-tree\" }, providers: [{ provide: CdkTree, useExisting: MatTree }], viewQueries: [{ propertyName: \"_nodeOutlet\", first: true, predicate: MatTreeNodeOutlet, descendants: true, static: true }], exportAs: [\"matTree\"], usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: [\".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.mat-nested-tree-node{border-bottom-width:0}\\n\"], directives: [{ type: MatTreeNodeOutlet, selector: \"[matTreeNodeOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTree, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tree', exportAs: 'matTree', template: ``, host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: CdkTree, useExisting: MatTree }], styles: [\".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;flex:1;word-wrap:break-word}.mat-nested-tree-node{border-bottom-width:0}\\n\"] }]\n }], propDecorators: { _nodeOutlet: [{\n type: ViewChild,\n args: [MatTreeNodeOutlet, { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\nclass MatTreeNodeToggle extends CdkTreeNodeToggle {\n}\nMatTreeNodeToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodeToggle, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatTreeNodeToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTreeNodeToggle, selector: \"[matTreeNodeToggle]\", inputs: { recursive: [\"matTreeNodeToggleRecursive\", \"recursive\"] }, providers: [{ provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeNodeToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTreeNodeToggle]',\n providers: [{ provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle }],\n inputs: ['recursive: matTreeNodeToggleRecursive'],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet,\n];\nclass MatTreeModule {\n}\nMatTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeModule, declarations: [MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet], imports: [CdkTreeModule, MatCommonModule], exports: [MatCommonModule, MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet] });\nMatTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeModule, imports: [[CdkTreeModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTreeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkTreeModule, MatCommonModule],\n exports: [MatCommonModule, MAT_TREE_DIRECTIVES],\n declarations: MAT_TREE_DIRECTIVES,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nclass MatTreeFlattener {\n constructor(transformFunction, getLevel, isExpandable, getChildren) {\n this.transformFunction = transformFunction;\n this.getLevel = getLevel;\n this.isExpandable = isExpandable;\n this.getChildren = getChildren;\n }\n _flattenNode(node, level, resultNodes, parentMap) {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n }\n else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n _flattenChildren(children, level, resultNodes, parentMap) {\n children.forEach((child, index) => {\n let childParentMap = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData) {\n let resultNodes = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes, treeControl) {\n let results = [];\n let currentExpand = [];\n currentExpand[0] = true;\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nclass MatTreeFlatDataSource extends DataSource {\n constructor(_treeControl, _treeFlattener, initialData) {\n super();\n this._treeControl = _treeControl;\n this._treeFlattener = _treeFlattener;\n this._flattenedData = new BehaviorSubject([]);\n this._expandedData = new BehaviorSubject([]);\n this._data = new BehaviorSubject([]);\n if (initialData) {\n // Assign the data through the constructor to ensure that all of the logic is executed.\n this.data = initialData;\n }\n }\n get data() {\n return this._data.value;\n }\n set data(value) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n connect(collectionViewer) {\n return merge(collectionViewer.viewChange, this._treeControl.expansionModel.changed, this._flattenedData).pipe(map(() => {\n this._expandedData.next(this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));\n return this._expandedData.value;\n }));\n }\n disconnect() {\n // no op\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nclass MatTreeNestedDataSource extends DataSource {\n constructor() {\n super(...arguments);\n this._data = new BehaviorSubject([]);\n }\n /**\n * Data for the nested tree\n */\n get data() {\n return this._data.value;\n }\n set data(value) {\n this._data.next(value);\n }\n connect(collectionViewer) {\n return merge(...[collectionViewer.viewChange, this._data]).pipe(map(() => this.data));\n }\n disconnect() {\n // no op\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatNestedTreeNode, MatTree, MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule, MatTreeNestedDataSource, MatTreeNode, MatTreeNodeDef, MatTreeNodeOutlet, MatTreeNodePadding, MatTreeNodeToggle };\n","import { NgModule } from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\r\nimport {MatBadgeModule} from '@angular/material/badge';\r\nimport {MatBottomSheetModule} from '@angular/material/bottom-sheet';\r\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\r\nimport {MatCheckboxModule} from '@angular/material/checkbox';\r\nimport {MatStepperModule} from '@angular/material/stepper';\r\nimport {MatDatepickerModule} from '@angular/material/datepicker';\r\nimport {MatDividerModule} from '@angular/material/divider';\r\nimport {MatExpansionModule} from '@angular/material/expansion';\r\nimport {MatGridListModule} from '@angular/material/grid-list';\r\nimport {MatMenuModule} from '@angular/material/menu';\r\nimport {MatNativeDateModule, MatRippleModule} from '@angular/material/core';\r\nimport {MatPaginatorModule} from '@angular/material/paginator';\r\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\r\nimport {MatRadioModule} from '@angular/material/radio';\r\nimport {MatSelectModule} from '@angular/material/select';\r\nimport {MatSidenavModule} from '@angular/material/sidenav';\r\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\r\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\r\nimport {MatSortModule} from '@angular/material/sort';\r\nimport {MatTableModule} from '@angular/material/table';\r\nimport {MatTabsModule} from '@angular/material/tabs';\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {MatTreeModule} from '@angular/material/tree';\r\n// <-- add more modules here as needed\r\n\r\nconst MATERIAL_MODULES = [\r\n MatAutocompleteModule,\r\n MatBadgeModule,\r\n MatBottomSheetModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatStepperModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatTreeModule,\r\n MatFormFieldModule\r\n];\r\n\r\n@NgModule({\r\n imports: [MATERIAL_MODULES],\r\n exports: [MATERIAL_MODULES]\r\n})\r\nexport class MaterialModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\r\n\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\r\nimport { ProgressbarModule,ProgressbarConfig } from 'ngx-bootstrap/progressbar';\r\nimport { Select2Module } from \"ng-select2-component\";\r\nimport { JobmonitorComponent } from '@app/core/components';\r\nimport { JobProgressBarComponent } from '@app/core/components';\r\nimport { MaterialModule } from '@app/shared/material/material.module';\r\nimport { PanelsModule } from '../panels/panels.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n JobmonitorComponent,\r\n JobProgressBarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BsDropdownModule,\r\n ModalModule,\r\n ButtonsModule,\r\n ProgressbarModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AngularResizeEventModule,\r\n Select2Module,\r\n MaterialModule,\r\n PanelsModule\r\n ],\r\n providers: [ProgressbarConfig],\r\n exports: [JobmonitorComponent, JobProgressBarComponent]\r\n})\r\nexport class MonitoringModule { }\r\n","
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, Attribute, OnChanges, SimpleChanges, ElementRef, Renderer2, ContentChild } from '@angular/core';\r\nimport { makeSlideInOut } from '../../utils/animations';\r\nimport { handleClassCondition } from '../../utils/utils.functions';\r\nimport { DialogsService } from '../../dialogs/dialogs.service';\r\n\r\n@Component({\r\n selector: 'smart-panel',\r\n templateUrl: './panel.component.html',\r\n animations: [makeSlideInOut()],\r\n})\r\nexport class PanelComponent implements OnInit, OnChanges {\r\n\r\n hasPannel = false;\r\n @Input() collapsible = false;\r\n @Input() collapsed = false;\r\n @Input() fullscreenable = false;\r\n @Input() fullscreenIn: boolean;\r\n @Input() clossable: boolean;\r\n @Input() closed: boolean;\r\n headerClass: string;\r\n\r\n @ContentChild('panelTitle', { static: true }) panelTitle;\r\n constructor(\r\n @Attribute('headerClass') headerClass: string,\r\n private dialogs: DialogsService,\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n ) {\r\n this.headerClass = headerClass;\r\n }\r\n\r\n ngOnInit() {\r\n if (typeof this.collapsed !== 'undefined') {\r\n this.collapsible = true;\r\n }\r\n if (typeof this.fullscreenIn !== 'undefined') {\r\n this.fullscreenable = true;\r\n }\r\n if (typeof this.closed !== 'undefined') {\r\n this.clossable = true;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // console.log(22, changes);\r\n // if (typeof changes.fullscreenIn !== 'undefined') {\r\n // console.log('111', changes.fullscreenIn.currentValue, this.fullscreenable);\r\n // }\r\n }\r\n\r\n get pannelClasses() {\r\n const classes = ['panel'];\r\n classes.push(this.collapsed ? 'panel-collapsed' : '');\r\n classes.push(this.fullscreenIn ? 'panel-fullscreen' : '');\r\n return classes;\r\n }\r\n\r\n get pannelContainerClasses() {\r\n const classes = ['panel-container'];\r\n if (this.collapsible) {\r\n // classes.push(this.collapsed ? 'collapse' : 'show');\r\n classes.push(this.collapsed ? '' : 'show');\r\n }\r\n return classes;\r\n }\r\n\r\n get pannelContentClasses() {\r\n const classes = ['panel-content'];\r\n return classes;\r\n }\r\n\r\n toggleCollapse($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.collapsed = !this.collapsed;\r\n }\r\n toggleFullscreen($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.fullscreenIn = !this.fullscreenIn;\r\n handleClassCondition(this.fullscreenIn, 'panel-fullscreen', document.querySelector('body'));\r\n }\r\n async closePanel($event: MouseEvent) {\r\n $event.preventDefault();\r\n const titleEl = this.el.nativeElement.querySelector('h1')\r\n || this.el.nativeElement.querySelector('h2')\r\n || this.el.nativeElement.querySelector('h3');\r\n\r\n const title = titleEl ? titleEl.innerText : '';\r\n\r\n const result = await this.dialogs.confirm({\r\n title: `\r\n Do you wish to delete panel  '${title}' ?`,\r\n message: `Warning: This action cannot be undone!`,\r\n buttons: {\r\n confirm: {\r\n label: 'Yes',\r\n className: 'btn-danger shadow-0'\r\n },\r\n cancel: {\r\n label: 'No',\r\n className: 'btn-default'\r\n }\r\n }\r\n }).toPromise();\r\n\r\n if (result) {\r\n this.renderer.addClass(this.el.nativeElement, 'd-none');\r\n }\r\n\r\n }\r\n\r\n setHeaderClass(headerClass: string) {\r\n this.headerClass = headerClass;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * spec\r\n * + it should have multiple content projections\r\n * + it should have tooltips on feature buttons\r\n * it should be able to disable all features\r\n * it should save options to local storage\r\n * closed\r\n * + it should wrap header\r\n * + it should be closable\r\n * + it should warn on close\r\n * + it should be fullscrinable\r\n * + toggle class .panel-fullscreen on :host element\r\n * + toggle class .panel-fullscreen on body element\r\n * + it should be collapsable\r\n * + animated collapse\r\n * + toggle class .panel-collapsed on :host element\r\n * + toggle class .collapse .show on .panel-container element\r\n * it should be lockable *\r\n * toggle class .panel-locked on :host element\r\n * + it should be able to change colors // styles\r\n * + .panel-hdr\r\n * it should have loading indicator/state\r\n * have runLoader()\r\n * it should be able to run refresh state\r\n * toggle class .panel-refresh on :host element\r\n * toggle class .enable-loader on .panel-container element\r\n * + it should be able to accept custom buttons\r\n * it should be sortable\r\n * toggle class .panel-sortable on :host element\r\n * dragging\r\n * placeholder .panel-placeholder\r\n * drag handle > .panel-hdr > h2\r\n * it should remeber position\r\n * it should emit callbacks\r\n * it should be able to reset\r\n * all widgets\r\n * all widgets settings\r\n * all widgets positions\r\n * widget settings\r\n * widget position\r\n * it should be destroyable\r\n * alert if no id\r\n * it should add propper roles\r\n *\r\n * dependencies\r\n * ngx-bootstrap/modal\r\n * ngx-bootstrap/dropdown\r\n * ngx-bootstrap/tooltip\r\n * cdk/drag-ndrop\r\n */\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PanelComponent } from './panel/panel.component';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { DialogsModule } from '../dialogs/dialogs.module';\r\n\r\n@NgModule({\r\n declarations: [PanelComponent],\r\n imports: [\r\n TooltipModule,\r\n CommonModule,\r\n DialogsModule\r\n ],\r\n exports: [PanelComponent]\r\n})\r\nexport class PanelsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OnOffComponent } from './on-off/on-off.component';\r\n@NgModule({\r\n declarations: [OnOffComponent],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [OnOffComponent]\r\n})\r\nexport class UiModule { }\r\n","import { trigger, state, style, transition, animate, group } from '@angular/animations';\r\n\r\nexport function makeSlideInOut() {\r\n return trigger('slideInOut', [\r\n state('in', style({ height: '*', opacity: 0 })),\r\n transition(':leave', [\r\n style({ height: '*', opacity: 1 }),\r\n\r\n group([\r\n animate('200ms ease-in-out', style({ height: 0 })),\r\n animate('200ms ease-in-out', style({ opacity: '0' }))\r\n ])\r\n\r\n ]),\r\n transition(':enter', [\r\n style({ height: '0', opacity: 0 }),\r\n\r\n group([\r\n animate('200ms ease-in-out', style({ height: '*' })),\r\n animate('200ms ease-in-out', style({ opacity: '1' }))\r\n ])\r\n\r\n ])\r\n ]);\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[smartStubClick]'\r\n})\r\nexport class StubClickDirective {\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","export function scrollToTop(scrollDuration: number) {\r\n const cosParameter = window.scrollY / 2;\r\n let scrollCount = 0;\r\n let oldTimestamp = performance.now();\r\n function step(newTimestamp) {\r\n scrollCount += Math.PI / (scrollDuration / (newTimestamp - oldTimestamp));\r\n if (scrollCount >= Math.PI) { window.scrollTo(0, 0); }\r\n if (window.scrollY === 0) { return; }\r\n window.scrollTo(0, Math.round(cosParameter + cosParameter * Math.cos(scrollCount)));\r\n oldTimestamp = newTimestamp;\r\n window.requestAnimationFrame(step);\r\n }\r\n window.requestAnimationFrame(step);\r\n}\r\n\r\nexport function scrollToTop2() {\r\n document.getElementById(\"main-page-content-wrapper\").scrollTop = 0;\r\n}\r\n\r\n\r\n/* tslint:disable */\r\nexport function toggleFullscreen() {\r\n if (!document.fullscreenElement /* Standard browsers */\r\n && !document['msFullscreenElement'] /* Internet Explorer */\r\n && !document['mozFullScreenElement'] /* Firefox */\r\n && !document['webkitFullscreenElement'] /* Chrome */ \r\n ) {\r\n if (document.documentElement.requestFullscreen) {\r\n document.documentElement.requestFullscreen();\r\n } else if (document.documentElement['msRequestFullscreen']) {\r\n document.documentElement['msRequestFullscreen']();\r\n } else if (document.documentElement['mozRequestFullScreen']) {\r\n document.documentElement['mozRequestFullScreen']();\r\n } else if (document.documentElement['webkitRequestFullscreen']) {\r\n document.documentElement['webkitRequestFullscreen'](Element['ALLOW_KEYBOARD_INPUT']);\r\n }\r\n } else {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n } else if (document['msExitFullscreen']) {\r\n document['msExitFullscreen']();\r\n } else if (document['mozCancelFullScreen']) {\r\n document['mozCancelFullScreen']();\r\n } else if (document['webkitExitFullscreen']) {\r\n document['webkitExitFullscreen']();\r\n }\r\n }\r\n}\r\n/* tslint:enable */\r\n\r\n\r\n// conditionaly apply css class to target\r\nexport function handleClassCondition(\r\n condition: boolean,\r\n className: string,\r\n el: HTMLElement\r\n) {\r\n if (!condition && el.classList.contains(className)) {\r\n el.classList.remove(className);\r\n }\r\n if (condition && !el.classList.contains(className)) {\r\n el.classList.add(className);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StubClickDirective } from './directives/stub-click.directive';\r\nimport { DelayedInputDirective } from './directives/delayed-input.directive';\r\n\r\n@NgModule({\r\n declarations: [StubClickDirective, DelayedInputDirective],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [StubClickDirective, DelayedInputDirective]\r\n})\r\nexport class UtilsModule { }\r\n","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type';\n\nexport const setAdminUsers = createAction(\n '[AdminUser/API] Set AdminUsers', \n props<{ adminUsers: Login[] }>()\n);\n\nexport const addAdminUser = createAction(\n '[AdminUser/API] Add AdminUser',\n props<{ adminUser: Login }>()\n);\n\nexport const upsertAdminUser = createAction(\n '[AdminUser/API] Upsert AdminUser',\n props<{ adminUser: Login }>()\n);\n\nexport const addAdminUsers = createAction(\n '[AdminUser/API] Add AdminUsers',\n props<{ adminUsers: Login[] }>()\n);\n\nexport const upsertAdminUsers = createAction(\n '[AdminUser/API] Upsert AdminUsers',\n props<{ adminUsers: Login[] }>()\n);\n\nexport const updateAdminUser = createAction(\n '[AdminUser/API] Update AdminUser',\n props<{ adminUser: Update }>()\n);\n\nexport const updateAdminUsers = createAction(\n '[AdminUser/API] Update AdminUsers',\n props<{ adminUsers: Update[] }>()\n);\n\nexport const deleteAdminUser = createAction(\n '[AdminUser/API] Delete AdminUser',\n props<{ id: string }>()\n);\n\nexport const deleteAdminUsers = createAction(\n '[AdminUser/API] Delete AdminUsers',\n props<{ ids: string[] }>()\n);\n\nexport const clearAdminUsers = createAction(\n '[AdminUser/API] Clear AdminUsers'\n);\n\nexport const getAdminUser = createAction(\n '[AdminUser/API] Get AdminUser',\n props<{ companyId: string }>()\n);\n\nexport const setAdminUserLoaded = createAction(\n '[AdminUser/API] Set AdminUser Loaded'\n);\n\nexport const getAdminUserError = createAction(\n '[AdminUser/API] Get AdminUser Error',\n props<{ message: string }>()\n);\n\nexport const setCompanyChannelAdminUser = createAction(\n '[AdminUser/API] Set Company Channel Admin User',\n props<{ adminUser: Login}>()\n)\n\nexport const setCompanyChannelAdminUserLoaded = createAction(\n '[AdminUser/API] Set Company Channel Admin User Loaded'\n);\n\n// export const setCompanyChannelAdminUserLoadedError = createAction(\n// '[AdminUser/API] Set Company Channel Admin User Loaded',\n// props<{ message: string }>()\n// );\n\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type';\nimport * as AdminUserActions from './admin-user.actions';\n\nexport const adminUsersFeatureKey = 'adminUsers';\n\nexport interface State extends EntityState {\n adminUserResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: login => login.userId\n});\n\nexport const initialState: State = adapter.getInitialState({\n adminUserResult: new N3TResult(),\n});\n\nconst adminUserReducer = createReducer(\n initialState,\n on(AdminUserActions.addAdminUser,\n (state, action) => adapter.addOne(action.adminUser, state)\n ),\n on(AdminUserActions.upsertAdminUser,\n (state, action) => adapter.upsertOne(action.adminUser, state)\n ),\n on(AdminUserActions.addAdminUsers,\n (state, action) => adapter.addMany(action.adminUsers, state)\n ),\n on(AdminUserActions.upsertAdminUsers,\n (state, action) => adapter.upsertMany(action.adminUsers, state)\n ),\n on(AdminUserActions.updateAdminUser,\n (state, action) => adapter.updateOne(action.adminUser, state)\n ),\n on(AdminUserActions.updateAdminUsers,\n (state, action) => adapter.updateMany(action.adminUsers, state)\n ),\n on(AdminUserActions.deleteAdminUser,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(AdminUserActions.deleteAdminUsers,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(AdminUserActions.setAdminUsers,\n (state, action) => adapter.setAll(action.adminUsers, state)\n ),\n on(AdminUserActions.clearAdminUsers,\n state => adapter.removeAll(state)\n ),\n on(AdminUserActions.getAdminUserError, \n (state, prop) => ({ ...state, adminUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(AdminUserActions.getAdminUser, \n (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n on(AdminUserActions.setAdminUserLoaded, \n (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(AdminUserActions.setCompanyChannelAdminUser, \n (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n on(AdminUserActions.setCompanyChannelAdminUserLoaded, \n (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n // on(AdminUserActions.setCompanyChannelAdminUserLoadedError, \n // (state, prop) => ({ ...state, adminUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n // )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return adminUserReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as adminUser from '.';\r\nimport { first } from 'lodash';\r\nimport * as fromAdminUser from './admin-user.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectAdminUserState = createFeatureSelector(\"adminUsers\");\r\n\r\nlet selectAllAdminUsers = createSelector(\r\n selectAdminUserState,\r\n fromAdminUser.selectAll\r\n);\r\n\r\nexport const selectAdminUser = createSelector(\r\n selectAllAdminUsers,\r\n authUsers => first(authUsers)\r\n);\r\n\r\n/*** result states ***/\r\nexport const adminUserResult = createSelector(\r\n selectAdminUserState,\r\n adminUserState => adminUserState.adminUserResult\r\n);","import { createAction, props } from '@ngrx/store';\r\n\r\nexport const appReset = createAction(\r\n '[App/API] App Reset'\r\n);\r\n\r\nexport const appResetError = createAction(\r\n '[App/API] Set App Reset Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const appResetChannel = createAction(\r\n '[App/API] App Reset Channel'\r\n);\r\n\r\nexport const appResetChannelError = createAction(\r\n '[App/API] Set App Channel Reset Error',\r\n props<{ message: string }>()\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\nimport { AuthUser } from '@app/core/_models';\nimport { RolesInput } from '@app/core/gql/graphql/permissions/schema/input';\n\nexport const setAuthUsers = createAction(\n '[AuthUser/API] Set AuthUsers', \n props<{ authUsers: AuthUser[] }>()\n);\n\nexport const addAuthUser = createAction(\n '[AuthUser/API] Add AuthUser',\n props<{ authUser: AuthUser }>()\n);\n\nexport const upsertAuthUser = createAction(\n '[AuthUser/API] Upsert AuthUser',\n props<{ authUser: AuthUser }>()\n);\n\nexport const addAuthUsers = createAction(\n '[AuthUser/API] Add AuthUsers',\n props<{ authUsers: AuthUser[] }>()\n);\n\nexport const upsertAuthUsers = createAction(\n '[AuthUser/API] Upsert AuthUsers',\n props<{ authUsers: AuthUser[] }>()\n);\n\nexport const updateAuthUser = createAction(\n '[AuthUser/API] Update AuthUser',\n props<{ authUser: Update }>()\n);\n\nexport const updateAuthUserRoles = createAction(\n '[bus/permissions] roles',\n props<{ user: AuthUser, roles: RolesInput[]}>()\n);\n\nexport const updateAuthUserRolesError = createAction(\n '[GQL/API] Set AuthUser Roles Error',\n props<{ message: string }>()\n);\n\nexport const updateAuthUsers = createAction(\n '[AuthUser/API] Update AuthUsers',\n props<{ authUsers: Update[] }>()\n);\n\nexport const deleteAuthUser = createAction(\n '[AuthUser/API] Delete AuthUser',\n props<{ id: string }>()\n);\n\nexport const deleteAuthUsers = createAction(\n '[AuthUser/API] Delete AuthUsers',\n props<{ ids: string[] }>()\n);\n\nexport const clearAuthUsers = createAction(\n '[AuthUser/API] Clear AuthUsers'\n);\n\nexport const getAuthUsers = createAction(\n '[AuthUser/API] Get AuthUser',\n props<{ user: string, password: string }>()\n);\n\nexport const setAuthUsersLoaded = createAction(\n '[AuthUser/API] Set AuthUser Loaded'\n);\n\nexport const getAuthUsersError = createAction(\n '[AuthUser/API] Set Gql AuthUser Error',\n props<{ message: string }>()\n);\n\nexport const resetAuthUsersResult = createAction(\n '[AuthUser/API] Reset AuthUsers Result'\n);\n","import { AuthUser } from '@app/core/_models';\nimport * as AuthUserActions from './auth-user.actions';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\n\nexport const authUsersFeatureKey = 'authUsers';\n\nexport interface State extends EntityState {\n authUserResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: authUser => authUser.userId.toString()\n});\n\nexport const initialState: State = adapter.getInitialState({\n /*** n3t result objects */ \n authUserResult: new N3TResult()\n});\n\nconst authUserReducer = createReducer(\n initialState,\n on(AuthUserActions.addAuthUser,\n (state, action) => adapter.addOne(action.authUser, state)\n ),\n on(AuthUserActions.upsertAuthUser,\n (state, action) => adapter.upsertOne(action.authUser, state)\n ),\n on(AuthUserActions.addAuthUsers,\n (state, action) => adapter.addMany(action.authUsers, state)\n ),\n on(AuthUserActions.upsertAuthUsers,\n (state, action) => adapter.upsertMany(action.authUsers, state)\n ),\n on(AuthUserActions.updateAuthUser,\n (state, action) => adapter.updateOne(action.authUser, state)\n ),\n on(AuthUserActions.updateAuthUsers,\n (state, action) => adapter.updateMany(action.authUsers, state)\n ),\n on(AuthUserActions.deleteAuthUser,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(AuthUserActions.deleteAuthUsers,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(AuthUserActions.setAuthUsers,\n (state, action) => adapter.setAll(action.authUsers, state)\n ),\n on(AuthUserActions.clearAuthUsers,\n state => adapter.removeAll(state)\n ),\n on(AuthUserActions.updateAuthUserRolesError, \n (state, prop) => ({ ...state, authUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(AuthUserActions.getAuthUsers, \n (state) => ({ ...state, authUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(AuthUserActions.getAuthUsersError, \n (state, prop) => ({ ...state, authUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(AuthUserActions.setAuthUsersLoaded, \n (state) => ({ ...state, authUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(AuthUserActions.resetAuthUsersResult, \n (state) => ({ ...state, authUserResult: { hasError: false, isLoaded: false, callState: CallState.INIT, error: '' }})\n ), \n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return authUserReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as authUser from '.';\r\nimport * as fromAuthUser from './auth-user.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\nimport { first, filter } from 'lodash';\r\nimport { AuthUser } from '../../core/_models/user';\r\nimport { state } from '@angular/animations';\r\n\r\n\r\n//export const selectAuthUserState = createSelector((state: authUser.State) => state, value => value)\r\nexport const selectAuthUserState = createFeatureSelector(\"authUsers\");\r\n\r\nlet selectAllAuthUsers = createSelector(\r\n selectAuthUserState,\r\n fromAuthUser.selectAll\r\n);\r\n\r\nexport const selectAuthUser = createSelector(\r\n selectAllAuthUsers,\r\n authUsers => first(authUsers)\r\n // authUsers => first(filter(authUsers, function(x:AuthUser) {\r\n // x !== undefined\r\n // }))\r\n);","import { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type';\r\nimport { Guid } from 'guid-typescript';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Session } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\nexport const setBackupAuthResults = createAction(\r\n '[BackupAuth/API] Set Backup Auth Results', \r\n props<{ backupAuthResults: Session[] }>()\r\n);\r\n\r\nexport const addBackupAuthResult = createAction(\r\n '[BackupAuth/API] Add Backup Auth Result',\r\n props<{ backupAuthResult: Session }>()\r\n);\r\n\r\nexport const upsertBackupAuthResult = createAction(\r\n '[BackupAuth/API] Upsert Backup Auth Result',\r\n props<{ backupAuthResult: Session }>()\r\n);\r\n\r\nexport const addBackupAuthResults = createAction(\r\n '[BackupAuth/API] Add Backup Auth Results',\r\n props<{ backupAuthResults: Session[] }>()\r\n);\r\n\r\nexport const upsertBackupAuthResults = createAction(\r\n '[BackupAuth/API] Upsert Backup Auth Results',\r\n props<{ backupAuthResults: Session[] }>()\r\n);\r\n\r\nexport const updateBackupAuthResult = createAction(\r\n '[BackupAuth/API] Update Backup Auth Result',\r\n props<{ backupAuthResult: Update }>()\r\n);\r\n\r\nexport const updateBackupAuthResults = createAction(\r\n '[BackupAuth/API] Update Backup Auth Results',\r\n props<{ backupAuthResults: Update[] }>()\r\n);\r\n\r\nexport const deleteBackupAuthResult = createAction(\r\n '[BackupAuth/API] Delete Backup Auth Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteBackupAuthResults = createAction(\r\n '[BackupAuth/API] Delete Backup Auth Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearBackupAuth = createAction(\r\n '[BackupAuth/API] Clear Backup Auth'\r\n);\r\n\r\n/*** Backup Auth data actions ***/\r\nexport const getBackupAuthData = createAction(\r\n '[BackupAuth/API] Get Backup Auth Data'\r\n);\r\n\r\nexport const setBackupAuthDataLoaded = createAction(\r\n '[BackupAuth/API] Set Backup Auth Loaded',\r\n props<{ sessions: Session[], companyIdentifiers: CompanyIdentifier[] }>()\r\n);\r\n\r\nexport const setBackupAuthDataError = createAction(\r\n '[BackupAuth/API] Set Backup Auth Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport * as BackupAuthActions from './backup-auth.actions';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { Session } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\nexport const backupAuthFeatureKey = 'backupAuth';\r\n\r\nexport interface State extends EntityState {\r\n backupAuthResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: backupAuth => UUID.UUID() // backupAuth.sessionId\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n backupAuthResult: new N3TResult()\r\n});\r\n\r\nconst backupAuthReducer = createReducer(\r\n initialState,\r\n on(BackupAuthActions.addBackupAuthResult,\r\n (state, action) => adapter.addOne(action.backupAuthResult, state)\r\n ),\r\n on(BackupAuthActions.upsertBackupAuthResult,\r\n (state, action) => adapter.upsertOne(action.backupAuthResult, state)\r\n ),\r\n on(BackupAuthActions.addBackupAuthResults,\r\n (state, action) => adapter.addMany(action.backupAuthResults, state)\r\n ),\r\n on(BackupAuthActions.upsertBackupAuthResults,\r\n (state, action) => adapter.upsertMany(action.backupAuthResults, state)\r\n ),\r\n on(BackupAuthActions.updateBackupAuthResult,\r\n (state, action) => adapter.updateOne(action.backupAuthResult, state)\r\n ),\r\n on(BackupAuthActions.updateBackupAuthResults,\r\n (state, action) => adapter.updateMany(action.backupAuthResults, state)\r\n ),\r\n on(BackupAuthActions.deleteBackupAuthResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(BackupAuthActions.deleteBackupAuthResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(BackupAuthActions.setBackupAuthResults,\r\n (state, action) => adapter.setAll(action.backupAuthResults, state)\r\n ),\r\n on(BackupAuthActions.clearBackupAuth,\r\n state => adapter.removeAll(state)\r\n ),\r\n /*** backupAuth data reducers ***/\r\n on(BackupAuthActions.getBackupAuthData, \r\n (state) => ({ ...state, backupAuthResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(BackupAuthActions.setBackupAuthDataLoaded, \r\n (state) => ({ ...state, backupAuthResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(BackupAuthActions.setBackupAuthDataError, \r\n (state, prop) => ({ ...state, backupAuthResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return backupAuthReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as backupAuth from '.';\r\nimport * as fromBackupAuth from './backup-auth.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectBackupAuthState = createFeatureSelector(\"backupAuth\");\r\n\r\nexport const selectBackupAuthById = (id:string) => createSelector(\r\n selectBackupAuthState,\r\n backupAuthState => backupAuthState.entities[id]\r\n);\r\n\r\nexport const selectAllBackupAuth = createSelector(\r\n selectBackupAuthState,\r\n fromBackupAuth.selectAll\r\n);\r\n\r\nexport const backupAuthResult = createSelector(\r\n selectBackupAuthState,\r\n backupAuthState => backupAuthState.backupAuthResult\r\n);","import { ActifioCluster } from '@app/core/gql/graphql/backup/schema/type/actifioCluster';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { GetBackupClusterInfoInput } from '@app/core/gql/graphql/backup/schema/input';\r\n\r\n\r\nexport const setBackupClusterInfoResults = createAction(\r\n '[BackupClusterInfo/API] Set backup Cluster Info Results', \r\n props<{ backupClusterInfoResults: ActifioCluster[] }>()\r\n);\r\n\r\nexport const addBackupClusterInfoResult = createAction(\r\n '[BackupClusterInfo/API] Add backup Cluster Info Result',\r\n props<{ backupClusterInfoResult: ActifioCluster }>()\r\n);\r\n\r\nexport const upsertBackupClusterInfoResult = createAction(\r\n '[BackupClusterInfo/API] Upsert backup Cluster Info Result',\r\n props<{ backupClusterInfoResult: ActifioCluster }>()\r\n);\r\n\r\nexport const addBackupClusterInfoResults = createAction(\r\n '[BackupClusterInfo/API] Add backup Cluster Info Results',\r\n props<{ backupClusterInfoResults: ActifioCluster[] }>()\r\n);\r\n\r\nexport const upsertBackupClusterInfoResults = createAction(\r\n '[BackupClusterInfo/API] Upsert backup Cluster Info Results',\r\n props<{ backupClusterInfoResults: ActifioCluster[] }>()\r\n);\r\n\r\nexport const updateBackupClusterInfoResult = createAction(\r\n '[BackupClusterInfo/API] Update backup Cluster Info Result',\r\n props<{ backupClusterInfoResult: Update }>()\r\n);\r\n\r\nexport const updateBackupClusterInfoResults = createAction(\r\n '[BackupClusterInfo/API] Update backup Cluster Info Results',\r\n props<{ backupClusterInfoResults: Update[] }>()\r\n);\r\n\r\nexport const deleteBackupClusterInfoResult = createAction(\r\n '[BackupClusterInfo/API] Delete backup Cluster Info Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteBackupClusterInfoResults = createAction(\r\n '[BackupClusterInfo/API] Delete backup Cluster Info Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearBackupClusterInfo = createAction(\r\n '[BackupClusterInfo/API] Clear backup Cluster Info'\r\n);\r\n\r\n/*** Backup Cluster Info data actions ***/\r\nexport const getBackupClusterInfoData = createAction(\r\n '[BackupClusterInfo/API] Get backup Cluster Info Data',\r\n props<{ getBackupClusterInfoInput: GetBackupClusterInfoInput }>()\r\n);\r\n\r\nexport const getBackupClustersInfoData = createAction(\r\n '[BackupClusterInfo/API] Get backup Clusters Info Data',\r\n props<{ getBackupClustersInfoInput: GetBackupClusterInfoInput[] }>()\r\n);\r\n\r\nexport const setBackupClusterInfoDataLoaded = createAction(\r\n '[BackupClusterInfo/API] Set backup Cluster Info Loaded' \r\n);\r\n\r\nexport const setBackupClustersInfoDataLoaded = createAction(\r\n '[BackupClusterInfo/API] Set backup Cluster Info Loaded' \r\n);\r\n\r\nexport const setBackupClusterInfoDataError = createAction(\r\n '[BackupClusterInfo/API] Set backup Cluster Info Error',\r\n props<{ message: string }>()\r\n);\r\n","import { ActifioCluster } from '@app/core/gql/graphql/backup/schema/type/actifioCluster';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as BackupClusterInfoActions from './backup-cluster-info.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { UUID } from 'angular2-uuid';\r\n\r\n\r\nexport const backupClusterInfoFeatureKey = 'backupClusterInfo';\r\n\r\nexport interface State extends EntityState {\r\n backupClusterInfoResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: backupClusterInfo => UUID.UUID() // backupClusterInfo.id // UUID.UUID() \r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n backupClusterInfoResult: new N3TResult()\r\n});\r\n\r\nconst backupClusterInfoReducer = createReducer(\r\n initialState,\r\n on(BackupClusterInfoActions.addBackupClusterInfoResult,\r\n (state, action) => adapter.addOne(action.backupClusterInfoResult, state)\r\n ),\r\n on(BackupClusterInfoActions.upsertBackupClusterInfoResult,\r\n (state, action) => adapter.upsertOne(action.backupClusterInfoResult, state)\r\n ),\r\n on(BackupClusterInfoActions.addBackupClusterInfoResults,\r\n (state, action) => adapter.addMany(action.backupClusterInfoResults, state)\r\n ),\r\n on(BackupClusterInfoActions.upsertBackupClusterInfoResults,\r\n (state, action) => adapter.upsertMany(action.backupClusterInfoResults, state)\r\n ),\r\n on(BackupClusterInfoActions.updateBackupClusterInfoResult,\r\n (state, action) => adapter.updateOne(action.backupClusterInfoResult, state)\r\n ),\r\n on(BackupClusterInfoActions.updateBackupClusterInfoResults,\r\n (state, action) => adapter.updateMany(action.backupClusterInfoResults, state)\r\n ),\r\n on(BackupClusterInfoActions.deleteBackupClusterInfoResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(BackupClusterInfoActions.deleteBackupClusterInfoResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(BackupClusterInfoActions.setBackupClusterInfoResults,\r\n (state, action) => adapter.setAll(action.backupClusterInfoResults, state)\r\n ),\r\n on(BackupClusterInfoActions.clearBackupClusterInfo,\r\n state => adapter.removeAll(state)\r\n ),\r\n /*** backupClusterInfo data reducers ***/\r\n on(BackupClusterInfoActions.getBackupClusterInfoData, \r\n (state) => ({ ...state, backupClusterInfoResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(BackupClusterInfoActions.setBackupClusterInfoDataLoaded, \r\n (state) => ({ ...state, backupClusterInfoResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(BackupClusterInfoActions.setBackupClusterInfoDataError, \r\n (state, prop) => ({ ...state, backupClusterInfoResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(BackupClusterInfoActions.setBackupClustersInfoDataLoaded,\r\n (state, action) => ({ ...state, backupClustersInfoResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return backupClusterInfoReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as backupClusterInfo from '.';\r\nimport * as fromBackupClusterInfo from './backup-cluster-info.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectBackupClusterInfoState = createFeatureSelector(\"backupClusterInfo\");\r\n\r\nexport const selectBackupClusterInfoById = (id:string) => createSelector(\r\n selectBackupClusterInfoState,\r\n backupClusterInfoState => backupClusterInfoState.entities[id]\r\n);\r\n\r\nexport const selectAllBackupClusterInfo = createSelector(\r\n selectBackupClusterInfoState,\r\n fromBackupClusterInfo.selectAll\r\n);\r\n\r\nexport const backupClusterInfoResult = createSelector(\r\n selectBackupClusterInfoState,\r\n backupClusterInfoState => backupClusterInfoState.backupClusterInfoResult\r\n);","import { TypeJob } from '@app/core/gql/graphql/dps/schema/type';\r\nimport { Guid } from 'guid-typescript';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { GetDPSJobStatusInput } from '@app/core/gql/graphql/dps/schema/input';\r\n\r\n\r\nexport const setBackupJobResults = createAction(\r\n '[Backup Job/API] Set Backup Job Results', \r\n props<{ backupJobResults: TypeJob[] }>()\r\n);\r\n\r\nexport const addBackupJobResult = createAction(\r\n '[Backup Job/API] Add Backup Job Result',\r\n props<{ backupJobResult: TypeJob }>()\r\n);\r\n\r\nexport const upsertBackupJobResult = createAction(\r\n '[Backup Job/API] Upsert Backup Job Result',\r\n props<{ backupJobResult: TypeJob }>()\r\n);\r\n\r\nexport const addBackupJobResults = createAction(\r\n '[Backup Job/API] Add Backup Job Results',\r\n props<{ backupJobResults: TypeJob[] }>()\r\n);\r\n\r\nexport const upsertBackupJobResults = createAction(\r\n '[Backup Job/API] Upsert Backup Job Results',\r\n props<{ backupJobResults: TypeJob[] }>()\r\n);\r\n\r\nexport const updateBackupJobResult = createAction(\r\n '[Backup Job/API] Update Backup Job Result',\r\n props<{ backupJobResult: Update }>()\r\n);\r\n\r\nexport const updateBackupJobResults = createAction(\r\n '[Backup Job/API] Update Backup Job Results',\r\n props<{ backupJobResults: Update[] }>()\r\n);\r\n\r\nexport const deleteBackupJobResult = createAction(\r\n '[Backup Job/API] Delete Backup Job Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteBackupJobResults = createAction(\r\n '[Backup Job/API] Delete Backup Job Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearBackupJob = createAction(\r\n '[Backup Job/API] Clear Backup Job'\r\n);\r\n\r\nexport const getBackupJob = createAction(\r\n '[Backup Job/API] Get Backup Job',\r\n props<{ getDPSJobStatusInput: GetDPSJobStatusInput, pollingInterval: number }>()\r\n);\r\n\r\n/*** Backup data actions ***/\r\nexport const getBackupJobData = createAction(\r\n '[Backup Job/API] Get Backup Job Data'\r\n);\r\n\r\nexport const setBackupJobDataLoaded = createAction(\r\n '[Backup Job/API] Set Backup Job Loaded'\r\n);\r\n\r\nexport const setBackupJobDataError = createAction(\r\n '[Backup Job/API] Set Backup Job Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport * as BackupJobActions from './backup-job.actions';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeJob } from '@app/core/gql/graphql/dps/schema/type';\r\n\r\n\r\nexport const backupJobFeatureKey = 'backupJob';\r\n\r\nexport interface State extends EntityState {\r\n backupJobResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: backupJob => backupJob.jobname // UUID.UUID() // backup.sessionId\r\n});\r\n\r\nexport const initialJobState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n backupJobResult: new N3TResult()\r\n});\r\n\r\nconst backupJobReducer = createReducer(\r\n initialJobState,\r\n on(BackupJobActions.addBackupJobResult,\r\n (state, action) => adapter.addOne(action.backupJobResult, state)\r\n ),\r\n on(BackupJobActions.upsertBackupJobResult,\r\n (state, action) => adapter.upsertOne(action.backupJobResult, state)\r\n ),\r\n on(BackupJobActions.addBackupJobResults,\r\n (state, action) => adapter.addMany(action.backupJobResults, state)\r\n ),\r\n on(BackupJobActions.upsertBackupJobResults,\r\n (state, action) => adapter.upsertMany(action.backupJobResults, state)\r\n ),\r\n on(BackupJobActions.updateBackupJobResult,\r\n (state, action) => adapter.updateOne(action.backupJobResult, state)\r\n ),\r\n on(BackupJobActions.updateBackupJobResults,\r\n (state, action) => adapter.updateMany(action.backupJobResults, state)\r\n ),\r\n on(BackupJobActions.deleteBackupJobResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(BackupJobActions.deleteBackupJobResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(BackupJobActions.setBackupJobResults,\r\n (state, action) => adapter.setAll(action.backupJobResults, state)\r\n ),\r\n on(BackupJobActions.clearBackupJob,\r\n state => adapter.removeAll(state)\r\n ),\r\n /*** backup data reducers ***/\r\n on(BackupJobActions.getBackupJobData, \r\n (state) => ({ ...state, backupJobResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(BackupJobActions.setBackupJobDataLoaded, \r\n (state) => ({ ...state, backupJobResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(BackupJobActions.setBackupJobDataError, \r\n (state, prop) => ({ ...state, backupJobResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return backupJobReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as backupJob from '.';\r\nimport * as fromBackupJob from './backup-job.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectBackupJobState = createFeatureSelector(\"backupJob\");\r\n\r\nexport const selectBackupJobById = (id:string) => createSelector(\r\n selectBackupJobState,\r\n backupJobState => backupJobState.entities[id]\r\n);\r\n\r\nexport const selectAllBackupJobs = createSelector(\r\n selectBackupJobState,\r\n fromBackupJob.selectAll\r\n);\r\n\r\nexport const backupJobResult = createSelector(\r\n selectBackupJobState,\r\n backupJobState => backupJobState.backupJobResult\r\n);","import { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type';\r\nimport { TypeBackup } from '@app/core/gql/graphql/dps/schema/type';\r\nimport { Guid } from 'guid-typescript';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\n\r\nexport const setBackupResults = createAction(\r\n '[Backup/API] Set Backup Results', \r\n props<{ backupResults: TypeBackup[] }>()\r\n);\r\n\r\nexport const addBackupResult = createAction(\r\n '[Backup/API] Add Backup Result',\r\n props<{ backupResult: TypeBackup }>()\r\n);\r\n\r\nexport const upsertBackupResult = createAction(\r\n '[Backup/API] Upsert Backup Result',\r\n props<{ backupResult: TypeBackup }>()\r\n);\r\n\r\nexport const addBackupResults = createAction(\r\n '[Backup/API] Add Backup Results',\r\n props<{ backupResults: TypeBackup[] }>()\r\n);\r\n\r\nexport const upsertBackupResults = createAction(\r\n '[Backup/API] Upsert Backup Results',\r\n props<{ backupResults: TypeBackup[] }>()\r\n);\r\n\r\nexport const updateBackupResult = createAction(\r\n '[Backup/API] Update Backup Result',\r\n props<{ backupResult: Update }>()\r\n);\r\n\r\nexport const updateBackupResults = createAction(\r\n '[Backup/API] Update Backup Results',\r\n props<{ backupResults: Update[] }>()\r\n);\r\n\r\nexport const deleteBackupResult = createAction(\r\n '[Backup/API] Delete Backup Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteBackupResults = createAction(\r\n '[Backup/API] Delete Backup Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearBackup = createAction(\r\n '[Backup/API] Clear Backup'\r\n);\r\n\r\n/*** Backup data actions ***/\r\nexport const getBackupData = createAction(\r\n '[Backup/API] Get Backup Data'\r\n);\r\n\r\nexport const setBackupDataLoaded = createAction(\r\n '[Backup/API] Set Backup Loaded'\r\n);\r\n\r\nexport const setBackupDataError = createAction(\r\n '[Backup/API] Set Backup Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport * as BackupActions from './backup.actions';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeBackup } from '@app/core/gql/graphql/dps/schema/type';\r\n\r\n\r\nexport const backupFeatureKey = 'backup';\r\n\r\nexport interface State extends EntityState {\r\n backupResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: backup => backup.id // UUID.UUID() // backup.sessionId\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n backupResult: new N3TResult()\r\n});\r\n\r\nconst backupReducer = createReducer(\r\n initialState,\r\n on(BackupActions.addBackupResult,\r\n (state, action) => adapter.addOne(action.backupResult, state)\r\n ),\r\n on(BackupActions.upsertBackupResult,\r\n (state, action) => adapter.upsertOne(action.backupResult, state)\r\n ),\r\n on(BackupActions.addBackupResults,\r\n (state, action) => adapter.addMany(action.backupResults, state)\r\n ),\r\n on(BackupActions.upsertBackupResults,\r\n (state, action) => adapter.upsertMany(action.backupResults, state)\r\n ),\r\n on(BackupActions.updateBackupResult,\r\n (state, action) => adapter.updateOne(action.backupResult, state)\r\n ),\r\n on(BackupActions.updateBackupResults,\r\n (state, action) => adapter.updateMany(action.backupResults, state)\r\n ),\r\n on(BackupActions.deleteBackupResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(BackupActions.deleteBackupResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(BackupActions.setBackupResults,\r\n (state, action) => adapter.setAll(action.backupResults, state)\r\n ),\r\n on(BackupActions.clearBackup,\r\n state => adapter.removeAll(state)\r\n ),\r\n /*** backup data reducers ***/\r\n on(BackupActions.getBackupData, \r\n (state) => ({ ...state, backupResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(BackupActions.setBackupDataLoaded, \r\n (state) => ({ ...state, backupResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(BackupActions.setBackupDataError, \r\n (state, prop) => ({ ...state, backupResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return backupReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as backup from '.';\r\nimport * as fromBackup from './backup.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectBackupState = createFeatureSelector(\"backup\");\r\n\r\nexport const selectBackupById = (id:string) => createSelector(\r\n selectBackupState,\r\n backupState => backupState.entities[id]\r\n);\r\n\r\nexport const selectBackupByJobId = (jobid:string) => createSelector(\r\n selectBackupState,\r\n backupState => backupState.entities[jobid]\r\n);\r\n\r\nexport const selectAllBackup = createSelector(\r\n selectBackupState,\r\n fromBackup.selectAll\r\n);\r\n\r\nexport const backupResult = createSelector(\r\n selectBackupState,\r\n backupState => backupState.backupResult\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { BRSLink } from '@app/core/gql/graphql/brs/schema/type';\nimport { Recovery } from '@app/core/gql/graphql/brs/schema/input';\n\nexport const setBrsLinks = createAction(\n '[BrsLink/API] Set BrsLinks', \n props<{ brsLinks: BRSLink[] }>()\n);\n\nexport const addBrsLink = createAction(\n '[BrsLink/API] Add BrsLink',\n props<{ brsLink: BRSLink }>()\n);\n\nexport const upsertBrsLink = createAction(\n '[BrsLink/API] Upsert BrsLink',\n props<{ brsLink: BRSLink }>()\n);\n\nexport const addBrsLinks = createAction(\n '[BrsLink/API] Add BrsLinks',\n props<{ brsLinks: BRSLink[] }>()\n);\n\nexport const upsertBrsLinks = createAction(\n '[BrsLink/API] Upsert BrsLinks',\n props<{ brsLinks: BRSLink[] }>()\n);\n\nexport const updateBrsLink = createAction(\n '[BrsLink/API] Update BrsLink',\n props<{ brsLink: Update }>()\n);\n\nexport const updateBrsLinks = createAction(\n '[BrsLink/API] Update BrsLinks',\n props<{ brsLinks: Update[] }>()\n);\n\nexport const deleteBrsLink = createAction(\n '[BrsLink/API] Delete BrsLink',\n props<{ id: string }>()\n);\n\nexport const deleteBrsLinks = createAction(\n '[BrsLink/API] Delete BrsLinks',\n props<{ ids: string[] }>()\n);\n\nexport const clearBrsLinks = createAction(\n '[BrsLink/API] Clear BrsLinks'\n);\n\nexport const getBrsLinks = createAction(\n '[BrsLink/API] Get BrsLinks',\n props<{ orgInfo: Recovery }>()\n);\n\nexport const setBrsLinksLoaded = createAction(\n '[BrsLink/API] Set BrsLinks Loaded'\n);\n\nexport const getBrsLinksError = createAction(\n '[BrsLink/API] Get BrsLinks Error',\n props<{ message: string }>()\n);\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { BRSLink } from '@app/core/gql/graphql/brs/schema/type';\nimport * as BrsLinkActions from './brs-link.actions';\n\nexport const brsLinksFeatureKey = 'brsLinks';\n\nexport interface State extends EntityState {\n // additional entities state properties\n brsLinksResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: brsLink => brsLink.key + '-' + brsLink.value \n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n brsLinksResult: new N3TResult()\n});\n\nconst brsLinkReducer = createReducer(\n initialState,\n on(BrsLinkActions.addBrsLink,\n (state, action) => adapter.addOne(action.brsLink, state)\n ),\n on(BrsLinkActions.upsertBrsLink,\n (state, action) => adapter.upsertOne(action.brsLink, state)\n ),\n on(BrsLinkActions.addBrsLinks,\n (state, action) => adapter.addMany(action.brsLinks, state)\n ),\n on(BrsLinkActions.upsertBrsLinks,\n (state, action) => adapter.upsertMany(action.brsLinks, state)\n ),\n on(BrsLinkActions.updateBrsLink,\n (state, action) => adapter.updateOne(action.brsLink, state)\n ),\n on(BrsLinkActions.updateBrsLinks,\n (state, action) => adapter.updateMany(action.brsLinks, state)\n ),\n on(BrsLinkActions.deleteBrsLink,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(BrsLinkActions.deleteBrsLinks,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(BrsLinkActions.setBrsLinks,\n (state, action) => adapter.setAll(action.brsLinks, state)\n ),\n on(BrsLinkActions.clearBrsLinks,\n state => adapter.removeAll(state)\n ),\n on(BrsLinkActions.getBrsLinks, \n (state) => ({ ...state, brsLinksResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(BrsLinkActions.getBrsLinksError, \n (state, prop) => ({ ...state, brsLinksResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(BrsLinkActions.setBrsLinksLoaded, \n (state) => ({ ...state, brsLinksResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return brsLinkReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as brsLink from '.';\r\nimport * as fromBrsLink from './brs-link.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectBrsLinkState = createFeatureSelector(\"brsLinks\");\r\n\r\nexport const selectBrsLinkById = (id:string) => createSelector(\r\n selectBrsLinkState,\r\n brsLinkState => brsLinkState.entities[id]\r\n);\r\n\r\nexport const selectAllBrsLinks = createSelector(\r\n selectBrsLinkState,\r\n fromBrsLink.selectAll\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Company } from 'src/app/core/gql/graphql/company/schema/type/company';\n\nexport const setChannelCompanys = createAction(\n '[ChannelCompany/API] Set ChannelCompanys', \n props<{ channelCompanys: Company[] }>()\n);\n\nexport const addChannelCompany = createAction(\n '[ChannelCompany/API] Add ChannelCompany',\n props<{ channelCompany: Company }>()\n);\n\nexport const upsertChannelCompany = createAction(\n '[ChannelCompany/API] Upsert ChannelCompany',\n props<{ channelCompany: Company }>()\n);\n\nexport const addChannelCompanys = createAction(\n '[ChannelCompany/API] Add ChannelCompanys',\n props<{ channelCompanys: Company[] }>()\n);\n\nexport const upsertChannelCompanys = createAction(\n '[ChannelCompany/API] Upsert ChannelCompanys',\n props<{ channelCompanys: Company[] }>()\n);\n\nexport const updateChannelCompany = createAction(\n '[ChannelCompany/API] Update ChannelCompany',\n props<{ channelCompany: Update }>()\n);\n\nexport const updateChannelCompanys = createAction(\n '[ChannelCompany/API] Update ChannelCompanys',\n props<{ channelCompanys: Update[] }>()\n);\n\nexport const deleteChannelCompany = createAction(\n '[ChannelCompany/API] Delete ChannelCompany',\n props<{ id: string }>()\n);\n\nexport const deleteChannelCompanys = createAction(\n '[ChannelCompany/API] Delete ChannelCompanys',\n props<{ ids: string[] }>()\n);\n\nexport const clearChannelCompanys = createAction(\n '[ChannelCompany/API] Clear ChannelCompanys'\n);\n\nexport const getChannelCompanys = createAction(\n '[ChannelCompany/API] Get ChannelCompanys',\n\n);\n\nexport const setChannelCompanysLoaded = createAction(\n '[ChannelCompany/API] Set ChannelCompanys Loaded'\n);\n\nexport const getChannelCompanysError = createAction(\n '[ChannelCompany/API] Get ChannelCompanys Error',\n props<{ message: string }>()\n);\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Company } from 'src/app/core/gql/graphql/company/schema/type/company';\nimport * as ChannelCompanyActions from './channel-company.actions';\n\nexport const channelCompaniesFeatureKey = 'channelCompanies';\n\nexport interface State extends EntityState {\n // additional entities state properties\n channelCompaniesResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: company => company.companyId.toString()\n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n channelCompaniesResult: new N3TResult()\n});\n\nconst channelCompanyReducer = createReducer(\n initialState,\n on(ChannelCompanyActions.addChannelCompany,\n (state, action) => adapter.addOne(action.channelCompany, state)\n ),\n on(ChannelCompanyActions.upsertChannelCompany,\n (state, action) => adapter.upsertOne(action.channelCompany, state)\n ),\n on(ChannelCompanyActions.addChannelCompanys,\n (state, action) => adapter.addMany(action.channelCompanys, state)\n ),\n on(ChannelCompanyActions.upsertChannelCompanys,\n (state, action) => adapter.upsertMany(action.channelCompanys, state)\n ),\n on(ChannelCompanyActions.updateChannelCompany,\n (state, action) => adapter.updateOne(action.channelCompany, state)\n ),\n on(ChannelCompanyActions.updateChannelCompanys,\n (state, action) => adapter.updateMany(action.channelCompanys, state)\n ),\n on(ChannelCompanyActions.deleteChannelCompany,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(ChannelCompanyActions.deleteChannelCompanys,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(ChannelCompanyActions.setChannelCompanys,\n (state, action) => adapter.setAll(action.channelCompanys, state)\n ),\n on(ChannelCompanyActions.clearChannelCompanys,\n state => adapter.removeAll(state)\n ),\n on(ChannelCompanyActions.getChannelCompanys, \n (state) => ({ ...state, channelCompaniesResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(ChannelCompanyActions.getChannelCompanysError, \n (state, prop) => ({ ...state, channelCompaniesResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(ChannelCompanyActions.setChannelCompanysLoaded, \n (state) => ({ ...state, channelCompaniesResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return channelCompanyReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as channelCompany from '.';\r\nimport * as fromChannelCompany from './channel-company.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectChannelCompanyState = createFeatureSelector(\"channelCompanies\");\r\n\r\nexport const selectChannelCompanyById = (companyId:string) => createSelector(\r\n selectChannelCompanyState,\r\n channelCompanyState => channelCompanyState.entities[companyId]\r\n);\r\n\r\nexport const selectAllChannelCompanies = createSelector(\r\n selectChannelCompanyState,\r\n fromChannelCompany.selectAll\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type';\nimport { GetCompanyIdentifiers } from 'src/app/core/gql/graphql/company/schema/input';\n\nexport const setCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Set CompanyIdentifiers', \n props<{ companyIdentifiers: CompanyIdentifier[] }>()\n);\n\nexport const addCompanyIdentifier = createAction(\n '[CompanyIdentifier/API] Add CompanyIdentifier',\n props<{ companyIdentifier: CompanyIdentifier }>()\n);\n\nexport const upsertCompanyIdentifier = createAction(\n '[CompanyIdentifier/API] Upsert CompanyIdentifier',\n props<{ companyIdentifier: CompanyIdentifier }>()\n);\n\nexport const addCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Add CompanyIdentifiers',\n props<{ companyIdentifiers: CompanyIdentifier[] }>()\n);\n\nexport const upsertCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Upsert CompanyIdentifiers',\n props<{ companyIdentifiers: CompanyIdentifier[] }>()\n);\n\nexport const updateCompanyIdentifier = createAction(\n '[CompanyIdentifier/API] Update CompanyIdentifier',\n props<{ companyIdentifier: Update }>()\n);\n\nexport const updateCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Update CompanyIdentifiers',\n props<{ companyIdentifiers: Update[] }>()\n);\n\nexport const deleteCompanyIdentifier = createAction(\n '[CompanyIdentifier/API] Delete CompanyIdentifier',\n props<{ id: string }>()\n);\n\nexport const deleteCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Delete CompanyIdentifiers',\n props<{ ids: string[] }>()\n);\n\nexport const clearCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Clear CompanyIdentifiers'\n);\n\nexport const getCompanyIdentifiers = createAction(\n '[CompanyIdentifier/API] Get Company Identifier',\n props<{ getCompanyIdentifiers: GetCompanyIdentifiers }>()\n);\n\nexport const setCompanyIdentifiersLoaded = createAction(\n '[CompanyIdentifier/API] Set Company Identifier Loaded'\n);\n\nexport const getCompanyIdentifiersError = createAction(\n '[CompanyIdentifier/API] Get Company Identifier Error',\n props<{ message: string }>()\n);\n\nexport const setCompanyIdentifiersReset = createAction(\n '[CompanyIdentifier/API] Set Company Identifier Reset'\n);\n\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type';\nimport * as CompanyIdentifierActions from './company-identifier.actions';\n\nexport const companyIdentifiersFeatureKey = 'companyIdentifiers';\n\nexport interface State extends EntityState {\n // additional entities state properties\n companyIdentifierResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: companyIdentifier => companyIdentifier.companyIdentifierId\n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n companyIdentifierResult: new N3TResult()\n});\n\nconst companyIdentifierReducer = createReducer(\n initialState,\n on(CompanyIdentifierActions.addCompanyIdentifier,\n (state, action) => adapter.addOne(action.companyIdentifier, state)\n ),\n on(CompanyIdentifierActions.upsertCompanyIdentifier,\n (state, action) => adapter.upsertOne(action.companyIdentifier, state)\n ),\n on(CompanyIdentifierActions.addCompanyIdentifiers,\n (state, action) => adapter.addMany(action.companyIdentifiers, state)\n ),\n on(CompanyIdentifierActions.upsertCompanyIdentifiers,\n (state, action) => adapter.upsertMany(action.companyIdentifiers, state)\n ),\n on(CompanyIdentifierActions.updateCompanyIdentifier,\n (state, action) => adapter.updateOne(action.companyIdentifier, state)\n ),\n on(CompanyIdentifierActions.updateCompanyIdentifiers,\n (state, action) => adapter.updateMany(action.companyIdentifiers, state)\n ),\n on(CompanyIdentifierActions.deleteCompanyIdentifier,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(CompanyIdentifierActions.deleteCompanyIdentifiers,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(CompanyIdentifierActions.setCompanyIdentifiers,\n (state, action) => adapter.setAll(action.companyIdentifiers, state)\n ),\n on(CompanyIdentifierActions.clearCompanyIdentifiers,\n state => adapter.removeAll(state)\n ),\n on(CompanyIdentifierActions.getCompanyIdentifiers, \n (state) => ({ ...state, companyIdentifierResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(CompanyIdentifierActions.getCompanyIdentifiersError, \n (state, prop) => ({ ...state, companyIdentifierResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(CompanyIdentifierActions.setCompanyIdentifiersLoaded, \n (state) => ({ ...state, companyIdentifierResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(CompanyIdentifierActions.setCompanyIdentifiersReset, \n (state) => ({ ...state, companyIdentifierResult: { hasError: false, isLoaded: false, callState: CallState.INIT, error: '' }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return companyIdentifierReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as companyIdentifier from '.';\r\nimport * as fromCompanyIdentifier from './company-identifier.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectCompanyIdentifierState = createFeatureSelector(\"companyIdentifiers\");\r\n\r\nexport const selectCompanyIdentifierById = (companyIdentifierId:number) => createSelector(\r\n selectCompanyIdentifierState,\r\n companyIdentifierState => companyIdentifierState.entities[companyIdentifierId]\r\n);\r\n\r\nexport const selectAllCompanyIdentifiers = createSelector(\r\n selectCompanyIdentifierState,\r\n fromCompanyIdentifier.selectAll\r\n);","import { Guid } from 'guid-typescript';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Roles, TypeUser } from 'src/app/core/gql/graphql/permissions/schema/type';\r\nimport { GetCompanyUsersInput } from '@app/core/gql/graphql/permissions/schema/input';\r\nimport { CloudPermission } from '@app/core/gql/graphql/keycloak/schema/type/cloudPermission';\r\n\r\nexport const setCompanyUsers = createAction(\r\n '[CompanyUser/API] Set CompanyUsers', \r\n props<{ companyUsers: TypeUser[] }>()\r\n);\r\n\r\nexport const addCompanyUser = createAction(\r\n '[CompanyUser/API] Add CompanyUser',\r\n props<{ companyUser: TypeUser, createdBy?: Guid }>()\r\n);\r\n\r\nexport const upsertCompanyUser = createAction(\r\n '[CompanyUser/API] Upsert CompanyUser',\r\n props<{ companyUser: TypeUser, companyNameShort?: string, rolesPortal?: Roles[], cloudPermissions?: CloudPermission[], createdBy?: Guid }>()\r\n);\r\n\r\nexport const addCompanyUserToSSO = createAction(\r\n '[CompanyUser/API] Create CompanyUser SSO',\r\n props<{ companyUser: TypeUser, companyNameShort: string, rolesPortal: Roles[], cloudPermissions: CloudPermission[] }>()\r\n)\r\n\r\nexport const addCompanyUsers = createAction(\r\n '[CompanyUser/API] Add CompanyUsers',\r\n props<{ companyUsers: TypeUser[], createdBy?: Guid }>()\r\n);\r\n\r\nexport const upsertCompanyUsers = createAction(\r\n '[CompanyUser/API] Upsert CompanyUsers',\r\n props<{ companyUsers: TypeUser[], createdBy?: Guid }>()\r\n);\r\n\r\nexport const updateCompanyUser = createAction(\r\n '[CompanyUser/API] Update CompanyUser',\r\n props<{ companyUser: Update }>()\r\n);\r\n\r\nexport const updateCompanyUsers = createAction(\r\n '[CompanyUser/API] Update CompanyUsers',\r\n props<{ companyUsers: Update[] }>()\r\n);\r\n\r\nexport const upsertCompanyUserRoles = createAction(\r\n '[CompanyUser/API] Upsert CompanyUser Roles',\r\n props<{ companyUser: TypeUser, roles: Roles[] }>()\r\n);\r\n\r\nexport const deleteCompanyUser = createAction(\r\n '[CompanyUser/API] Delete CompanyUser',\r\n props<{ userId: string, userEmail: string }>()\r\n);\r\n\r\nexport const deleteCompanyUsers = createAction(\r\n '[CompanyUser/API] Delete CompanyUsers',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCompanyUsers = createAction(\r\n '[CompanyUser/API] Clear CompanyUsers'\r\n);\r\n\r\nexport const getCompanyUsers = createAction(\r\n '[CompanyUser/API] Get Company User',\r\n props<{ getCompanyUsers: GetCompanyUsersInput }>()\r\n);\r\n\r\nexport const setCompanyUsersLoaded = createAction(\r\n '[CompanyUser/API] Set Company Users Loaded'\r\n);\r\n\r\nexport const getCompanyUsersError = createAction(\r\n '[CompanyUser/API] Get Company Users Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const updateCompanyUserError = createAction(\r\n '[CompanyUser/API] Update Company User Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const deleteCompanyUserError = createAction(\r\n '[CompanyUser/API] Delete Company User Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const setCompanyUsersReset = createAction(\r\n '[CompanyUser/API] Set Company Users Reset'\r\n);\r\n\r\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeUser } from 'src/app/core/gql/graphql/permissions/schema/type';\r\nimport * as CompanyUserActions from './company-user.actions';\r\n\r\nexport const companyUsersFeatureKey = 'companyUsers';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n companyUserResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: companyUser => companyUser.userId\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n companyUserResult: new N3TResult()\r\n});\r\n\r\nconst companyUserReducer = createReducer(\r\n initialState,\r\n on(CompanyUserActions.addCompanyUser,\r\n (state, action) => adapter.addOne(action.companyUser, state)\r\n ),\r\n on(CompanyUserActions.upsertCompanyUser,\r\n (state, action) => adapter.upsertOne(action.companyUser, state)\r\n ),\r\n on(CompanyUserActions.addCompanyUsers,\r\n (state, action) => adapter.addMany(action.companyUsers, state)\r\n ),\r\n on(CompanyUserActions.upsertCompanyUsers,\r\n (state, action) => adapter.upsertMany(action.companyUsers, state)\r\n ),\r\n on(CompanyUserActions.upsertCompanyUserRoles,\r\n (state, action) => adapter.upsertOne(action.companyUser, state)\r\n ),\r\n on(CompanyUserActions.updateCompanyUser,\r\n (state, action) => adapter.updateOne(action.companyUser, state)\r\n ),\r\n on(CompanyUserActions.updateCompanyUsers,\r\n (state, action) => adapter.updateMany(action.companyUsers, state)\r\n ),\r\n on(CompanyUserActions.deleteCompanyUser,\r\n (state, action) => adapter.removeOne(action.userId, state)\r\n ),\r\n on(CompanyUserActions.deleteCompanyUsers,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(CompanyUserActions.setCompanyUsers,\r\n (state, action) => adapter.setAll(action.companyUsers, state)\r\n ),\r\n on(CompanyUserActions.clearCompanyUsers,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(CompanyUserActions.getCompanyUsers, \r\n (state) => ({ ...state, companyUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ), \r\n on(CompanyUserActions.getCompanyUsersError, \r\n (state, prop) => ({ ...state, companyUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(CompanyUserActions.setCompanyUsersLoaded, \r\n (state) => ({ ...state, companyUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(CompanyUserActions.setCompanyUsersReset, \r\n (state) => ({ ...state, companyUserResult: { hasError: false, isLoaded: false, callState: CallState.INIT, error: '' }})\r\n ),\r\n on(CompanyUserActions.updateCompanyUserError, \r\n (state, prop) => ({ ...state, companyUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(CompanyUserActions.deleteCompanyUserError, \r\n (state, prop) => ({ ...state, companyUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return companyUserReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as companyUser from '.';\r\nimport * as fromCompanyUser from './company-user.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectCompanyUserState = createFeatureSelector(\"companyUsers\");\r\n\r\nexport const selectCompanyUserById = (companyUserId:string) => createSelector(\r\n selectCompanyUserState,\r\n companyUserState => companyUserState.entities[companyUserId]\r\n);\r\n\r\nexport const selectAllCompanyUsers = createSelector(\r\n selectCompanyUserState,\r\n fromCompanyUser.selectAll\r\n);\r\n\r\nexport const companyUsersJobResult = createSelector(\r\n selectCompanyUserState,\r\n companyUserState => companyUserState.companyUserResult\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Company } from 'src/app/core/gql/graphql/company/schema/type/company';\nimport { Login } from '@app/core/gql/graphql/shared/schema/type';\n\nexport const setCompanys = createAction(\n '[Company/API] Set Companys', \n props<{ companys: Company[] }>()\n);\n\nexport const addCompany = createAction(\n '[Company/API] Add Company',\n props<{ company: Company }>()\n);\n\nexport const upsertCompany = createAction(\n '[Company/API] Upsert Company',\n props<{ company: Company }>()\n);\n\nexport const addCompanys = createAction(\n '[Company/API] Add Companys',\n props<{ companys: Company[] }>()\n);\n\nexport const upsertCompanys = createAction(\n '[Company/API] Upsert Companys',\n props<{ companys: Company[] }>()\n);\n\nexport const updateCompany = createAction(\n '[Company/API] Update Company',\n props<{ company: Update }>()\n);\n\nexport const updateCompanys = createAction(\n '[Company/API] Update Companys',\n props<{ companys: Update[] }>()\n);\n\nexport const deleteCompany = createAction(\n '[Company/API] Delete Company',\n props<{ id: string }>()\n);\n\nexport const deleteCompanys = createAction(\n '[Company/API] Delete Companys',\n props<{ ids: string[] }>()\n);\n\nexport const clearCompanys = createAction(\n '[Company/API] Clear Companys'\n);\n\n/*** company channel admin user actions ***/\n\nexport const getCompanyChannelAdminUser = createAction(\n '[Company/API] Get Company Channel Admin User',\n props<{ companyId: string }>()\n);\n\nexport const setCompanyChannelAdminUser = createAction(\n '[Company/API] Set Company Channel Admin User',\n props<{ adminUser: Login}>()\n)\n\nexport const setCompanyChannelAdminUserLoaded = createAction(\n '[Company/API] Set Company Channel Admin User Loaded'\n);\n\nexport const setCompanyChannelAdminUserError = createAction(\n '[Company/API] Get Company Channel Admin User Error',\n props<{ message: string }>()\n);\n\nexport const getCompanys = createAction(\n '[Company/API] Get Companys',\n props<{ getCompany: string }>()\n);\n\nexport const setCompanysLoaded = createAction(\n '[Company/API] Set Companys Loaded'\n);\n\nexport const getCompanysError = createAction(\n '[Company/API] Get Companys Error',\n props<{ message: string }>()\n);\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Company } from 'src/app/core/gql/graphql/company/schema/type/company';\nimport * as CompanyActions from './company.actions';\n\nexport const companiesFeatureKey = 'companies';\n\nexport interface State extends EntityState {\n // additional entities state properties\n adminUserResult: N3TResult;\n companysResult: N3TResult;\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: company => company.companyId.toString()\n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n adminUserResult: new N3TResult(),\n companysResult: new N3TResult()\n});\n\nconst companyReducer = createReducer(\n initialState,\n on(CompanyActions.addCompany,\n (state, action) => adapter.addOne(action.company, state)\n ),\n on(CompanyActions.upsertCompany,\n (state, action) => adapter.upsertOne(action.company, state)\n ),\n on(CompanyActions.addCompanys,\n (state, action) => adapter.addMany(action.companys, state)\n ),\n on(CompanyActions.upsertCompanys,\n (state, action) => adapter.upsertMany(action.companys, state)\n ),\n on(CompanyActions.updateCompany,\n (state, action) => adapter.updateOne(action.company, state)\n ),\n on(CompanyActions.updateCompanys,\n (state, action) => adapter.updateMany(action.companys, state)\n ),\n on(CompanyActions.deleteCompany,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(CompanyActions.deleteCompanys,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(CompanyActions.setCompanys,\n (state, action) => adapter.setAll(action.companys, state)\n ),\n on(CompanyActions.clearCompanys,\n state => adapter.removeAll(state)\n ),\n on(CompanyActions.getCompanys, \n (state) => ({ ...state, companysResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(CompanyActions.getCompanysError, \n (state, prop) => ({ ...state, companysResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(CompanyActions.setCompanysLoaded, \n (state) => ({ ...state, companysResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n /*** company channel admin user reducers ***/\n on(CompanyActions.getCompanyChannelAdminUser, \n (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n on(CompanyActions.setCompanyChannelAdminUserLoaded, \n (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(CompanyActions.setCompanyChannelAdminUserError, \n (state, prop) => ({ ...state, adminUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return companyReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as company from '.';\r\nimport { first } from 'lodash';\r\nimport * as fromCompany from './company.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectCompanyState = createFeatureSelector(\"companies\");\r\n\r\nlet selectAllCompanies = createSelector(\r\n selectCompanyState,\r\n fromCompany.selectAll\r\n);\r\n\r\nexport const selectCompany = createSelector(\r\n selectAllCompanies,\r\n allCompanies => first(allCompanies)\r\n);\r\n\r\n/*** result states ***/\r\n// export const adminUserResult = createSelector(\r\n// selectCompanyState,\r\n// companyState => companyState.adminUserResult\r\n// );\r\n\r\n\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { TypeHost } from '@app/core/gql/graphql/dps/schema/type';\r\nimport { GetBackupsAllInput } from '@app/core/gql/graphql/dps/schema/input';\r\nimport { Session } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\nexport const setDPSResults = createAction(\r\n '[DPS/API] Set DPS Results', \r\n props<{ dpsResults: TypeHost[] }>()\r\n);\r\n\r\nexport const addDPSResult = createAction(\r\n '[DPS/API] Add DPS Result',\r\n props<{ dpsResult: TypeHost }>()\r\n);\r\n\r\nexport const upsertDPSResult = createAction(\r\n '[DPS/API] Upsert DPS Result',\r\n props<{ dpsResult: TypeHost }>()\r\n);\r\n\r\nexport const addDPSResults = createAction(\r\n '[DPS/API] Add DPS Results',\r\n props<{ dpsResults: TypeHost[] }>()\r\n);\r\n\r\nexport const upsertDPSResults = createAction(\r\n '[DPS/API] Upsert DPS Results',\r\n props<{ dpsResults: TypeHost[] }>()\r\n);\r\n\r\nexport const updateDPSResult = createAction(\r\n '[DPS/API] Update DPS Result',\r\n props<{ dpsResult: Update }>()\r\n);\r\n\r\nexport const updateDPSResults = createAction(\r\n '[DPS/API] Update DPS Results',\r\n props<{ dpsResults: Update[] }>()\r\n);\r\n\r\nexport const deleteDPSResult = createAction(\r\n '[DPS/API] Delete DPS Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteDPSResults = createAction(\r\n '[DPS/API] Delete DPS Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearDPS = createAction(\r\n '[DPS/API] Clear DPS'\r\n);\r\n\r\n/*** DPS data actions ***/\r\nexport const getBackupsAllData = createAction(\r\n '[DPS/API] Get Backups Data',\r\n props<{ getBackupsAll: GetBackupsAllInput }>()\r\n);\r\n\r\nexport const setBackupsAllDataLoaded = createAction(\r\n '[DPS/API] Set Backups Loaded'\r\n);\r\n\r\nexport const setBackupsAllDataError = createAction(\r\n '[DPS/API] Set Backups Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport * as DPSActions from './dps.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeHost } from '@app/core/gql/graphql/dps/schema/type';\r\n\r\n\r\nexport const dpsFeatureKey = 'dps';\r\n\r\nexport interface State extends EntityState {\r\n dpsResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: dps => dps.id.toString()\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n dpsResult: new N3TResult()\r\n});\r\n\r\nconst dpsReducer = createReducer(\r\n initialState,\r\n on(DPSActions.addDPSResult,\r\n (state, action) => adapter.addOne(action.dpsResult, state)\r\n ),\r\n on(DPSActions.upsertDPSResult,\r\n (state, action) => adapter.upsertOne(action.dpsResult, state)\r\n ),\r\n on(DPSActions.addDPSResults,\r\n (state, action) => adapter.addMany(action.dpsResults, state)\r\n ),\r\n on(DPSActions.upsertDPSResults,\r\n (state, action) => adapter.upsertMany(action.dpsResults, state)\r\n ),\r\n on(DPSActions.updateDPSResult,\r\n (state, action) => adapter.updateOne(action.dpsResult, state)\r\n ),\r\n on(DPSActions.updateDPSResults,\r\n (state, action) => adapter.updateMany(action.dpsResults, state)\r\n ),\r\n on(DPSActions.deleteDPSResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(DPSActions.deleteDPSResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(DPSActions.setDPSResults,\r\n (state, action) => adapter.setAll(action.dpsResults, state)\r\n ),\r\n on(DPSActions.clearDPS,\r\n state => adapter.removeAll(state)\r\n ),\r\n// on(DPSActions.generateDPSResultError, \r\n// (state, prop) => ({ ...state, dpsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n// ),\r\n// on(DPSActions.generateDPSResultsError, \r\n// (state, prop) => ({ ...state, dpsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n// ),\r\n /*** dps data reducers ***/\r\n on(DPSActions.getBackupsAllData, \r\n (state) => ({ ...state, dpsResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(DPSActions.setBackupsAllDataLoaded, \r\n (state) => ({ ...state, dpsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(DPSActions.setBackupsAllDataError, \r\n (state, prop) => ({ ...state, dpsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return dpsReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as dps from '.';\r\nimport * as fromDPS from './dps.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectdpsState = createFeatureSelector(\"dps\");\r\n\r\nexport const selectdpsById = (id:string) => createSelector(\r\n selectdpsState,\r\n dpsState => dpsState.entities[id]\r\n);\r\n\r\n// export const selectdpsByHostAppId = (hostAppId: string) => createSelector(\r\n// selectdpsState,\r\n// (dpsState) => {\r\n// return dpsState.filter(TypeHost: host ==> ) \r\n// }\r\n// );\r\n\r\n\r\n// export const selectVisibleBooks = createSelector(\r\n// selectUser,\r\n// selectAllBooks,\r\n// (selectedUser: User, allBooks: Book[]) => {\r\n// if (selectedUser && allBooks) {\r\n// return allBooks.filter((book: Book) => book.userId === selectedUser.id);\r\n// } else {\r\n// return allBooks;\r\n// }\r\n// }\r\n\r\n\r\n\r\nexport const selectAllDPS = createSelector(\r\n selectdpsState,\r\n fromDPS.selectAll\r\n);\r\n\r\nexport const dpsResult = createSelector(\r\n selectdpsState,\r\n dpsState => dpsState.dpsResult\r\n);","import { createAction, props } from '@ngrx/store';\r\nimport { KeycloakUser } from '@app/core/_models/user';\r\nimport { Recovery } from '@app/core/gql/graphql/brs/schema/input';\r\nimport { GetNetworksByLocationInput } from '@app/core/gql/graphql/network/schema/input';\r\nimport { GetVMWareProviderTokensInput } from '@app/core/gql/graphql/compute/schema/input';\r\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type';\r\nimport { VDC } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { datapoint } from '@app/core/_models/datapoint';\r\n\r\n/*** admin user actions ***/\r\nexport const getGqlAdminUser = createAction(\r\n '[GQL/API] Get AdminUser',\r\n props<{ adminUser: Login }>()\r\n);\r\n\r\nexport const setGqlAdminUserLoaded = createAction(\r\n '[GQL/API] Set AdminUser Loaded'\r\n);\r\n\r\nexport const setGqlAdminUserError = createAction(\r\n '[GQL/API] Set Gql AdminUser Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n/*** auth user actions ***/\r\nexport const getGqlAuthUser = createAction(\r\n '[GQL/API] Get AuthUser',\r\n props<{ user: string, password: string }>()\r\n);\r\n\r\nexport const getGqlAuthUserByUserId = createAction(\r\n '[GQL/API] Get AuthUserByUserId',\r\n props<{ keycloakUser: KeycloakUser }>()\r\n);\r\n\r\nexport const setGqlAuthUserLoaded = createAction(\r\n '[GQL/API] Set AuthUser Loaded'\r\n);\r\n\r\nexport const setGqlAuthUserError = createAction(\r\n '[GQL/API] Set Gql AuthUser Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n/*** brs links actions ***/\r\nexport const getGqlBRSLinks = createAction(\r\n '[GQL/API] Get BrsLinks',\r\n props<{orgInfo: Recovery }>()\r\n);\r\n\r\nexport const setGqlBRSLinksLoaded = createAction(\r\n '[GQL/API] Set BrsLinks Loaded'\r\n);\r\n\r\nexport const setGqlBRSLinksError = createAction(\r\n '[GQL/API] Set Gql BRSLinks Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n/*** company data actions ***/\r\nexport const getGqlCompanyData = createAction(\r\n '[GQL/API] Get Gql CompanyData',\r\n props<{ userId: string, companyId: string }>()\r\n);\r\n\r\nexport const setGqlCompanyDataLoaded = createAction(\r\n '[GQL/API] Set Gql CompanyData Loaded'\r\n);\r\n\r\nexport const setGqlCompanyDataError = createAction(\r\n '[GQL/API] Set Gql CompanyData Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n/*** channel company data actions ***/\r\nexport const getGqlChannelCompanyData = createAction(\r\n '[GQL/API] Get Gql ChannelCompanyData',\r\n props<{ userId: string, companyId: string }>()\r\n);\r\n\r\nexport const setGqlChannelCompanyDataLoaded = createAction(\r\n '[GQL/API] Set Gql ChannelCompanyData Loaded'\r\n);\r\n\r\nexport const setGqlChannelCompanyDataError = createAction(\r\n '[GQL/API] Set Gql CompanyData Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n/*** network data actions ***/\r\nexport const getGqlNetworkData = createAction(\r\n '[GQL/API] Get NetworkData',\r\n props<{ input: GetNetworksByLocationInput }>()\r\n);\r\n\r\nexport const setGqlNetworkDataLoaded = createAction(\r\n '[GQL/API] Set NetworkData Loaded'\r\n);\r\n\r\nexport const setGqlNetworkDataError = createAction(\r\n '[GQL/API] Set Gql NetworkData Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const setVdcNetworkData = createAction(\r\n '[GQL/API] Set VDC Network Data',\r\n props<{ vdcs: VDC[] }>()\r\n)\r\n\r\n/*** provider tokens actions ***/\r\nexport const getGqlProviderTokens = createAction(\r\n '[GQL/API] Get Provider Tokens',\r\n props<{ input: GetVMWareProviderTokensInput }>()\r\n);\r\n\r\nexport const setGqlProviderTokensLoaded = createAction(\r\n '[GQL/API] Set Provider tokens Loaded'\r\n);\r\n\r\nexport const setGqlProviderTokensError = createAction(\r\n '[GQL/API] Set Gql ProviderTokens Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n/*** vdcs actions ***/\r\nexport const getGqlVdcs = createAction(\r\n '[GQL/API] Get Vdcs',\r\n props<{ userId: string, dataLoadCloudManageMetric: datapoint }>()\r\n);\r\n\r\nexport const setGqlVdcsLoaded = createAction(\r\n '[GQL/API] Set Vdcs Loaded'\r\n);\r\n\r\nexport const setGqlVdcsError = createAction(\r\n '[GQL/API] Set Gql Vdcs Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n\r\n\r\n ","import * as gql from '.';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectGqlState = createFeatureSelector(\"gql\");\r\n\r\n/*** result states ***/\r\nexport const authUserResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.authUserResult\r\n);\r\n\r\nexport const adminUserResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.adminUserResult\r\n);\r\n\r\nexport const brsLinksResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.brsLinksResult\r\n);\r\n\r\nexport const companyDataResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.companyDataResult\r\n);\r\n\r\nexport const networkDataResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.networkDataResult\r\n);\r\n\r\nexport const providerTokensResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.providerTokensResult\r\n);\r\n\r\nexport const vdcsResult = createSelector(\r\n selectGqlState,\r\n gqlState => gqlState.vdcsResult\r\n);\r\n\r\n/*** loader states ***/\r\n\r\n","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Membership } from 'src/app/core/gql/graphql/login/schema/type';\nimport { GetMembershipsInput } from 'src/app/core/gql/graphql/login/schema/input';\nimport { TypeLoginInput } from '@app/core/gql/graphql/permissions/schema/input';\n\nexport const setMemberships = createAction(\n '[Membership/API] Set Memberships', \n props<{ memberships: Membership[] }>()\n);\n\nexport const addMembership = createAction(\n '[Membership/API] Add Membership',\n props<{ membership: Membership, orgId?: string, sessionId?: string, login?: TypeLoginInput }>()\n);\n\nexport const upsertMembership = createAction(\n '[Membership/API] Upsert Membership',\n props<{ membership: Membership }>()\n);\n\nexport const addMemberships = createAction(\n '[Membership/API] Add Memberships',\n props<{ memberships: Membership[] }>()\n);\n\nexport const upsertMemberships = createAction(\n '[Membership/API] Upsert Memberships',\n props<{ memberships: Membership[] }>()\n);\n\nexport const updateMembership = createAction(\n '[Membership/API] Update Membership',\n props<{ membership: Update }>()\n);\n\nexport const updateMemberships = createAction(\n '[Membership/API] Update Memberships',\n props<{ memberships: Update[] }>()\n);\n\nexport const deleteMembership = createAction(\n '[Membership/API] Delete Membership',\n props<{ id: string }>()\n);\n\nexport const deleteMemberships = createAction(\n '[Membership/API] Delete Memberships',\n props<{ ids: string[] }>()\n);\n\nexport const clearMemberships = createAction(\n '[Membership/API] Clear Memberships'\n);\n\nexport const getMembership = createAction(\n '[Membership/API] Get Membership',\n props<{ getMembershipsInput: GetMembershipsInput }>()\n);\n\nexport const setMembershipLoaded = createAction(\n '[Membership/API] Set Membership Loaded'\n);\n\nexport const getMembershipError = createAction(\n '[Membership/API] Get Membership Error',\n props<{ message: string }>()\n);","\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';import { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Membership } from 'src/app/core/gql/graphql/login/schema/type';\nimport * as MembershipActions from './membership.actions';\n\nexport const membershipsFeatureKey = 'memberships';\n\nexport interface State extends EntityState {\n // additional entities state properties\n membershipResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: membership => membership.membershipId\n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n membershipResult: new N3TResult()\n});\n\nconst membershipReducer = createReducer(\n initialState,\n on(MembershipActions.addMembership,\n (state, action) => adapter.addOne(action.membership, state)\n ),\n on(MembershipActions.upsertMembership,\n (state, action) => adapter.upsertOne(action.membership, state)\n ),\n on(MembershipActions.addMemberships,\n (state, action) => adapter.addMany(action.memberships, state)\n ),\n on(MembershipActions.upsertMemberships,\n (state, action) => adapter.upsertMany(action.memberships, state)\n ),\n on(MembershipActions.updateMembership,\n (state, action) => adapter.updateOne(action.membership, state)\n ),\n on(MembershipActions.updateMemberships,\n (state, action) => adapter.updateMany(action.memberships, state)\n ),\n on(MembershipActions.deleteMembership,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(MembershipActions.deleteMemberships,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(MembershipActions.setMemberships,\n (state, action) => adapter.setAll(action.memberships, state)\n ),\n on(MembershipActions.clearMemberships,\n state => adapter.removeAll(state)\n ),\n on(MembershipActions.getMembership, \n (state) => ({ ...state, membershipResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(MembershipActions.getMembershipError, \n (state, prop) => ({ ...state, membershipResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(MembershipActions.setMembershipLoaded, \n (state) => ({ ...state, membershipResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return membershipReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as membership from '.';\r\nimport * as fromMembership from './membership.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectMembershipState = createFeatureSelector(\"memberships\");\r\n\r\nexport const selectMembershipById = (id:string) => createSelector(\r\n selectMembershipState,\r\n membershipState => membershipState.entities[id]\r\n);\r\n\r\nexport const selectAllMemberships = createSelector(\r\n selectMembershipState,\r\n fromMembership.selectAll\r\n);","import { Update } from '@ngrx/entity';\r\nimport { createAction, props } from \"@ngrx/store\";\r\nimport { datapoint } from \"@app/core/_models/datapoint\";\r\n\r\nexport const logout = createAction(\r\n '[METRICS/API] Logout Metric'\r\n);\r\n\r\nexport const sessionLength = createAction(\r\n '[METRICS/API] Session Length Metric'\r\n);\r\n\r\nexport const sessionTimeout = createAction(\r\n '[METRICS/API] Session Timeout Metric'\r\n);\r\n\r\nexport const dataLoadVmTimeDuration = createAction(\r\n '[METRICS/API] Data Load VM Metric Time Duration', \r\n props<{ metricCloudManage: datapoint, metricCompute: datapoint }>()\r\n);\r\n\r\nexport const persistToDb = createAction(\r\n '[METRICS/API] Persist Metric to Database', \r\n props<{ metric: datapoint }>()\r\n);\r\n\r\n// *** reducer actions ***\r\nexport const addMetric = createAction(\r\n '[METRICS/API] Add Metric', \r\n props<{ metric: datapoint }>()\r\n);\r\n\r\nexport const upsertMetric = createAction(\r\n '[METRICS/API] Upsert Metric', \r\n props<{ metric: datapoint }>()\r\n);\r\n\r\nexport const addMetrics = createAction(\r\n '[METRICS/API] Add Metrics', \r\n props<{ metrics: datapoint[] }>()\r\n);\r\n\r\nexport const upsertMetrics = createAction(\r\n '[METRICS/API] Add Metrics', \r\n props<{ metrics: datapoint[] }>()\r\n);\r\n\r\nexport const updateMetric = createAction(\r\n '[METRICS/API] Update Metric', \r\n props<{ metric: Update }>()\r\n);\r\n\r\nexport const updateMetrics = createAction(\r\n '[METRICS/API] Update Metrics', \r\n props<{ metrics: Update[] }>()\r\n);\r\n\r\nexport const deleteMetric = createAction(\r\n '[METRICS/API] Delete Metric', \r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteMetrics = createAction(\r\n '[METRICS/API] Delete Metrics', \r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const setMetric = createAction(\r\n '[METRICS/API] Set Metric', \r\n props<{ metric: datapoint, persistToDb: boolean}>() // <-- persist to database flag. Datapoints can exist in state management alone or in both the db and state dependig on the use case\r\n);\r\n\r\nexport const clearMetrics = createAction(\r\n '[METRICS/API] Clear Metrics'\r\n);\r\n","import { datapoint } from '@app/core/_models';\r\nimport * as MetricsActions from './metrics.actions';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\n\r\nexport const metricsFeatureKey = 'metrics';\r\n\r\nexport interface State extends EntityState {}\r\n \r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: datapoint => datapoint.id.toString()\r\n});\r\n \r\nexport const initialState: State = adapter.getInitialState({});\r\n\r\nconst metricsReducer = createReducer(\r\n initialState,\r\n on(MetricsActions.addMetric,\r\n (state, action) => adapter.addOne(action.metric, state)\r\n ),\r\n on(MetricsActions.upsertMetric,\r\n (state, action) => adapter.upsertOne(action.metric, state)\r\n ),\r\n on(MetricsActions.upsertMetrics,\r\n (state, action) => adapter.upsertMany(action.metrics, state)\r\n ),\r\n on(MetricsActions.addMetrics,\r\n (state, action) => adapter.addMany(action.metrics, state)\r\n ),\r\n on(MetricsActions.updateMetric,\r\n (state, action) => adapter.updateOne(action.metric, state)\r\n ),\r\n on(MetricsActions.updateMetrics,\r\n (state, action) => adapter.updateMany(action.metrics, state)\r\n ),\r\n on(MetricsActions.deleteMetric,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(MetricsActions.deleteMetrics,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(MetricsActions.setMetric,\r\n (state, action) => adapter.addOne(action.metric, state)\r\n ),\r\n on(MetricsActions.clearMetrics,\r\n state => adapter.removeAll(state)\r\n ),\r\n)\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return metricsReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n } = adapter.getSelectors();\r\n \r\n ","import * as metrics from '.';\r\nimport { first } from 'lodash';\r\nimport * as fromMetrics from './metrics.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectMetricsState = createFeatureSelector(\"metrics\");\r\n\r\nlet selectAllMetrics = createSelector(\r\n selectMetricsState,\r\n fromMetrics.selectAll\r\n);\r\n\r\nexport const selectMetricById = (id:string) => createSelector(\r\n selectMetricsState,\r\n selectedMetricState => selectedMetricState.entities[id]\r\n);\r\n\r\nexport const selectMetrics = createSelector(\r\n selectAllMetrics,\r\n metrics => first(metrics)\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { NetworkData } from '@app/core/gql/graphql/network/schema/type';\n\nexport const generateNetworkTokenError = createAction(\n '[GQL/API] Set Generate Network Token Error',\n props<{ message: string }>()\n);\n\nexport const generateNetworkTokensError = createAction(\n '[GQL/API] Set Generate Network Tokens Error',\n props<{ message: string }>()\n);\n\nexport const setNetworks = createAction(\n '[Network/API] Set Networks', \n props<{ networks: NetworkData[] }>()\n);\n\nexport const addNetwork = createAction(\n '[Network/API] Add Network',\n props<{ network: NetworkData }>()\n);\n\nexport const upsertNetwork = createAction(\n '[Network/API] Upsert Network',\n props<{ network: NetworkData }>()\n);\n\nexport const addNetworks = createAction(\n '[Network/API] Add Networks',\n props<{ networks: NetworkData[] }>()\n);\n\nexport const upsertNetworks = createAction(\n '[Network/API] Upsert Networks',\n props<{ networks: NetworkData[] }>()\n);\n\nexport const updateNetwork = createAction(\n '[Network/API] Update Network',\n props<{ network: Update }>()\n);\n\nexport const updateNetworks = createAction(\n '[Network/API] Update Networks',\n props<{ networks: Update[] }>()\n);\n\nexport const deleteNetwork = createAction(\n '[Network/API] Delete Network',\n props<{ id: string }>()\n);\n\nexport const deleteNetworks = createAction(\n '[Network/API] Delete Networks',\n props<{ ids: string[] }>()\n);\n\nexport const clearNetworks = createAction(\n '[Network/API] Clear Networks'\n);\n","import * as NetworkActions from './network.actions';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { NetworkData } from '@app/core/gql/graphql/network/schema/type';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\n\nexport const networksFeatureKey = 'networks';\n\nexport interface State extends EntityState {\n networkResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialState: State = adapter.getInitialState({\n /*** n3t result objects */ \n networkResult: new N3TResult()\n});\n\nconst networkReducer = createReducer(\n initialState,\n on(NetworkActions.addNetwork,\n (state, action) => adapter.addOne(action.network, state)\n ),\n on(NetworkActions.upsertNetwork,\n (state, action) => adapter.upsertOne(action.network, state)\n ),\n on(NetworkActions.addNetworks,\n (state, action) => adapter.addMany(action.networks, state)\n ),\n on(NetworkActions.upsertNetworks,\n (state, action) => adapter.upsertMany(action.networks, state)\n ),\n on(NetworkActions.updateNetwork,\n (state, action) => adapter.updateOne(action.network, state)\n ),\n on(NetworkActions.updateNetworks,\n (state, action) => adapter.updateMany(action.networks, state)\n ),\n on(NetworkActions.deleteNetwork,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(NetworkActions.deleteNetworks,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(NetworkActions.setNetworks,\n (state, action) => adapter.setAll(action.networks, state)\n ),\n on(NetworkActions.clearNetworks,\n state => adapter.removeAll(state)\n ),\n on(NetworkActions.generateNetworkTokenError, \n (state, prop) => ({ ...state, networkResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(NetworkActions.generateNetworkTokensError, \n (state, prop) => ({ ...state, networkResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return networkReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as network from '.';\r\nimport * as fromNetwork from './network.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectNetworkState = createFeatureSelector(\"networks\");\r\n\r\nexport const selectNetworkById = (id:string) => createSelector(\r\n selectNetworkState,\r\n networkState => networkState.entities[id]\r\n);\r\n\r\nexport const selectAllNetworks = createSelector(\r\n selectNetworkState,\r\n fromNetwork.selectAll\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Org } from '@app/core/_models';\n\nexport const setOrgs = createAction(\n '[Org/API] Set Orgs', \n props<{ orgs: Org[] }>()\n);\n\nexport const addOrg = createAction(\n '[Org/API] Add Org',\n props<{ org: Org }>()\n);\n\nexport const upsertOrg = createAction(\n '[Org/API] Upsert Org',\n props<{ org: Org }>()\n);\n\nexport const addOrgs = createAction(\n '[Org/API] Add Orgs',\n props<{ orgs: Org[] }>()\n);\n\nexport const upsertOrgs = createAction(\n '[Org/API] Upsert Orgs',\n props<{ orgs: Org[] }>()\n);\n\nexport const updateOrg = createAction(\n '[Org/API] Update Org',\n props<{ org: Update }>()\n);\n\nexport const updateOrgs = createAction(\n '[Org/API] Update Orgs',\n props<{ orgs: Update[] }>()\n);\n\nexport const deleteOrg = createAction(\n '[Org/API] Delete Org',\n props<{ id: string }>()\n);\n\nexport const deleteOrgs = createAction(\n '[Org/API] Delete Orgs',\n props<{ ids: string[] }>()\n);\n\nexport const clearOrgs = createAction(\n '[Org/API] Clear Orgs'\n);\n\nexport const getOrgs = createAction(\n '[Org/API] Get Orgs',\n\n);\n\nexport const setOrgsLoaded = createAction(\n '[Org/API] Set Orgs Loaded'\n);\n\nexport const getOrgsError = createAction(\n '[Org/API] Get Orgs Error',\n props<{ message: string }>()\n);\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Org } from '@app/core/_models';\nimport * as OrgActions from './org.actions';\n\nexport const orgsFeatureKey = 'orgs';\n\nexport interface State extends EntityState {\n // additional entities state properties\n orgsResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n orgsResult: new N3TResult()\n});\n\nconst orgReducer = createReducer(\n initialState,\n on(OrgActions.addOrg,\n (state, action) => adapter.addOne(action.org, state)\n ),\n on(OrgActions.upsertOrg,\n (state, action) => adapter.upsertOne(action.org, state)\n ),\n on(OrgActions.addOrgs,\n (state, action) => adapter.addMany(action.orgs, state)\n ),\n on(OrgActions.upsertOrgs,\n (state, action) => adapter.upsertMany(action.orgs, state)\n ),\n on(OrgActions.updateOrg,\n (state, action) => adapter.updateOne(action.org, state)\n ),\n on(OrgActions.updateOrgs,\n (state, action) => adapter.updateMany(action.orgs, state)\n ),\n on(OrgActions.deleteOrg,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(OrgActions.deleteOrgs,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(OrgActions.setOrgs,\n (state, action) => adapter.setAll(action.orgs, state)\n ),\n on(OrgActions.clearOrgs,\n state => adapter.removeAll(state)\n ),\n on(OrgActions.getOrgs, \n (state) => ({ ...state, orgsResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(OrgActions.getOrgsError, \n (state, prop) => ({ ...state, orgsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(OrgActions.setOrgsLoaded, \n (state) => ({ ...state, orgsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return orgReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as org from '.';\r\nimport * as fromOrg from './org.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectOrgState = createFeatureSelector(\"orgs\");\r\n\r\nexport const selectOrgById = (id:string) => createSelector(\r\n selectOrgState,\r\n orgState => orgState.entities[id]\r\n);\r\n\r\nexport const selectAllOrgs = createSelector(\r\n selectOrgState,\r\n fromOrg.selectAll\r\n);","import { TypeProcessJob } from '@app/core/gql/graphql/dps/schema/type';\r\nimport { Guid } from 'guid-typescript';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { ProcessJobStatusInput } from '@app/core/gql/graphql/dps/schema/input';\r\n\r\n\r\nexport const setProcessJobResults = createAction(\r\n '[Process Job/API] Set Process Job Results', \r\n props<{ processJobResults: TypeProcessJob[] }>()\r\n);\r\n\r\nexport const addProcessJobResult = createAction(\r\n '[Process Job/API] Add Process Job Result',\r\n props<{ processJobResult: TypeProcessJob }>()\r\n);\r\n\r\nexport const upsertProcessJobResult = createAction(\r\n '[Process Job/API] Upsert Process Job Result',\r\n props<{ processJobResult: TypeProcessJob }>()\r\n);\r\n\r\nexport const addProcessJobResults = createAction(\r\n '[Process Job/API] Add Process Job Results',\r\n props<{ processJobResults: TypeProcessJob[] }>()\r\n);\r\n\r\nexport const upsertProcessJobResults = createAction(\r\n '[Process Job/API] Upsert Process Job Results',\r\n props<{ processJobResults: TypeProcessJob[] }>()\r\n);\r\n\r\nexport const updateProcessJobResult = createAction(\r\n '[Process Job/API] Update Process Job Result',\r\n props<{ processJobResult: Update }>()\r\n);\r\n\r\nexport const updateProcessJobResults = createAction(\r\n '[Process Job/API] Update Process Job Results',\r\n props<{ processJobResults: Update[] }>()\r\n);\r\n\r\nexport const deleteProcessJobResult = createAction(\r\n '[Process Job/API] Delete Process Job Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteProcessJobResults = createAction(\r\n '[Process Job/API] Delete Process Job Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearProcessJob = createAction(\r\n '[Process Job/API] Clear Process Job'\r\n);\r\n\r\nexport const getProcessJob = createAction(\r\n '[Process Job/API] Get Process Job',\r\n props<{ getProcessJobStatusInput: ProcessJobStatusInput, pollingInterval: number }>()\r\n);\r\n\r\n/*** Backup data actions ***/\r\nexport const getProcessJobData = createAction(\r\n '[Process Job/API] Get Process Job Data'\r\n);\r\n\r\nexport const setProcessJobDataLoaded = createAction(\r\n '[Process Job/API] Set Process Job Loaded'\r\n);\r\n\r\nexport const setProcessJobDataError = createAction(\r\n '[Process Job/API] Set Process Job Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport * as BackupProcessJobActions from './process-job.actions';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeProcessJob } from '@app/core/gql/graphql/dps/schema/type';\r\n\r\n\r\nexport const backupProcessJobFeatureKey = 'backupProcessJob';\r\n\r\nexport interface State extends EntityState {\r\n processJobResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: backupProcessJob => backupProcessJob.Id // UUID.UUID() // backup.sessionId\r\n});\r\n\r\nexport const initialJobState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n processJobResult: new N3TResult()\r\n});\r\n\r\nconst processJobReducer = createReducer(\r\n initialJobState,\r\n on(BackupProcessJobActions.addProcessJobResult,\r\n (state, action) => adapter.addOne(action.processJobResult, state)\r\n ),\r\n on(BackupProcessJobActions.upsertProcessJobResult,\r\n (state, action) => adapter.upsertOne(action.processJobResult, state)\r\n ),\r\n on(BackupProcessJobActions.addProcessJobResults,\r\n (state, action) => adapter.addMany(action.processJobResults, state)\r\n ),\r\n on(BackupProcessJobActions.upsertProcessJobResults,\r\n (state, action) => adapter.upsertMany(action.processJobResults, state)\r\n ),\r\n on(BackupProcessJobActions.updateProcessJobResult,\r\n (state, action) => adapter.updateOne(action.processJobResult, state)\r\n ),\r\n on(BackupProcessJobActions.updateProcessJobResults,\r\n (state, action) => adapter.updateMany(action.processJobResults, state)\r\n ),\r\n on(BackupProcessJobActions.deleteProcessJobResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(BackupProcessJobActions.deleteProcessJobResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(BackupProcessJobActions.setProcessJobResults,\r\n (state, action) => adapter.setAll(action.processJobResults, state)\r\n ),\r\n on(BackupProcessJobActions.clearProcessJob,\r\n state => adapter.removeAll(state)\r\n ),\r\n /*** backup data reducers ***/\r\n on(BackupProcessJobActions.getProcessJobData, \r\n (state) => ({ ...state, processJobResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(BackupProcessJobActions.setProcessJobDataLoaded, \r\n (state) => ({ ...state, processJobResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(BackupProcessJobActions.setProcessJobDataError, \r\n (state, prop) => ({ ...state, processJobResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return processJobReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as backupProcessJob from '.';\r\nimport * as fromBackupProcessJob from './process-job.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectBackupProcessJobState = createFeatureSelector(\"backupProcessJob\");\r\n\r\nexport const selectBackupProcessJobById = (id:string) => createSelector(\r\n selectBackupProcessJobState,\r\n backupProcessJobState => backupProcessJobState.entities[id]\r\n);\r\n\r\nexport const selectAllBackupProcessJobs = createSelector(\r\n selectBackupProcessJobState,\r\n fromBackupProcessJob.selectAll\r\n);\r\n\r\nexport const backupProcessJobResult = createSelector(\r\n selectBackupProcessJobState,\r\n backupProcessJobState => backupProcessJobState.processJobResult\r\n);","import { DatacenterLocations } from '@app/core/_models/enums';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { TypeProductModel, TypeProductPriceModel } from '@app/core/gql/graphql/products/schema/type';\r\nimport { GetProductSelfServiceInput, GetProductsInput } from '@app/core/gql/graphql/products/schema/input';\r\n\r\n\r\nexport const getProducts = createAction(\r\n '[Product/API] Get Products',\r\n props<{ location: DatacenterLocations }>()\r\n)\r\n\r\nexport const generateProductError = createAction(\r\n '[Product/API] Set Generate Product Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const generateProductsError = createAction(\r\n '[Product/API] Set Generate Products Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const setProducts = createAction(\r\n '[Product/API] Set Products', \r\n props<{ products: TypeProductPriceModel[] }>()\r\n);\r\n\r\nexport const addProduct = createAction(\r\n '[Product/API] Add Product',\r\n props<{ product: TypeProductPriceModel }>()\r\n);\r\n\r\nexport const upsertProduct = createAction(\r\n '[Product/API] Upsert Product',\r\n props<{ product: TypeProductPriceModel }>()\r\n);\r\n\r\nexport const addProducts = createAction(\r\n '[Product/API] Add Products',\r\n props<{ products: TypeProductPriceModel[] }>()\r\n);\r\n\r\nexport const upsertProducts = createAction(\r\n '[Product/API] Upsert Products',\r\n props<{ products: TypeProductPriceModel[] }>()\r\n);\r\n\r\nexport const updateProduct = createAction(\r\n '[Product/API] Update Product',\r\n props<{ product: Update }>()\r\n);\r\n\r\nexport const updateProducts = createAction(\r\n '[Product/API] Update Products',\r\n props<{ products: Update[] }>()\r\n);\r\n\r\nexport const deleteProduct = createAction(\r\n '[Product/API] Delete Product',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteProducts = createAction(\r\n '[Product/API] Delete Products',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearProducts = createAction(\r\n '[Product/API] Clear Products'\r\n);\r\n\r\n/*** product data actions ***/\r\nexport const getProductData = createAction(\r\n '[Product/API] Get Product Data',\r\n props<{ getProducts: GetProductsInput }>()\r\n);\r\n\r\nexport const getProductSelfServiceData = createAction(\r\n '[Product/API] Get Product Self Service Data',\r\n props<{ getProductsSelfService: GetProductSelfServiceInput }>()\r\n);\r\n\r\nexport const setProductDataLoaded = createAction(\r\n '[Product/API] Set Product Loaded'\r\n);\r\n\r\nexport const setProductSelfServiceDataLoaded = createAction(\r\n '[Product/API] Set Product Self Service Loaded'\r\n);\r\n\r\nexport const setProductDataError = createAction(\r\n '[Product/API] Set Product Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const setProductSelfServiceDataError = createAction(\r\n '[Product/API] Set Product Self Service Error',\r\n props<{ message: string }>()\r\n);\r\n\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport * as ProductActions from './product.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeProductPriceModel } from '@app/core/gql/graphql/products/schema/type';\r\n\r\n\r\nexport const productFeatureKey = 'product';\r\n\r\nexport interface State extends EntityState {\r\n productResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: product => product.selfServiceId.toString()\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n productResult: new N3TResult()\r\n});\r\n\r\nconst productReducer = createReducer(\r\n initialState,\r\n on(ProductActions.addProduct,\r\n (state, action) => adapter.addOne(action.product, state)\r\n ),\r\n on(ProductActions.upsertProduct,\r\n (state, action) => adapter.upsertOne(action.product, state)\r\n ),\r\n on(ProductActions.addProducts,\r\n (state, action) => adapter.addMany(action.products, state)\r\n ),\r\n on(ProductActions.upsertProducts,\r\n (state, action) => adapter.upsertMany(action.products, state)\r\n ),\r\n on(ProductActions.updateProduct,\r\n (state, action) => adapter.updateOne(action.product, state)\r\n ),\r\n on(ProductActions.updateProducts,\r\n (state, action) => adapter.updateMany(action.products, state)\r\n ),\r\n on(ProductActions.deleteProduct,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(ProductActions.deleteProducts,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(ProductActions.setProducts,\r\n (state, action) => adapter.setAll(action.products, state)\r\n ),\r\n on(ProductActions.clearProducts,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(ProductActions.generateProductError, \r\n (state, prop) => ({ ...state, productResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(ProductActions.generateProductsError, \r\n (state, prop) => ({ ...state, productResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n /*** product data reducers ***/\r\n on(ProductActions.getProductData, \r\n (state) => ({ ...state, productResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(ProductActions.getProductSelfServiceData, \r\n (state) => ({ ...state, productResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(ProductActions.setProductDataLoaded, \r\n (state) => ({ ...state, productResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(ProductActions.setProductSelfServiceDataLoaded, \r\n (state) => ({ ...state, productResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(ProductActions.setProductDataError, \r\n (state, prop) => ({ ...state, productResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(ProductActions.setProductSelfServiceDataError, \r\n (state, prop) => ({ ...state, productResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n \r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return productReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as product from '.';\r\nimport * as fromProduct from './product.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectproductState = createFeatureSelector(\"product\");\r\n\r\nexport const selectproductById = (id:string) => createSelector(\r\n selectproductState,\r\n productState => productState.entities[id]\r\n);\r\n\r\nexport const selectAllProducts = createSelector(\r\n selectproductState,\r\n fromProduct.selectAll\r\n);\r\n\r\nexport const productResult = createSelector(\r\n selectproductState,\r\n productState => productState.productResult\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { TypeToken } from '@app/core/gql/graphql/compute/schema/type';\n\nexport const generateProviderTokenError = createAction(\n '[GQL/API] Set Generate ProviderToken Error',\n props<{ message: string }>()\n);\n\nexport const generateProviderTokensError = createAction(\n '[GQL/API] Set Generate ProviderTokens Error',\n props<{ message: string }>()\n);\n\nexport const setProviderTokens = createAction(\n '[ProviderToken/API] Set ProviderTokens', \n props<{ providerTokens: TypeToken[] }>()\n);\n\nexport const addProviderToken = createAction(\n '[ProviderToken/API] Add ProviderToken',\n props<{ providerToken: TypeToken }>()\n);\n\nexport const upsertProviderToken = createAction(\n '[ProviderToken/API] Upsert ProviderToken',\n props<{ providerToken: TypeToken }>()\n);\n\nexport const addProviderTokens = createAction(\n '[ProviderToken/API] Add ProviderTokens',\n props<{ providerTokens: TypeToken[] }>()\n);\n\nexport const upsertProviderTokens = createAction(\n '[ProviderToken/API] Upsert ProviderTokens',\n props<{ providerTokens: TypeToken[] }>()\n);\n\nexport const updateProviderToken = createAction(\n '[ProviderToken/API] Update ProviderToken',\n props<{ providerToken: Update }>()\n);\n\nexport const updateProviderTokens = createAction(\n '[ProviderToken/API] Update ProviderTokens',\n props<{ providerTokens: Update[] }>()\n);\n\nexport const deleteProviderToken = createAction(\n '[ProviderToken/API] Delete ProviderToken',\n props<{ id: string }>()\n);\n\nexport const deleteProviderTokens = createAction(\n '[ProviderToken/API] Delete ProviderTokens',\n props<{ ids: string[] }>()\n);\n\nexport const clearProviderTokens = createAction(\n '[ProviderToken/API] Clear ProviderTokens'\n);\n","import { Action, createReducer, on } from '@ngrx/store';\nimport * as ProviderTokenActions from './provider-token.actions';\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { TypeToken } from '@app/core/gql/graphql/compute/schema/type';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\n\nexport const providerTokensFeatureKey = 'providerTokens';\n\nexport interface State extends EntityState {\n providerTokenResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialState: State = adapter.getInitialState({\n /*** n3t result objects */ \n providerTokenResult: new N3TResult()\n});\n\nconst providerTokenReducer = createReducer(\n initialState,\n on(ProviderTokenActions.addProviderToken,\n (state, action) => adapter.addOne(action.providerToken, state)\n ),\n on(ProviderTokenActions.upsertProviderToken,\n (state, action) => adapter.upsertOne(action.providerToken, state)\n ),\n on(ProviderTokenActions.addProviderTokens,\n (state, action) => adapter.addMany(action.providerTokens, state)\n ),\n on(ProviderTokenActions.upsertProviderTokens,\n (state, action) => adapter.upsertMany(action.providerTokens, state)\n ),\n on(ProviderTokenActions.updateProviderToken,\n (state, action) => adapter.updateOne(action.providerToken, state)\n ),\n on(ProviderTokenActions.updateProviderTokens,\n (state, action) => adapter.updateMany(action.providerTokens, state)\n ),\n on(ProviderTokenActions.deleteProviderToken,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(ProviderTokenActions.deleteProviderTokens,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(ProviderTokenActions.setProviderTokens,\n (state, action) => adapter.setAll(action.providerTokens, state)\n ),\n on(ProviderTokenActions.clearProviderTokens,\n state => adapter.removeAll(state)\n ),\n on(ProviderTokenActions.generateProviderTokenError, \n (state, prop) => ({ ...state, providerTokenResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(ProviderTokenActions.generateProviderTokensError, \n (state, prop) => ({ ...state, providerTokenResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return providerTokenReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as providerToken from '.';\r\nimport * as fromProviderToken from './provider-token.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectproviderTokenState = createFeatureSelector(\"providerTokens\");\r\n\r\nexport const selectproviderTokenById = (id:string) => createSelector(\r\n selectproviderTokenState,\r\n tokens => tokens.entities[id]\r\n);\r\n\r\nexport const selectAllProviderTokens = createSelector(\r\n selectproviderTokenState,\r\n fromProviderToken.selectAll\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Roles } from '@app/core/gql/graphql/permissions/schema/type';\nimport { GetRolesInput } from '@app/core/gql/graphql/permissions/schema/input';\n\nexport const setRoles = createAction(\n '[Role/API] Set Roles', \n props<{ roles: Roles[] }>()\n);\n\nexport const addRole = createAction(\n '[Role/API] Add Role',\n props<{ role: Roles }>()\n);\n\nexport const upsertRole = createAction(\n '[Role/API] Upsert Role',\n props<{ role: Roles }>()\n);\n\nexport const addRoles = createAction(\n '[Role/API] Add Roles',\n props<{ roles: Roles[] }>()\n);\n\nexport const upsertRoles = createAction(\n '[Role/API] Upsert Roles',\n props<{ roles: Roles[] }>()\n);\n\nexport const updateRole = createAction(\n '[Role/API] Update Role',\n props<{ role: Update }>()\n);\n\nexport const updateRoles = createAction(\n '[Role/API] Update Roles',\n props<{ roles: Update[] }>()\n);\n\nexport const deleteRole = createAction(\n '[Role/API] Delete Role',\n props<{ id: string }>()\n);\n\nexport const deleteRoles = createAction(\n '[Role/API] Delete Roles',\n props<{ ids: string[] }>()\n);\n\nexport const clearRoles = createAction(\n '[Role/API] Clear Roles'\n);\n\nexport const getRole = createAction(\n '[Role/API] Get Role',\n props<{ getRolesInput: GetRolesInput }>()\n);\n\nexport const setRoleLoaded = createAction(\n '[Role/API] Set Role Loaded'\n);\n\nexport const getRoleError = createAction(\n '[Role/API] Get Role Error',\n props<{ message: string }>()\n);\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Roles } from '@app/core/gql/graphql/permissions/schema/type';\nimport * as RoleActions from './role.actions';\n\nexport const rolesFeatureKey = 'roles';\n\nexport interface State extends EntityState {\n // additional entities state properties\n roleResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: role => role.roleId\n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n roleResult: new N3TResult()\n});\n\nconst roleReducer = createReducer(\n initialState,\n on(RoleActions.addRole,\n (state, action) => adapter.addOne(action.role, state)\n ),\n on(RoleActions.upsertRole,\n (state, action) => adapter.upsertOne(action.role, state)\n ),\n on(RoleActions.addRoles,\n (state, action) => adapter.addMany(action.roles, state)\n ),\n on(RoleActions.upsertRoles,\n (state, action) => adapter.upsertMany(action.roles, state)\n ),\n on(RoleActions.updateRole,\n (state, action) => adapter.updateOne(action.role, state)\n ),\n on(RoleActions.updateRoles,\n (state, action) => adapter.updateMany(action.roles, state)\n ),\n on(RoleActions.deleteRole,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(RoleActions.deleteRoles,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(RoleActions.setRoles,\n (state, action) => adapter.setAll(action.roles, state)\n ),\n on(RoleActions.clearRoles,\n state => adapter.removeAll(state)\n ),\n on(RoleActions.getRole, \n (state) => ({ ...state, roleResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(RoleActions.getRoleError, \n (state, prop) => ({ ...state, roleResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(RoleActions.setRoleLoaded, \n (state) => ({ ...state, roleResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return roleReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as role from '.';\r\nimport * as fromRole from './role.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectRoleState = createFeatureSelector(\"roles\");\r\n\r\nexport const selectRoleById = (id:string) => createSelector(\r\n selectRoleState,\r\n roleState => roleState.entities[id]\r\n);\r\n\r\nexport const selectAllRoles = createSelector(\r\n selectRoleState,\r\n fromRole.selectAll\r\n);","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { TypeComputeTemplate } from '@app/core/gql/graphql/shared/schema/type';\r\n\r\nexport const setSelectedTemplates = createAction(\r\n '[Templates/API] Set Selected Templates', \r\n props<{ templates: TypeComputeTemplate[] }>()\r\n);\r\n\r\nexport const setSelectedTemplate = createAction(\r\n '[Templates/API] Set Selected Template', \r\n props<{ template: TypeComputeTemplate }>()\r\n);\r\n\r\nexport const addSelectedTemplate = createAction(\r\n '[Templates/API] Add Selected Template',\r\n props<{ template: TypeComputeTemplate }>()\r\n);\r\n\r\nexport const upsertSelectedTemplate = createAction(\r\n '[Templates/API] Upsert Selected Template',\r\n props<{ template: TypeComputeTemplate }>()\r\n);\r\n\r\nexport const addSelectedTemplates = createAction(\r\n '[Templates/API] Add Selected Templates',\r\n props<{ templates: TypeComputeTemplate[] }>()\r\n);\r\n\r\nexport const setSelectedTemplatesLoaded = createAction(\r\n '[Templates/API] Set Selected Templates Loaded'\r\n);\r\n\r\nexport const upsertSelectedTemplates = createAction(\r\n '[Templates/API] Upsert Selected Templates',\r\n props<{ templates: TypeComputeTemplate[] }>()\r\n);\r\n\r\nexport const updateSelectedTemplate = createAction(\r\n '[Templates/API] Update SelectedTemplate',\r\n props<{ template: Update }>()\r\n);\r\n\r\nexport const updateSelectedTemplates = createAction(\r\n '[Templates/API] Update Selected Templates',\r\n props<{ templates: Update[] }>()\r\n);\r\n\r\nexport const deleteSelectedTemplate = createAction(\r\n '[Templates/API] Delete Selected Template',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteSelectedTemplates = createAction(\r\n '[Templates/API] Delete Selected Templates',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearSelectedTemplates = createAction(\r\n '[Templates/API] Clear Selected Templates'\r\n);\r\n\r\nexport const getSelectedTemplatesLoaded = createAction(\r\n '[Templates/API] Get Selected Templates Loaded'\r\n);\r\n\r\nexport const getSelectedTemplatesError = createAction(\r\n '[Templates/API] Get Selected Templates Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeComputeTemplate } from '@app/core/gql/graphql/shared/schema/type';\r\nimport * as SelectedTemplatesActions from './selected-templates.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\n\r\nexport const selectedTemplatesFeatureKey = 'selected-templates';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n selectedTemplatesResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n selectedTemplatesResult: new N3TResult()\r\n});\r\n\r\nconst selectedTemplatesReducer = createReducer(\r\n initialState,\r\n on(SelectedTemplatesActions.addSelectedTemplate,\r\n (state, action) => adapter.addOne(action.template, state)\r\n ),\r\n on(SelectedTemplatesActions.upsertSelectedTemplate,\r\n (state, action) => adapter.upsertOne(action.template, state)\r\n ),\r\n on(SelectedTemplatesActions.addSelectedTemplates,\r\n (state, action) => adapter.addMany(action.templates, state)\r\n ),\r\n on(SelectedTemplatesActions.upsertSelectedTemplates,\r\n (state, action) => adapter.upsertMany(action.templates, state)\r\n ),\r\n on(SelectedTemplatesActions.updateSelectedTemplate,\r\n (state, action) => adapter.updateOne(action.template, state)\r\n ),\r\n on(SelectedTemplatesActions.updateSelectedTemplates,\r\n (state, action) => adapter.updateMany(action.templates, state)\r\n ),\r\n on(SelectedTemplatesActions.deleteSelectedTemplate,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(SelectedTemplatesActions.deleteSelectedTemplates,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(SelectedTemplatesActions.setSelectedTemplates,\r\n (state, action) => adapter.setAll(action.templates, state)\r\n ),\r\n on(SelectedTemplatesActions.setSelectedTemplate,\r\n (state, action) => adapter.setOne(action.template, state)\r\n ),\r\n on(SelectedTemplatesActions.clearSelectedTemplates,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(SelectedTemplatesActions.getSelectedTemplatesError, \r\n (state, prop) => ({ ...state, templatesResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n// on(SelectedTemplatesActions.getSelectedTemplates, \r\n// (state) => ({ ...state, templatesResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n// ),\r\n on(SelectedTemplatesActions.setSelectedTemplatesLoaded, \r\n (state) => ({ ...state, templatesResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return selectedTemplatesReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as selectedTemplates from '.';\r\nimport * as fromSelectedTemplates from './selected-templates.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectSelectedTemplatesState = createFeatureSelector(\"selected-templates\");\r\n\r\nexport const selectSelectedTemplateById = (id:string) => createSelector(\r\n selectSelectedTemplatesState,\r\n selectedTemplatesState => selectedTemplatesState.entities[id]\r\n);\r\n\r\nexport const selectAllSelectedTemplates = createSelector(\r\n selectSelectedTemplatesState,\r\n fromSelectedTemplates.selectAll\r\n);\r\n\r\nexport const selectedTemplatesResult = createSelector(\r\n selectSelectedTemplatesState,\r\n selectedTemplatesState => selectedTemplatesState.selectedTemplatesResult\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\n\r\n\r\nexport const toggleFixedHeader = createAction(\r\n '[Settings] Toggle Fixed Header'\r\n);\r\nexport const toggleFixedNavigation = createAction(\r\n '[Settings] Toggle Fixed Navigation'\r\n);\r\nexport const toggleMinifyNavigation = createAction(\r\n '[Settings] Toggle Minify Navigation'\r\n);\r\nexport const toggleHideNavigation = createAction(\r\n '[Settings] Toggle Hide Navigation'\r\n);\r\nexport const toggleTopNavigation = createAction(\r\n '[Settings] Toggle Top Navigation'\r\n);\r\nexport const toggleBoxedLayout = createAction(\r\n '[Settings] Toggle Boxed Layout'\r\n);\r\nexport const togglePushContent = createAction(\r\n '[Settings] Toggle Push Content'\r\n);\r\nexport const toggleNoOverlay = createAction(\r\n '[Settings] Toggle No Overlay'\r\n);\r\nexport const toggleOffCanvas = createAction(\r\n '[Settings] Toggle Off Canvas'\r\n);\r\nexport const toggleBiggerContentFont = createAction(\r\n '[Settings] Toggle Bigger Content Font'\r\n);\r\nexport const toggleHighContrastText = createAction(\r\n '[Settings] Toggle High Contrast Text'\r\n);\r\nexport const toggleDaltonism = createAction(\r\n '[Settings] Toggle Daltonism'\r\n);\r\nexport const toggleRtl = createAction(\r\n '[Settings] Toggle RTL'\r\n);\r\nexport const togglePreloaderInsise = createAction(\r\n '[Settings] Toggle Preloader Insise'\r\n);\r\nexport const toggleCleanPageBackground = createAction(\r\n '[Settings] Toggle Clean Page Background'\r\n);\r\nexport const toggleHideNavigationIcons = createAction(\r\n '[Settings] Toggle Hide Navigation Icons'\r\n);\r\nexport const toggleDisableCSSAnimation = createAction(\r\n '[Settings] Toggle Disable CSS Animation'\r\n);\r\nexport const toggleHideInfoCard = createAction(\r\n '[Settings] Toggle Hide Info Card'\r\n);\r\nexport const toggleLeanSubheader = createAction(\r\n '[Settings] Toggle Lean Subheader'\r\n);\r\nexport const toggleHierarchicalNavigation = createAction(\r\n '[Settings] Toggle Hierarchical Navigation'\r\n);\r\nexport const setGlobalFontSize = createAction(\r\n '[Settings] Set Global Font Size',\r\n props<{ size: string; }>()\r\n);\r\nexport const appReset = createAction(\r\n '[Settings] App Reset'\r\n);\r\nexport const factoryReset = createAction(\r\n '[Settings] Factory Reset'\r\n);\r\n\r\n\r\nexport const SettingsActionTypes: string[] = [\r\n toggleFixedHeader.type,\r\n toggleFixedNavigation.type,\r\n toggleMinifyNavigation.type,\r\n toggleHideNavigation.type,\r\n toggleTopNavigation.type,\r\n toggleBoxedLayout.type,\r\n togglePushContent.type,\r\n toggleNoOverlay.type,\r\n toggleOffCanvas.type,\r\n toggleBiggerContentFont.type,\r\n toggleHighContrastText.type,\r\n toggleDaltonism.type,\r\n toggleRtl.type,\r\n togglePreloaderInsise.type,\r\n toggleCleanPageBackground.type,\r\n toggleHideNavigationIcons.type,\r\n toggleDisableCSSAnimation.type,\r\n toggleHideInfoCard.type,\r\n toggleLeanSubheader.type,\r\n toggleHierarchicalNavigation.type,\r\n setGlobalFontSize.type,\r\n appReset.type,\r\n factoryReset.type,\r\n];\r\n","import { ActionReducer, Action, INIT } from '@ngrx/store';\r\n\r\nimport * as actions from './settings.actions';\r\nimport { SettingsState } from './settings.reducer';\r\nimport { handleClassCondition } from '../../shared/utils/utils.functions';\r\n\r\nconst html = document.querySelector('html');\r\nconst body = document.querySelector('body');\r\n\r\n// meta reducer that applies layout classes based on settings reducer\r\nexport function settingsMetaReducer(reducer: ActionReducer): ActionReducer {\r\n return (state: { settings: SettingsState }, action: Action) => {\r\n\r\n // build new state\r\n const result = reducer(state, action);\r\n\r\n // use our middleware only for INIT action and for Settings actions\r\n if (action.type === INIT || actions.SettingsActionTypes.includes(action.type)) {\r\n handleCssClasses(result.settings, action);\r\n }\r\n\r\n // pass state into next chain\r\n return result;\r\n };\r\n}\r\n\r\nfunction handleCssClasses(state: SettingsState, action: Action) {\r\n handleClassCondition(state.fixedHeader, 'header-function-fixed', body);\r\n handleClassCondition(state.fixedNavigation, 'nav-function-fixed', body);\r\n handleClassCondition(state.minifyNavigation, 'nav-function-minify', body);\r\n handleClassCondition(state.hideNavigation, 'nav-function-hidden', body);\r\n handleClassCondition(state.topNavigation, 'nav-function-top', body);\r\n handleClassCondition(state.boxedLayout, 'mod-main-boxed', body);\r\n handleClassCondition(state.pushContent, 'nav-mobile-push', body);\r\n handleClassCondition(state.noOverlay, 'nav-mobile-no-overlay', body);\r\n handleClassCondition(state.offCanvas, 'nav-mobile-slide-out', body);\r\n handleClassCondition(state.biggerContentFont, 'mod-bigger-font', body);\r\n handleClassCondition(state.highContrastText, 'mod-high-contrast', body);\r\n handleClassCondition(state.daltonism, 'mod-color-blind', body);\r\n handleClassCondition(state.preloaderInside, 'mod-pace-custom', body);\r\n handleClassCondition(state.cleanPageBackground, 'mod-clean-page-bg', body);\r\n handleClassCondition(state.hideNavigationIcons, 'mod-hide-nav-icons', body);\r\n handleClassCondition(state.disableCSSAnimation, 'mod-disable-animation', body);\r\n handleClassCondition(state.hideInfoCard, 'mod-hide-info-card', body);\r\n handleClassCondition(state.leanSubheader, 'mod-lean-subheader', body);\r\n handleClassCondition(state.hierarchicalNavigation, 'mod-nav-link', body);\r\n handleClassCondition(state.globalFontSize === 'sm', 'root-text-sm', html);\r\n handleClassCondition(state.globalFontSize === 'md', 'root-text', html);\r\n handleClassCondition(state.globalFontSize === 'lg', 'root-text-lg', html);\r\n handleClassCondition(state.globalFontSize === 'xl', 'root-text-xl', html);\r\n}\r\n\r\n\r\n","import { Action, createReducer, on, INIT } from '@ngrx/store';\r\nimport * as SettingsActions from './settings.actions';\r\nimport { handleClassCondition } from '../../shared/utils/utils.functions';\r\n\r\nexport const settingsFeatureKey = 'settings';\r\n\r\nexport interface SettingsState {\r\n // app layout\r\n fixedHeader: boolean;\r\n fixedNavigation: boolean;\r\n minifyNavigation: boolean;\r\n hideNavigation: boolean;\r\n topNavigation: boolean;\r\n boxedLayout: boolean;\r\n\r\n // mobile menu\r\n pushContent: boolean;\r\n noOverlay: boolean;\r\n offCanvas: boolean;\r\n\r\n // accessibility\r\n biggerContentFont: boolean;\r\n highContrastText: boolean;\r\n daltonism: boolean;\r\n preloaderInside: boolean;\r\n rtl: boolean;\r\n\r\n // global modifications\r\n cleanPageBackground: boolean;\r\n hideNavigationIcons: boolean;\r\n disableCSSAnimation: boolean;\r\n hideInfoCard: boolean;\r\n leanSubheader: boolean;\r\n hierarchicalNavigation: boolean;\r\n\r\n // global font size\r\n globalFontSize: string;\r\n}\r\n\r\n// here you can configure initial state of your app\r\n// for all your users\r\nexport const initialState: SettingsState = {\r\n // app layout\r\n fixedHeader: false,\r\n fixedNavigation: false,\r\n minifyNavigation: false,\r\n hideNavigation: false,\r\n topNavigation: false,\r\n boxedLayout: false,\r\n\r\n // mobile menu\r\n pushContent: false,\r\n noOverlay: false,\r\n offCanvas: false,\r\n\r\n // accessibility\r\n biggerContentFont: false,\r\n highContrastText: false,\r\n daltonism: false,\r\n preloaderInside: false,\r\n rtl: false,\r\n\r\n // global modifications\r\n cleanPageBackground: true,\r\n hideNavigationIcons: false,\r\n disableCSSAnimation: false,\r\n hideInfoCard: false,\r\n leanSubheader: false,\r\n hierarchicalNavigation: false,\r\n\r\n // global font size\r\n globalFontSize: 'md',\r\n\r\n};\r\n\r\nconst settingsReducer = createReducer(\r\n initialState,\r\n\r\n on(SettingsActions.toggleFixedHeader, state => ({ ...state, fixedHeader: !state.fixedHeader })),\r\n on(SettingsActions.toggleFixedNavigation, state => ({...state, fixedNavigation: !state.fixedNavigation })),\r\n on(SettingsActions.toggleMinifyNavigation, state => ({...state, minifyNavigation: !state.minifyNavigation })),\r\n on(SettingsActions.toggleHideNavigation, state => ({...state, hideNavigation: !state.hideNavigation })),\r\n on(SettingsActions.toggleTopNavigation, state => ({...state, topNavigation: !state.topNavigation })),\r\n on(SettingsActions.toggleBoxedLayout, state => ({...state, boxedLayout: !state.boxedLayout })),\r\n on(SettingsActions.togglePushContent, state => ({...state, pushContent: !state.pushContent })),\r\n on(SettingsActions.toggleNoOverlay, state => ({...state, noOverlay: !state.noOverlay })),\r\n on(SettingsActions.toggleOffCanvas, state => ({...state, offCanvas: !state.offCanvas })),\r\n on(SettingsActions.toggleBiggerContentFont, state => ({...state, biggerContentFont: !state.biggerContentFont })),\r\n on(SettingsActions.toggleHighContrastText, state => ({...state, highContrastText: !state.highContrastText })),\r\n on(SettingsActions.toggleDaltonism, state => ({...state, daltonism: !state.daltonism })),\r\n on(SettingsActions.toggleRtl, state => ({...state, rtl: !state.rtl })),\r\n on(SettingsActions.togglePreloaderInsise, state => ({...state, preloaderInside: !state.preloaderInside })),\r\n on(SettingsActions.toggleCleanPageBackground, state => ({...state, cleanPageBackground: !state.cleanPageBackground })),\r\n on(SettingsActions.toggleHideNavigationIcons, state => ({...state, hideNavigationIcons: !state.hideNavigationIcons })),\r\n on(SettingsActions.toggleDisableCSSAnimation, state => ({...state, disableCSSAnimation: !state.disableCSSAnimation })),\r\n on(SettingsActions.toggleHideInfoCard, state => ({...state, hideInfoCard: !state.hideInfoCard })),\r\n on(SettingsActions.toggleLeanSubheader, state => ({...state, leanSubheader: !state.leanSubheader })),\r\n on(SettingsActions.toggleHierarchicalNavigation, state => ({...state, hierarchicalNavigation: !state.hierarchicalNavigation })),\r\n on(SettingsActions.setGlobalFontSize, (state, action) => ({...state, globalFontSize: action.size })),\r\n\r\n on(SettingsActions.appReset, () => ({...initialState})),\r\n\r\n\r\n);\r\n\r\nexport function reducer(state: SettingsState, action: Action) {\r\n return settingsReducer(state, action);\r\n}\r\n\r\n","import { createFeatureSelector } from '@ngrx/store';\r\nimport { SettingsState } from './settings.reducer';\r\n\r\nexport const selectSettingsState = createFeatureSelector('settings');\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { TypeVMSnapshot } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { GetSnapProtectStatusInput } from '@app/core/gql/graphql/compute/schema/input';\r\n\r\nexport const setTypeVMSnapshot = createAction(\r\n '[VmSnapshot/API] Set TypeVMSnapshots', \r\n props<{ typeVMSnapshots: TypeVMSnapshot[] }>()\r\n);\r\n\r\nexport const addTypeVMSnapshot = createAction(\r\n '[VmSnapshot/API] Add TypeVMSnapshot',\r\n props<{ typeVMSnapshot: TypeVMSnapshot }>()\r\n);\r\n\r\nexport const upsertTypeVMSnapshot = createAction(\r\n '[VmSnapshot/API] Upsert TypeVMSnapshot',\r\n props<{ typeVMSnapshot: TypeVMSnapshot }>()\r\n);\r\n\r\nexport const addTypeVMSnapshots = createAction(\r\n '[VmSnapshot/API] Add TypeVMSnapshots',\r\n props<{ typeVMSnapshots: TypeVMSnapshot[] }>()\r\n);\r\n\r\nexport const upsertTypeVMSnapshots = createAction(\r\n '[VmSnapshot/API] Upsert TypeVMSnapshots',\r\n props<{ typeVMSnapshots: TypeVMSnapshot[] }>()\r\n);\r\n\r\nexport const updateTypeVMSnapshot = createAction(\r\n '[VmSnapshot/API] Update TypeVMSnapshot',\r\n props<{ typeVMSnapshot: Update }>()\r\n);\r\n\r\nexport const updateTypeVMSnapshots = createAction(\r\n '[VmSnapshot/API] Update TypeVMSnapshots',\r\n props<{ typeVMSnapshots: Update[] }>()\r\n);\r\n\r\nexport const deleteTypeVMSnapshot = createAction(\r\n '[VmSnapshot/API] Delete TypeVMSnapshot',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTypeVMSnapshots = createAction(\r\n '[VmSnapshot/API] Delete TypeVMSnapshots',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTypeVMSnapshots = createAction(\r\n '[VmSnapshot/API] Clear TypeVMSnapshots'\r\n);\r\n\r\nexport const getTypeVMSnapshot = createAction(\r\n '[VmSnapshot/API] Get TypeVMSnapshot',\r\n props<{ getSnapProtectStatusInput: GetSnapProtectStatusInput }>()\r\n);\r\n\r\nexport const getTypeVMSnapshotStatus = createAction(\r\n '[VmSnapshot/API] Get TypeVMSnapshot Status',\r\n props<{ getSnapProtectStatusInput: GetSnapProtectStatusInput }>()\r\n)\r\n\r\nexport const setTypeVMSnapshotStatusLoaded = createAction(\r\n '[VmSnapshot/API] Set TypeVMSnapshot Loaded'\r\n);\r\n\r\nexport const getTypeVMSnapshotStatusError = createAction(\r\n '[VmSnapshot/API] Get TypeVMSnapshot Error',\r\n props<{ message: string }>()\r\n);\r\n","import { GetTaskInput } from './../../core/gql/graphql/compute/schema/input/getTaskInput';\nimport { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { Task } from '@app/core/gql/graphql/compute/schema/type';\nimport { GetTasksInput } from '@app/core/gql/graphql/compute/schema/input';\nimport { GetAllTasksInput } from './../../core/gql/graphql/compute/schema/input/getAllTasksInput';\n\nexport const setTasks = createAction(\n '[Task/API] Set Tasks', \n props<{ tasks: Task[] }>()\n);\n\nexport const setTask = createAction(\n '[Task/API] Set Task', \n props<{ task: Task }>()\n);\n\nexport const addTask = createAction(\n '[Task/API] Add Task',\n props<{ task: Task }>()\n);\n\nexport const getTask = createAction(\n '[Task/API] Get Task',\n props<{ getTask: GetTaskInput }>()\n);\n\nexport const upsertTask = createAction(\n '[Task/API] Upsert Task',\n props<{ task: Task }>()\n);\n\nexport const getTasks = createAction(\n '[Task/API] Get Tasks',\n props<{ getTasksInput: GetTasksInput }>()\n);\n\nexport const getAllTasks = createAction(\n '[Task/API] Get All Tasks',\n props<{ getAllTasksInput: GetAllTasksInput, pollingInterval: number }>()\n);\n\nexport const addTasks = createAction(\n '[Task/API] Add Tasks',\n props<{ tasks: Task[] }>()\n);\n\nexport const setTasksLoaded = createAction(\n '[Task/API] Set Tasks Loaded'\n);\n\nexport const upsertTasks = createAction(\n '[Task/API] Upsert Tasks',\n props<{ tasks: Task[] }>()\n);\n\nexport const updateTask = createAction(\n '[Task/API] Update Task',\n props<{ task: Update }>()\n);\n\nexport const updateTasks = createAction(\n '[Task/API] Update Tasks',\n props<{ tasks: Update[] }>()\n);\n\nexport const deleteTask = createAction(\n '[Task/API] Delete Task',\n props<{ id: string }>()\n);\n\nexport const deleteTasks = createAction(\n '[Task/API] Delete Tasks',\n props<{ ids: string[] }>()\n);\n\nexport const clearTasks = createAction(\n '[Task/API] Clear Tasks'\n);\n\nexport const getTasksLoaded = createAction(\n '[Task/API] Get Tasks Loaded'\n);\n\nexport const getTasksError = createAction(\n '[Task/API] Get Tasks Error',\n props<{ message: string }>()\n);\n\nexport const getTaskLoaded = createAction(\n '[Task/API] Get Task Loaded'\n);\n\nexport const getTaskError = createAction(\n '[Task/API] Get Task Error',\n props<{ message: string }>()\n);","import { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Task } from '@app/core/gql/graphql/compute/schema/type';\nimport * as TaskActions from './task.actions';\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\n\nexport const tasksFeatureKey = 'tasks';\n\nexport interface State extends EntityState {\n // additional entities state properties\n tasksResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n tasksResult: new N3TResult()\n});\n\nconst taskReducer = createReducer(\n initialState,\n on(TaskActions.addTask,\n (state, action) => adapter.addOne(action.task, state)\n ),\n on(TaskActions.upsertTask,\n (state, action) => adapter.upsertOne(action.task, state)\n ),\n on(TaskActions.addTasks,\n (state, action) => adapter.addMany(action.tasks, state)\n ),\n on(TaskActions.upsertTasks,\n (state, action) => adapter.upsertMany(action.tasks, state)\n ),\n on(TaskActions.updateTask,\n (state, action) => adapter.updateOne(action.task, state)\n ),\n on(TaskActions.updateTasks,\n (state, action) => adapter.updateMany(action.tasks, state)\n ),\n on(TaskActions.deleteTask,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(TaskActions.deleteTasks,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(TaskActions.setTasks,\n (state, action) => adapter.setAll(action.tasks, state)\n ),\n on(TaskActions.setTask,\n (state, action) => adapter.setOne(action.task, state)\n ),\n on(TaskActions.clearTasks,\n state => adapter.removeAll(state)\n ),\n on(TaskActions.getTasksError, \n (state, prop) => ({ ...state, tasksResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(TaskActions.getTasks, \n (state) => ({ ...state, tasksResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n on(TaskActions.getAllTasks, \n (state) => ({ ...state, tasksResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n on(TaskActions.setTasksLoaded, \n (state) => ({ ...state, tasksResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return taskReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as task from '.';\r\nimport * as fromTask from './task.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectTaskState = createFeatureSelector(\"tasks\");\r\n\r\nexport const selectTaskById = (id:string) => createSelector(\r\n selectTaskState,\r\n taskState => taskState.entities[id]\r\n);\r\n\r\nexport const selectAllTasks = createSelector(\r\n selectTaskState,\r\n fromTask.selectAll\r\n);\r\n\r\nexport const tasksResult = createSelector(\r\n selectTaskState,\r\n tasksState => tasksState.tasksResult\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Org, TypeComputeTemplate } from '@app/core/gql/graphql/shared/schema/type';\r\n\r\nexport const setTemplates = createAction(\r\n '[Templates/API] Set Templates', \r\n props<{ templates: TypeComputeTemplate[] }>()\r\n);\r\n\r\nexport const setTemplate = createAction(\r\n '[Templates/API] Set Template', \r\n props<{ template: TypeComputeTemplate }>()\r\n);\r\n\r\nexport const addTemplate = createAction(\r\n '[Templates/API] Add Template',\r\n props<{ template: TypeComputeTemplate }>()\r\n);\r\n\r\nexport const upsertTemplate = createAction(\r\n '[Templates/API] Upsert Template',\r\n props<{ template: TypeComputeTemplate }>()\r\n);\r\n\r\nexport const getTemplates = createAction(\r\n '[Templates/API] Get Templates',\r\n props<{ getTemplatesInput: Org[] }>()\r\n);\r\n\r\nexport const addTemplates = createAction(\r\n '[Templates/API] Add Templates',\r\n props<{ templates: TypeComputeTemplate[] }>()\r\n);\r\n\r\nexport const setTemplatesLoaded = createAction(\r\n '[Templates/API] Set Templates Loaded'\r\n);\r\n\r\nexport const upsertTemplates = createAction(\r\n '[Templates/API] Upsert Templates',\r\n props<{ templates: TypeComputeTemplate[] }>()\r\n);\r\n\r\nexport const updateTemplate = createAction(\r\n '[Templates/API] Update Template',\r\n props<{ template: Update }>()\r\n);\r\n\r\nexport const updateTemplates = createAction(\r\n '[Templates/API] Update Templates',\r\n props<{ templates: Update[] }>()\r\n);\r\n\r\nexport const deleteTemplate = createAction(\r\n '[Templates/API] Delete Template',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTemplates = createAction(\r\n '[Templates/API] Delete Templates',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTemplates = createAction(\r\n '[Templates/API] Clear Templates'\r\n);\r\n\r\nexport const getTemplatesLoaded = createAction(\r\n '[Templates/API] Get Templates Loaded'\r\n);\r\n\r\nexport const getTemplatesError = createAction(\r\n '[Templates/API] Get Templates Error',\r\n props<{ message: string }>()\r\n);","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeComputeTemplate } from '@app/core/gql/graphql/shared/schema/type';\r\nimport * as TemplatesActions from './templates.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\n\r\nexport const templatesFeatureKey = 'templates';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n templatesResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n templatesResult: new N3TResult()\r\n});\r\n\r\nconst templatesReducer = createReducer(\r\n initialState,\r\n on(TemplatesActions.addTemplate,\r\n (state, action) => adapter.addOne(action.template, state)\r\n ),\r\n on(TemplatesActions.upsertTemplate,\r\n (state, action) => adapter.upsertOne(action.template, state)\r\n ),\r\n on(TemplatesActions.addTemplates,\r\n (state, action) => adapter.addMany(action.templates, state)\r\n ),\r\n on(TemplatesActions.upsertTemplates,\r\n (state, action) => adapter.upsertMany(action.templates, state)\r\n ),\r\n on(TemplatesActions.updateTemplate,\r\n (state, action) => adapter.updateOne(action.template, state)\r\n ),\r\n on(TemplatesActions.updateTemplates,\r\n (state, action) => adapter.updateMany(action.templates, state)\r\n ),\r\n on(TemplatesActions.deleteTemplate,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(TemplatesActions.deleteTemplates,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(TemplatesActions.setTemplates,\r\n (state, action) => adapter.setAll(action.templates, state)\r\n ),\r\n on(TemplatesActions.setTemplate,\r\n (state, action) => adapter.setOne(action.template, state)\r\n ),\r\n on(TemplatesActions.clearTemplates,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(TemplatesActions.getTemplatesError, \r\n (state, prop) => ({ ...state, templatesResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(TemplatesActions.getTemplates, \r\n (state) => ({ ...state, templatesResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(TemplatesActions.setTemplatesLoaded, \r\n (state) => ({ ...state, templatesResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return templatesReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as templates from '.';\r\nimport * as fromTemplates from './templates.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectTemplatesState = createFeatureSelector(\"templates\");\r\n\r\nexport const selectTemplatesById = (id:string) => createSelector(\r\n selectTemplatesState,\r\n templatesState => templatesState.entities[id]\r\n);\r\n\r\nexport const selectAllTemplates = createSelector(\r\n selectTemplatesState,\r\n fromTemplates.selectAll\r\n);\r\n\r\nexport const templatesResult = createSelector(\r\n selectTemplatesState,\r\n templatesState => templatesState.templatesResult\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { GetTenantOfferingItemsByEditionInput } from '@app/core/gql/graphql/backup/schema/input';\r\nimport { GetOfferingItem } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\nexport const setTenantOfferingItemsByEditionResults = createAction(\r\n '[TenantOfferingItems/API] Set Tenant Offering Items Results', \r\n props<{ getTenantOfferingItemsByEditionInput: GetOfferingItem[] }>()\r\n);\r\n\r\nexport const setTenantOfferingItemsByEditionResult = createAction(\r\n '[TenantOfferingItems/API] Set Tenant Offering Items Result', \r\n props<{ getTenantOfferingItemsByEditionInput: GetOfferingItem }>()\r\n );\r\n\r\nexport const addTenantOfferingItemsByEditionResult = createAction(\r\n '[TenantOfferingItems/API] Add Tenant Offering Items Result',\r\n props<{ getTenantOfferingItemsByEditionInput: GetOfferingItem }>()\r\n);\r\n\r\nexport const upsertTenantOfferingItemsByEditionResult = createAction(\r\n '[TenantOfferingItems/API] Upsert Tenant Offering Items Result',\r\n props<{ getTenantOfferingItemsByEditionInput: GetOfferingItem }>()\r\n);\r\n\r\nexport const addTenantOfferingItemsByEditionResults = createAction(\r\n '[TenantOfferingItems/API] Add Tenant Offering Items Results',\r\n props<{ getTenantOfferingItemsByEditionInput: GetOfferingItem[] }>()\r\n);\r\n\r\nexport const upsertTenantOfferingItemsByEditionResults = createAction(\r\n '[TenantOfferingItems/API] Upsert Tenant Offering Items Results',\r\n props<{ getTenantOfferingItemsByEditionInput: GetOfferingItem[] }>()\r\n);\r\n\r\nexport const updateTenantOfferingItemsByEditionResult = createAction(\r\n '[TenantOfferingItems/API] Update Tenant Offering Items Result',\r\n props<{ getTenantOfferingItemsByEditionInput: Update }>()\r\n);\r\n\r\nexport const updateTenantOfferingItemsByEditionResults = createAction(\r\n '[TenantOfferingItems/API] Update Tenant Offering Items Results',\r\n props<{ getTenantOfferingItemsByEditionInput: Update[] }>()\r\n);\r\n\r\nexport const deleteTenantOfferingItemsByEditionResult = createAction(\r\n '[TenantOfferingItems/API] Delete Tenant Offering Items Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTenantOfferingItemsByEditionResults = createAction(\r\n '[TenantOfferingItems/API] Delete Tenant Offering Items Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTenantOfferingItemsByEdition = createAction(\r\n '[TenantOfferingItems/API] Clear Tenant Offering Items'\r\n);\r\n\r\n/*** Tenant Offering Items data actions ***/\r\nexport const getTenantOfferingItemsByEdition = createAction(\r\n '[TenantOfferingItems/API] Get Tenant Offering Items By Edition Data',\r\n props<{ getTenantOfferingItemsByEditionInput: GetTenantOfferingItemsByEditionInput }>()\r\n);\r\n\r\nexport const setTenantOfferingItemsByEditionDataLoaded = createAction(\r\n '[TenantOfferingItems/API] Set Tenant Offering Items By Edition Loaded' \r\n);\r\n\r\n\r\nexport const setTenantOfferingItemsByEditionDataError = createAction(\r\n '[TenantOfferingItems/API] Set Tenant Offering Items Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as TenantOfferingItemsActions from './tenant-offering-items.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { GetOfferingItem } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\nexport const offeringItemsReducerFeatureKey = 'offeringitems';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n offeringItemsResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n offeringItemsResult: new N3TResult()\r\n});\r\n\r\nconst offeringItemsReducer = createReducer(\r\n initialState,\r\n on(TenantOfferingItemsActions.addTenantOfferingItemsByEditionResult,\r\n (state, action) => adapter.addOne(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.addTenantOfferingItemsByEditionResults,\r\n (state, action) => adapter.addMany(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.upsertTenantOfferingItemsByEditionResult,\r\n (state, action) => adapter.upsertOne(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.upsertTenantOfferingItemsByEditionResults,\r\n (state, action) => adapter.upsertMany(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.updateTenantOfferingItemsByEditionResult,\r\n (state, action) => adapter.updateOne(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.updateTenantOfferingItemsByEditionResults,\r\n (state, action) => adapter.updateMany(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.deleteTenantOfferingItemsByEditionResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(TenantOfferingItemsActions.deleteTenantOfferingItemsByEditionResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(TenantOfferingItemsActions.setTenantOfferingItemsByEditionResults,\r\n (state, action) => adapter.setAll(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.setTenantOfferingItemsByEditionResult,\r\n (state, action) => adapter.setOne(action.getTenantOfferingItemsByEditionInput, state)\r\n ),\r\n on(TenantOfferingItemsActions.clearTenantOfferingItemsByEdition,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(TenantOfferingItemsActions.setTenantOfferingItemsByEditionDataError, \r\n (state, prop) => ({ ...state, offeringItemsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(TenantOfferingItemsActions.getTenantOfferingItemsByEdition, \r\n (state) => ({ ...state, offeringItemsResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(TenantOfferingItemsActions.setTenantOfferingItemsByEditionDataLoaded, \r\n (state) => ({ ...state, offeringItemsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return offeringItemsReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as offeringItems from '.';\r\nimport * as fromOfferingItems from './tenant-offering-items.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectOfferingItemsState = createFeatureSelector(\"offeringitems\");\r\n\r\nexport const selectOfferingItemsById = (id:string) => createSelector(\r\n selectOfferingItemsState,\r\n offeringItemsState => offeringItemsState.entities[id]\r\n);\r\n\r\nexport const selectAllOfferingItems = createSelector(\r\n selectOfferingItemsState,\r\n fromOfferingItems.selectAll\r\n);\r\n\r\nexport const offeringItemsResult = createSelector(\r\n selectOfferingItemsState,\r\n offeringItemsState => offeringItemsState.offeringItemsResult\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\nimport { GetTenantUsagesInput } from '@app/core/gql/graphql/backup/schema/input';\r\nimport { TenantResources } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\nexport const setTenantUsagesResults = createAction(\r\n '[TenantUsages/API] Set Tenant Usages Results', \r\n props<{ getTenantUsagesInput: TenantResources[] }>()\r\n);\r\n\r\nexport const setTenantUsagesResult = createAction(\r\n '[TenantUsages/API] Set Tenant Usages Result', \r\n props<{ getTenantUsagesInput: TenantResources }>()\r\n );\r\n\r\nexport const addTenantUsagesResult = createAction(\r\n '[TenantUsages/API] Add Tenant Usages Result',\r\n props<{ getTenantUsagesInput: TenantResources }>()\r\n);\r\n\r\nexport const upsertTenantUsagesResult = createAction(\r\n '[TenantUsages/API] Upsert Tenant Usages Result',\r\n props<{ getTenantUsagesInput: TenantResources }>()\r\n);\r\n\r\nexport const addTenantUsagesResults = createAction(\r\n '[TenantUsages/API] Add Tenant Usages Results',\r\n props<{ getTenantUsagesInput: TenantResources[] }>()\r\n);\r\n\r\nexport const upsertTenantUsagesResults = createAction(\r\n '[TenantUsages/API] Upsert Tenant Usages Results',\r\n props<{ getTenantUsagesInput: TenantResources[] }>()\r\n);\r\n\r\nexport const updateTenantUsagesResult = createAction(\r\n '[TenantUsages/API] Update Tenant Usages Result',\r\n props<{ getTenantUsagesInput: Update }>()\r\n);\r\n\r\nexport const updateTenantUsagesResults = createAction(\r\n '[TenantUsages/API] Update Tenant Usages Results',\r\n props<{ getTenantUsagesInput: Update[] }>()\r\n);\r\n\r\nexport const deleteTenantUsagesResult = createAction(\r\n '[TenantUsages/API] Delete Tenant Usages Result',\r\n props<{ id: string }>()\r\n);\r\n\r\nexport const deleteTenantUsagesResults = createAction(\r\n '[TenantUsages/API] Delete Tenant Usages Results',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearTenantUsages = createAction(\r\n '[TenantUsages/API] Clear Tenant Usages'\r\n);\r\n\r\n/*** Tenant Usages data actions ***/\r\nexport const getTenantUsages = createAction(\r\n '[TenantUsages/API] Get Tenant Usages Data',\r\n props<{ getTenantUsagesInput: GetTenantUsagesInput }>()\r\n);\r\n\r\nexport const setTenantUsagesDataLoaded = createAction(\r\n '[TenantUsages/API] Set Tenant Usages By Edition Loaded' \r\n);\r\n\r\n\r\nexport const setTenantUsagesDataError = createAction(\r\n '[TenantUsages/API] Set Tenant Usages Error',\r\n props<{ message: string }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as TenantUsagesActions from './tenant-usages.actions';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { TenantResources } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\nexport const tenantUsagesReducerFeatureKey = 'tenantusages';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n tenantUsagesResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter();\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n tenantUsagesResult: new N3TResult()\r\n});\r\n\r\nconst tenantUsagesReducer = createReducer(\r\n initialState,\r\n on(TenantUsagesActions.addTenantUsagesResult,\r\n (state, action) => adapter.addOne(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.addTenantUsagesResults,\r\n (state, action) => adapter.addMany(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.upsertTenantUsagesResult,\r\n (state, action) => adapter.upsertOne(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.upsertTenantUsagesResults,\r\n (state, action) => adapter.upsertMany(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.updateTenantUsagesResult,\r\n (state, action) => adapter.updateOne(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.updateTenantUsagesResults,\r\n (state, action) => adapter.updateMany(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.deleteTenantUsagesResult,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(TenantUsagesActions.deleteTenantUsagesResults,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(TenantUsagesActions.setTenantUsagesResults,\r\n (state, action) => adapter.setAll(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.setTenantUsagesResult,\r\n (state, action) => adapter.setOne(action.getTenantUsagesInput, state)\r\n ),\r\n on(TenantUsagesActions.clearTenantUsages,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(TenantUsagesActions.setTenantUsagesDataError, \r\n (state, prop) => ({ ...state, tenantUsagesResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(TenantUsagesActions.getTenantUsages, \r\n (state) => ({ ...state, tenantUsagesResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ),\r\n on(TenantUsagesActions.setTenantUsagesDataLoaded, \r\n (state) => ({ ...state, tenantUsagesResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return tenantUsagesReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import * as usages from '.';\r\nimport * as fromUsages from './tenant-usages.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectUsagesState = createFeatureSelector(\"tenantusages\");\r\n\r\nexport const selectUsagesById = (id:string) => createSelector(\r\n selectUsagesState,\r\n usagesState => usagesState.entities[id]\r\n);\r\n\r\nexport const selectAllUsages = createSelector(\r\n selectUsagesState,\r\n fromUsages.selectAll\r\n);\r\n\r\nexport const tenantUsagesResult = createSelector(\r\n selectUsagesState,\r\n usagesState => usagesState.tenantUsagesResult\r\n);\r\n\r\n","import { Update } from '@ngrx/entity';\nimport { createAction, props } from '@ngrx/store';\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type';\nimport { GetLoginInput } from 'src/app/core/gql/graphql/login/schema/input';\n\nexport const setUserLogins = createAction(\n '[UserLogin/API] Set UserLogins', \n props<{ userLogins: Login[] }>()\n);\n\nexport const addUserLogin = createAction(\n '[UserLogin/API] Add UserLogin',\n props<{ userLogin: Login }>()\n);\n\nexport const upsertUserLogin = createAction(\n '[UserLogin/API] Upsert UserLogin',\n props<{ userLogin: Login }>()\n);\n\nexport const addUserLogins = createAction(\n '[UserLogin/API] Add UserLogins',\n props<{ userLogins: Login[] }>()\n);\n\nexport const upsertUserLogins = createAction(\n '[UserLogin/API] Upsert UserLogins',\n props<{ userLogins: Login[] }>()\n);\n\nexport const updateUserLogin = createAction(\n '[UserLogin/API] Update UserLogin',\n props<{ userLogin: Update }>()\n);\n\nexport const updateUserLogins = createAction(\n '[UserLogin/API] Update UserLogins',\n props<{ userLogins: Update[] }>()\n);\n\nexport const deleteUserLogin = createAction(\n '[UserLogin/API] Delete UserLogin',\n props<{ id: string }>()\n);\n\nexport const deleteUserLogins = createAction(\n '[UserLogin/API] Delete UserLogins',\n props<{ ids: string[] }>()\n);\n\nexport const clearUserLogins = createAction(\n '[UserLogin/API] Clear UserLogins'\n);\n\nexport const getUserLogin = createAction(\n '[UserLogin/API] Get UserLogin',\n props<{ getLoginInput: GetLoginInput }>()\n);\n\nexport const setUserLoginLoaded = createAction(\n '[UserLogin/API] Set UserLogin Loaded'\n);\n\nexport const getUserLoginError = createAction(\n '[UserLogin/API] Get UserLogin Error',\n props<{ message: string }>()\n);\nexport function setGqlChannelCompanyData(): any {\n throw new Error('Function not implemented.');\n}\n\nexport function setGqlChannelCompanyDataLoaded(): any {\n throw new Error('Function not implemented.');\n}\n\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type';\nimport * as UserLoginActions from './user-login.actions';\n\nexport const userLoginsFeatureKey = 'userLogins';\n\nexport interface State extends EntityState {\n // additional entities state properties\n userLoginResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter({\n selectId: login => login.userId // <-- set a custom id field for the entity adapter\n});\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n userLoginResult: new N3TResult()\n});\n\nconst userLoginReducer = createReducer(\n initialState,\n on(UserLoginActions.addUserLogin,\n (state, action) => adapter.addOne(action.userLogin, state)\n ),\n on(UserLoginActions.upsertUserLogin,\n (state, action) => adapter.upsertOne(action.userLogin, state)\n ),\n on(UserLoginActions.addUserLogins,\n (state, action) => adapter.addMany(action.userLogins, state)\n ),\n on(UserLoginActions.upsertUserLogins,\n (state, action) => adapter.upsertMany(action.userLogins, state)\n ),\n on(UserLoginActions.updateUserLogin,\n (state, action) => adapter.updateOne(action.userLogin, state)\n ),\n on(UserLoginActions.updateUserLogins,\n (state, action) => adapter.updateMany(action.userLogins, state)\n ),\n on(UserLoginActions.deleteUserLogin,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(UserLoginActions.deleteUserLogins,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(UserLoginActions.setUserLogins,\n (state, action) => adapter.setAll(action.userLogins, state)\n ),\n on(UserLoginActions.clearUserLogins,\n state => adapter.removeAll(state)\n ),\n on(UserLoginActions.getUserLogin, \n (state) => ({ ...state, userLoginResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(UserLoginActions.getUserLoginError, \n (state, prop) => ({ ...state, userLoginResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(UserLoginActions.setUserLoginLoaded, \n (state) => ({ ...state, userLoginResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return userLoginReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as userLogin from '.';\r\nimport * as fromUserLogin from './user-login.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectUserLoginState = createFeatureSelector(\"userLogins\");\r\n\r\nexport const selectUserLoginById = (userId:string) => createSelector(\r\n selectUserLoginState,\r\n userLoginState => userLoginState.entities[userId]\r\n);\r\n\r\nexport const selectAllUserLogins = createSelector(\r\n selectUserLoginState,\r\n fromUserLogin.selectAll\r\n);","import { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { VDC } from '@app/core/gql/graphql/compute/schema/type';\n\nexport const flattenVdcs = createAction(\n '[Vdc/API] Flatten Vdcs',\n props<{ vdcs: VDC[] }>()\n)\n\nexport const setFlattenVdcsLoaded = createAction(\n '[GQL/API] Set Vdcs Loaded'\n);\n\nexport const setFlattenVdcsError = createAction(\n '[GQL/API] Set Flatten Vdcs Error',\n props<{ message: string }>()\n);\n\nexport const setVdcs = createAction(\n '[Vdc/API] Set Vdcs', \n props<{ vdcs: VDC[] }>()\n);\n\nexport const addVdc = createAction(\n '[Vdc/API] Add Vdc',\n props<{ vdc: VDC }>()\n);\n\nexport const upsertVdc = createAction(\n '[Vdc/API] Upsert Vdc',\n props<{ vdc: VDC }>()\n);\n\nexport const addVdcs = createAction(\n '[Vdc/API] Add Vdcs',\n props<{ vdcs: VDC[] }>()\n);\n\nexport const upsertVdcs = createAction(\n '[Vdc/API] Upsert Vdcs',\n props<{ vdcs: VDC[] }>()\n);\n\nexport const updateVdc = createAction(\n '[Vdc/API] Update Vdc',\n props<{ vdc: Update }>()\n);\n\nexport const updateVdcs = createAction(\n '[Vdc/API] Update Vdcs',\n props<{ vdcs: Update[] }>()\n);\n\nexport const deleteVdc = createAction(\n '[Vdc/API] Delete Vdc',\n props<{ id: string }>()\n);\n\nexport const deleteVdcs = createAction(\n '[Vdc/API] Delete Vdcs',\n props<{ ids: string[] }>()\n);\n\nexport const clearVdcs = createAction(\n '[Vdc/API] Clear Vdcs'\n);\n\nexport const getVdcs = createAction(\n '[Vdc/API] Get Vdcs',\n props<{ userId: string }>()\n);\n\nexport const setVdcsLoaded = createAction(\n '[Vdc/API] Set Vdcs Loaded'\n);\n\nexport const setVdcsError = createAction(\n '[Vdc/API] Set Vdcs Error',\n props<{ message: string }>()\n);\n","import * as VdcActions from './vdc.actions';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { VDC } from '@app/core/gql/graphql/compute/schema/type';\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\n\nexport const vdcsFeatureKey = 'vdcs';\n\nexport interface State extends EntityState {\n flattenVdcsResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialState: State = adapter.getInitialState({\n /*** n3t result objects */ \n flattenVdcsResult: new N3TResult()\n});\n\nconst vdcReducer = createReducer(\n initialState,\n on(VdcActions.addVdc,\n (state, action) => adapter.addOne(action.vdc, state)\n ),\n on(VdcActions.upsertVdc,\n (state, action) => adapter.upsertOne(action.vdc, state)\n ),\n on(VdcActions.addVdcs,\n (state, action) => adapter.addMany(action.vdcs, state)\n ),\n on(VdcActions.upsertVdcs,\n (state, action) => adapter.upsertMany(action.vdcs, state)\n ),\n on(VdcActions.updateVdc,\n (state, action) => adapter.updateOne(action.vdc, state)\n ),\n on(VdcActions.updateVdcs,\n (state, action) => adapter.updateMany(action.vdcs, state)\n ),\n on(VdcActions.deleteVdc,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(VdcActions.deleteVdcs,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(VdcActions.setVdcs,\n (state, action) => adapter.setAll(action.vdcs, state)\n ),\n on(VdcActions.clearVdcs,\n state => adapter.removeAll(state)\n ),\n on(VdcActions.setFlattenVdcsLoaded, \n (state) => ({ ...state, flattenVdcsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(VdcActions.setFlattenVdcsError, \n (state, prop) => ({ ...state, flattenVdcsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(VdcActions.getVdcs, \n (state) => ({ ...state, flattenVdcsResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n on(VdcActions.setVdcsLoaded, \n (state) => ({ ...state, flattenVdcsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(VdcActions.setVdcsError, \n (state, prop) => ({ ...state, flattenVdcsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n )\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return vdcReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as vdc from '.';\r\nimport * as fromVdc from './vdc.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectVdcState = createFeatureSelector(\"vdcs\");\r\n\r\nexport const selectVdcById = (id:string) => createSelector(\r\n selectVdcState,\r\n vdcState => vdcState.entities[id]\r\n);\r\n\r\nexport const selectAllVdcs = createSelector(\r\n selectVdcState,\r\n fromVdc.selectAll\r\n);","import { GetSnapProtectStatusInput } from './../../core/gql/graphql/compute/schema/input/getSnapProtectStatusInput';\nimport { createAction, props } from '@ngrx/store';\nimport { Update } from '@ngrx/entity';\n\nimport { VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { UpdatePowerStatusInput } from '@app/core/gql/graphql/compute/schema/input';\n\nexport const setVmFlats = createAction(\n '[VmFlat/API] Set VmFlats', \n props<{ vmFlats: VMFlat[] }>()\n);\n\nexport const addVmFlat = createAction(\n '[VmFlat/API] Add VmFlat',\n props<{ vmFlat: VMFlat }>()\n);\n\nexport const addVmFlats = createAction(\n '[VmFlat/API] Add VmFlats',\n props<{ vmFlats: VMFlat[] }>()\n);\n\nexport const upsertVmFlat = createAction(\n '[VmFlat/API] Upsert VmFlat',\n props<{ vmFlat: VMFlat }>()\n);\n\nexport const upsertVmFlats = createAction(\n '[VmFlat/API] Upsert VmFlats',\n props<{ vmFlats: VMFlat[] }>()\n);\n\nexport const updateVmFlat = createAction(\n '[VmFlat/API] Update VmFlat',\n props<{ vmFlat: Update }>()\n);\n\nexport const updateVmFlats = createAction(\n '[VmFlat/API] Update VmFlats',\n props<{ vmFlats: Update[] }>()\n);\n\nexport const deleteVmFlat = createAction(\n '[VmFlat/API] Delete VmFlat',\n props<{ id: string }>()\n);\n\nexport const deleteVmFlats = createAction(\n '[VmFlat/API] Delete VmFlats',\n props<{ ids: string[] }>()\n);\n\nexport const clearVmFlats = createAction(\n '[VmFlat/API] Clear VmFlats'\n);\n\nexport const togglePowerStatus = createAction(\n '[VmFlat/API] Toggle Power Status Vm',\n props<{ vmFlat: VMFlat, powerStatus: UpdatePowerStatusInput }>()\n);\n\nexport const togglePowerStatusError = createAction(\n '[VmFlat/API] Toggle Power Status Vm Error',\n props<{ message: string }>()\n);\n\nexport const getVmFlats = createAction(\n '[VmFlat/API] Get VmFlats',\n\n);\n\nexport const setVmFlatsLoaded = createAction(\n '[VmFlat/API] Set VmFlats Loaded'\n);\n\nexport const setVmFlatsReloading = createAction(\n '[VmFlat/API] Set VmFlats Reloading'\n);\n\nexport const getVmFlatsError = createAction(\n '[VmFlat/API] Get VmFlats Error',\n props<{ message: string }>()\n);\n\nexport const getVmFlatSnapshotStatus = createAction(\n '[VMFlat/API] Get VmFlatSnapshot Status',\n props<{ getSnapProtectStatusInput: GetSnapProtectStatusInput }>()\n);\n\n\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\nimport { VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport * as VmFlatActions from './vm-flat.actions';\n\nexport const vmFlatsFeatureKey = 'vmFlats';\n\nexport interface State extends EntityState {\n // additional entities state properties\n vmFlatResult: N3TResult\n}\n\nexport const adapter: EntityAdapter = createEntityAdapter();\n\nexport const initialState: State = adapter.getInitialState({\n // additional entity state properties\n vmFlatResult: new N3TResult()\n});\n\nconst vmFlatReducer = createReducer(\n initialState,\n on(VmFlatActions.addVmFlat,\n (state, action) => adapter.addOne(action.vmFlat, state)\n ),\n on(VmFlatActions.upsertVmFlat,\n (state, action) => adapter.upsertOne(action.vmFlat, state)\n ),\n on(VmFlatActions.addVmFlats,\n (state, action) => adapter.addMany(action.vmFlats, state)\n ),\n on(VmFlatActions.upsertVmFlats,\n (state, action) => adapter.upsertMany(action.vmFlats, state)\n ),\n on(VmFlatActions.updateVmFlat,\n (state, action) => adapter.updateOne(action.vmFlat, state)\n ),\n on(VmFlatActions.updateVmFlats,\n (state, action) => adapter.updateMany(action.vmFlats, state)\n ),\n on(VmFlatActions.deleteVmFlat,\n (state, action) => adapter.removeOne(action.id, state)\n ),\n on(VmFlatActions.deleteVmFlats,\n (state, action) => adapter.removeMany(action.ids, state)\n ),\n on(VmFlatActions.setVmFlats,\n (state, action) => adapter.setAll(action.vmFlats, state)\n ),\n on(VmFlatActions.clearVmFlats,\n state => adapter.removeAll(state)\n ),\n on(VmFlatActions.getVmFlats, \n (state) => ({ ...state, vmFlatResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ), \n on(VmFlatActions.getVmFlatsError, \n (state, prop) => ({ ...state, vmFlatResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\n ),\n on(VmFlatActions.setVmFlatsLoaded, \n (state) => ({ ...state, vmFlatResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\n ),\n on(VmFlatActions.setVmFlatsReloading, \n (state) => ({ ...state, vmFlatResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\n ),\n // on(VmFlatActions.getVmFlatSnapshotStatus,\n // (state, action) => adapter.upsertMany(action.getSnapProtectStatusInput, state)\n // ),\n);\n\nexport function reducer(state: State | undefined, action: Action) {\n return vmFlatReducer(state, action);\n}\n\nexport const {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n} = adapter.getSelectors();\n","import * as vmFlat from '.';\r\nimport * as fromVmFlat from './vm-flat.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectVmFlatState = createFeatureSelector(\"vmFlats\");\r\n\r\nexport const selectVmFlatById = (id:string) => createSelector(\r\n selectVmFlatState,\r\n vmFlatState => vmFlatState.entities[id]\r\n);\r\n\r\nexport const selectAllVmFlats = createSelector(\r\n selectVmFlatState,\r\n fromVmFlat.selectAll\r\n);\r\n\r\nexport const vmsFlatResult = createSelector(\r\n selectVmFlatState,\r\n vmsFlatState => vmsFlatState.vmFlatResult\r\n);\r\n","import { NgxLoggerLevel } from 'ngx-logger';\r\n\r\nconst api = 'https://spaapi.palmettovdc.com';\r\nconst graphQl = 'https://gql.palmettovdc.com:4000'; // 'https://spagql.palmettovdc.com:4000';\r\nconst keycloak = 'https://sso.palmettovdc.com:8443'; \r\nconst classicPortal = 'https://portal.palmettovdc.com';\r\nconst consoleUrl = 'https://console.palmettovdc.com/console.html'; //'https://spa-console.palmettovdc.com/console.html';\r\nconst myUrl = 'https://portal.palmettovdc.com'; //'https://spaportal.palmettovdc.com';\r\nconst externalDPS = 'https://us-cloud.acronis.com/login';\r\n\r\nexport const environment = {\r\n production: true,\r\n apiUrl: graphQl,\r\n keycloackUrl: keycloak,\r\n classicPortal: classicPortal,\r\n consoleUrl: consoleUrl, \r\n loggerConfig: {\r\n serverLoggingUrl: api + '/logging/portal/add',\r\n level: NgxLoggerLevel.ERROR,\r\n serverLogLevel: NgxLoggerLevel.INFO,\r\n disableConsoleLogging: false,\r\n enableSourceMaps: false\r\n },\r\n myUrl: myUrl,\r\n externalDPS: externalDPS,\r\n datacenter: \"SPA\"\r\n};\r\n","import { environment } from 'src/environments/environment';\r\nimport { reject } from 'lodash';\r\nimport { map } from 'rxjs/operators';\r\nimport { gql } from \"../gql/graphql\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { N3TStore } from \"./n3tStore.service\";\r\nimport { APP_CONFIG } from 'src/app/app.config';\r\nimport { datapoint } from \"../_models/datapoint\";\r\nimport { N3TLogger } from \"../_helpers/n3tlogger\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { MetricsService } from \"./metrics.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n })\r\n\r\n export class SessionService {\r\n\r\n /*** public session info ***/\r\n public isp : string;\r\n public city : string;\r\n public state : string;\r\n public browser: string;\r\n public country : string;\r\n public latitude : string;\r\n public ipAddress : string;\r\n public longitude : string;\r\n public datacenter: string;\r\n\r\n constructor(\r\n private gqlSvc: gql,\r\n private http: HttpClient,\r\n private logger: N3TLogger,\r\n private n3tStore: N3TStore,\r\n private metricsSvc: MetricsService\r\n ) { }\r\n\r\n public getSessionData(): void {\r\n setTimeout(() => {\r\n this.getDatacenter().then(() => { // <-- get the datacenter\r\n this.setDatacenterMetric();}); // <-- add datacenter metric\r\n this.getBrowser().then(() => { // <-- get browser\r\n this.setBrowserMetric();}); // <-- add browser metric\r\n this.getIPAddress().then(() => { // <-- get ip address\r\n this.setIpAddressMetric(); // <-- add ip metric\r\n this.getGeoLocationData().then(() => { // <-- get geo location data *** SCREEN SCRAPE ***\r\n this.setGeoLocationMetrics(); // <-- add geo location metrics (isp, city, country, latitude, longitude, state)\r\n })\r\n }).catch(error => {\r\n this.logger.error(error); // <-- no ip address returned so no geo location data can be scraped\r\n });\r\n }, 5000);\r\n }\r\n\r\n /*** get the datacenter ***/\r\n private getDatacenter() : Promise {\r\n return new Promise(resolve => {\r\n this.datacenter = environment.datacenter;\r\n resolve(); // <-- resolve promise\r\n });\r\n }\r\n\r\n /** get browser ***/\r\n private getBrowser() : Promise {\r\n\r\n return new Promise(resolve => {\r\n var userAgent = navigator.userAgent, tem: any[], \r\n matchTest = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n \r\n if (/trident/i.test(matchTest[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\r\n this.browser = 'IE '+(tem[1] || '');\r\n }\r\n \r\n if(matchTest[1]=== 'Chrome') {\r\n tem = userAgent.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (tem!= null) {\r\n this.browser = tem.slice(1).join(' ').replace('OPR', 'Opera');\r\n }\r\n }\r\n \r\n matchTest = matchTest[2]? [matchTest[1], matchTest[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n \r\n if((tem= userAgent.match(/version\\/(\\d+)/i))!= null) matchTest.splice(1, 1, tem[1]);\r\n this.browser = matchTest.join(' ');\r\n\r\n resolve(); // <-- resolve promise\r\n }); \r\n }\r\n\r\n /*** get ip address ***/\r\n private getIPAddress() : Promise {\r\n const url = \"https://api.ipify.org/?format=json\";\r\n\r\n return new Promise(resolve => {\r\n this.http.get(url).pipe(map(res => {\r\n if (res == null || res[\"ip\"] == null) {\r\n reject(\"No IP address returned from session service\"); // <-- reject promise\r\n }\r\n\r\n this.ipAddress = res[\"ip\"];\r\n resolve(); // <-- resolve promise\r\n\r\n })).subscribe();\r\n });\r\n }\r\n\r\n /*** get geo location data (screen scrape) ***/\r\n private getGeoLocationData() : Promise {\r\n const host = \"https://dnschecker.org\"\r\n const resource = \"ip-location.php\";\r\n let queryStr = \"?ip=\" + this.ipAddress;\r\n\r\n return new Promise(resolve => {\r\n this.gqlSvc.n3tapi.getCrossSiteResource({ host: host, resource: resource + queryStr }).pipe(map(resp => {\r\n let html = resp.data[\"getCrossSiteResource\"].result;\r\n let locationMap = this.getLocationData(html);\r\n this.setGeoLocationMembers(locationMap);\r\n resolve(); // <-- resolve promise\r\n })).subscribe();\r\n });\r\n }\r\n\r\n /*** parse the DOM for geo location data ****/\r\n private getLocationData(html: string) : Map {\r\n\r\n let map = new Map();\r\n var doc = new DOMParser().parseFromString(html, \"text/html\");\r\n var rows = doc.getElementsByTagName(\"tr\");\r\n\r\n for (var i = 0, row; row = rows[i]; i++) {\r\n let th = row.getElementsByTagName(\"th\");\r\n let td = row.getElementsByTagName(\"td\");\r\n if (th.length > 0 && td.length > 0) {\r\n let key = th[0].innerText.replace(/\\s/g, \"\");\r\n let value = td[0].innerText.replace(/\\s/g, \"\");\r\n map.set(key, value);\r\n }\r\n\r\n }\r\n\r\n return map;\r\n }\r\n\r\n private setGeoLocationMembers(map: Map): void {\r\n map.forEach((value: string, key: string) => {\r\n switch(key.toLowerCase()) {\r\n case \"isp\": {\r\n this.isp = value;\r\n break;\r\n }\r\n case \"city\": {\r\n this.city = value; \r\n break;\r\n }\r\n case \"country\": {\r\n this.country = value; \r\n break;\r\n }\r\n case \"latitude\": {\r\n this.latitude = value; \r\n break;\r\n }\r\n case \"longitude\": {\r\n this.longitude = value; \r\n break;\r\n }\r\n case \"state\": {\r\n this.state = value; \r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /*** add geo location metrics****/\r\n private setGeoLocationMetrics()\r\n {\r\n this.setIspMetric(); \r\n this.setCityMetric();\r\n this.setCountryMetric();\r\n this.setLatitudeMetric();\r\n this.setLongitudeMetric();\r\n this.setStateMetric();\r\n }\r\n\r\n /*** persist metrics / stats ***/\r\n private setDatacenterMetric(): void {\r\n if (this.datacenter == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getDatacenter();\r\n \r\n metric.set(this.datacenter);\r\n this.dispatchMetric(metric); // <-- persist datacenter metric\r\n }\r\n\r\n private setBrowserMetric(): void {\r\n if (this.browser == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getBrowser();\r\n \r\n metric.set(this.browser);\r\n this.dispatchMetric(metric); // <-- persist browser metric\r\n }\r\n\r\n private setIspMetric(): void {\r\n if (this.isp == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getIsp(); \r\n \r\n metric.set(this.isp);\r\n this.dispatchMetric(metric); // <-- persist isp metric\r\n }\r\n\r\n private setCityMetric(): void {\r\n if (this.city == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getCity();\r\n \r\n metric.set(this.city);\r\n this.dispatchMetric(metric); // <-- persist city metric\r\n }\r\n\r\n private setLatitudeMetric(): void {\r\n if (this.latitude == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getLatitude();\r\n \r\n metric.set(this.latitude);\r\n this.dispatchMetric(metric); // <-- persist latitude metric\r\n }\r\n\r\n private setLongitudeMetric(): void {\r\n if (this.longitude == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getLongitude();\r\n \r\n metric.set(this.longitude);\r\n this.dispatchMetric(metric); // <-- persist longitude metric\r\n }\r\n\r\n private setStateMetric(): void {\r\n if (this.state == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getState();\r\n \r\n metric.set(this.state);\r\n this.dispatchMetric(metric); // <-- persist state metric\r\n }\r\n\r\n private setCountryMetric(): void {\r\n if (this.country == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getCountry();\r\n \r\n metric.set(this.country);\r\n this.dispatchMetric(metric); // <-- persist country metric\r\n }\r\n\r\n private setIpAddressMetric(): void {\r\n if (this.ipAddress == null)\r\n return;\r\n\r\n let metric = this.metricsSvc.getIpAddress();\r\n\r\n metric.set(this.ipAddress);\r\n this.dispatchMetric(metric); // <-- persist ip metric\r\n }\r\n\r\n // *** dispatch metric to state management and persist to db ***\r\n private dispatchMetric(metric: datapoint) {\r\n let persistToDb = true;\r\n\r\n setTimeout(() => {\r\n this.n3tStore.dispatchSetMetric(metric, persistToDb);\r\n }, 5000);\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { SessionService } from './core/_services/session.service';\r\nimport { N3TKeycloakService } from './core/_services/n3tKeycloak.service';\r\n\r\n@Component({\r\n selector: 'smart-root',\r\n template: ''\r\n})\r\nexport class AppComponent implements OnInit{\r\n title = 'PvDC Customer Portal';\r\n\r\n constructor(\r\n private sessionSvc: SessionService,\r\n private n3tKeycloakService: N3TKeycloakService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n window.addEventListener('beforeunload', function (event) {\r\n event.stopImmediatePropagation();\r\n });\r\n\r\n window.addEventListener(\"keyup\", disableF5);\r\n window.addEventListener(\"keydown\", disableF5);\r\n \r\n \r\n function disableF5(e) {\r\n if ((e.which || e.keyCode) == 116) e.preventDefault(); \r\n };\r\n\r\n this.n3tKeycloakService.getKeycloakSession();\r\n this.sessionSvc.getSessionData();\r\n }\r\n}\r\n","import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n graphQLErrors: networkError &&\n networkError.result &&\n networkError.result.errors,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n }\n catch (e) {\n errorHandler({ networkError: e, operation: operation, forward: forward });\n observer.error(e);\n }\n return function () {\n if (sub)\n sub.unsubscribe();\n if (retriedSub)\n sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = (function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink));\nexport { ErrorLink };\n","import { ApolloLink } from \"./ApolloLink.js\";\nexport var concat = ApolloLink.concat;\n","import { __assign, __rest } from \"tslib\";\nimport { wrap } from 'optimism';\nimport { getFragmentQueryDocument, } from \"../../utilities/index.js\";\nvar ApolloCache = (function () {\n function ApolloCache() {\n this.getFragmentDoc = wrap(getFragmentQueryDocument);\n }\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic :\n options.optimistic === false ? null : void 0;\n var updateResult;\n this.performTransaction(function () { return updateResult = options.update(_this); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || 'ROOT_QUERY',\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\n","var MissingFieldError = (function () {\n function MissingFieldError(message, path, query, variables) {\n this.message = message;\n this.path = path;\n this.query = query;\n this.variables = variables;\n }\n return MissingFieldError;\n}());\nexport { MissingFieldError };\n","import \"../globals/index.js\";\nimport { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (__DEV__ && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (__DEV__) {\n deepFreeze(obj);\n }\n return obj;\n}\n","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n this.rootIds = Object.create(null);\n this.refs = Object.create(null);\n this.getFieldValue = function (objectOrReference, storeFieldName) { return maybeDeepFreeze(isReference(objectOrReference)\n ? _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]); };\n this.canRead = function (objOrRef) {\n return isReference(objOrRef)\n ? _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\"\n ? this.lookup(dataId = older)\n : older;\n var incoming = typeof newer === \"string\"\n ? this.lookup(dataId = newer)\n : newer;\n if (!incoming)\n return;\n __DEV__ ? invariant(typeof dataId === \"string\", \"store.merge expects a string ID\") : invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n fieldsToDirty_1[storeFieldName] = 1;\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n } : fieldNameOrOptions, { store: _this }); },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\"\n ? fields\n : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE :\n modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args\n ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\nvar CacheGroup = (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n return storeFieldName + '#' + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n var Root = (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n if (parent === this.parent)\n return this;\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, arguments);\n };\n return Layer;\n}(EntityStore));\nvar Stump = (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n return this;\n };\n Stump.prototype.merge = function () {\n return this.parent.merge.apply(this.parent, arguments);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n return !!(store instanceof EntityStore && store.group.caching);\n}\n","import { __assign } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { wrap } from 'optimism';\nimport { isField, resultKeyNameFromField, isReference, makeReference, createFragmentMap, shouldInclude, addTypenameToDocument, getDefaultValues, getFragmentDefinitions, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from \"./entityStore.js\";\nimport { getTypenameFromStoreObject, isArray, shouldCanonizeResults } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { canonicalStringify, ObjectCanon } from \"./object-canon.js\";\n;\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon;\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { result: _this.canon.admit(other.result) });\n }\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n }\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon;\n };\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: {\n store: store,\n query: query,\n policies: policies,\n variables: variables,\n varString: canonicalStringify(variables),\n canonizeResults: canonizeResults,\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n },\n });\n var missing;\n if (execResult.missing) {\n missing = [new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n else if (!selection.selectionSet) {\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults\n ? this.canon.admit(finalResult)\n : maybeDeepFreeze(finalResult);\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n if (item === null) {\n return null;\n }\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n __DEV__ ? invariant(!isReference(value), \"Missing selection set for object of type \".concat(getTypenameFromStoreObject(store, value), \" returned for query field \").concat(field.name.value)) : invariant(!isReference(value), 5);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n var cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) { return context.readField(key, from); };\n var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n __DEV__ ? invariant(extracted !== void 0, \"Missing field '\".concat(schemaKeyPath.join('.'), \"' while extracting keyFields from \").concat(JSON.stringify(object))) : invariant(extracted !== void 0, 2);\n return extracted;\n });\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n });\n}\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));\n }\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n });\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n var merger = new DeepMerger;\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = info.paths = [];\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj)\n ? obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });\n }\n return value;\n}\n","import { __assign, __rest } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from \"./key-extractor.js\";\ngetStoreKeyName.setStringify(canonicalStringify);\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args :\n spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n this.supertypeMap = new Map();\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = partialContext && (partialContext.typename ||\n ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n var storeObject = partialContext && partialContext.storeObject || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(object, context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge :\n merge === true ? mergeTrueFn :\n merge === false ? mergeFalseFn :\n existing.merge;\n }\n setMerge(existing, incoming.merge);\n existing.keyFn =\n keyFields === false ? nullKeyFieldsFn :\n isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields) :\n typeof keyFields === \"function\" ? keyFields :\n existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n keyArgs === false ? simpleKeyArgsFn :\n isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs) :\n typeof keyArgs === \"function\" ? keyArgs :\n existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n __DEV__ ? invariant(!old || old === which, \"Cannot change root \".concat(which, \" __typename more than once\")) : invariant(!old || old === which, 3);\n if (old)\n delete this.rootIdsByTypename[old];\n this.rootIdsByTypename[typename] = rootId;\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n var supertypes = this.supertypeMap.get(typename);\n if (supertypes && supertypes.size) {\n supertypes.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes &&\n this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n __DEV__ && invariant.warn(\"Inferring subtype \".concat(typename, \" of supertype \").concat(supertype));\n }\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n i === workQueue_1.length - 1 &&\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field\n ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n if (storeFieldName === false) {\n return fieldName;\n }\n return fieldName === fieldNameFromStoreName(storeFieldName)\n ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference)\n ? objectOrReference.__ref\n : objectOrReference, storeFieldName));\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n return incoming;\n }\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (__DEV__ && options.from === void 0) {\n __DEV__ && invariant.warn(\"Undefined 'from' passed to readField with arguments \".concat(stringifyForDisplay(Array.from(readFieldArgs))));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw __DEV__ ? new InvariantError(\"Cannot automatically merge arrays\") : new InvariantError(4);\n }\n if (isNonNullObject(existing) &&\n isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) &&\n storeValueIsStoreObject(incoming)) {\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) &&\n isReference(incoming)) {\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value) {\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }).split(JSON.stringify(undefId)).join(\"\");\n}\n","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { createFragmentMap, getFragmentFromSelection, getDefaultValues, getFragmentDefinitions, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, } from \"../../utilities/index.js\";\nimport { makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, isArray } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n;\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&\n context.deferred === deferred) ? context : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred }));\n }\n return flavored;\n}\nvar StoreWriter = (function () {\n function StoreWriter(cache, reader) {\n this.cache = cache;\n this.reader = reader;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = {\n store: store,\n written: Object.create(null),\n merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n },\n variables: variables,\n varString: canonicalStringify(variables),\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n overwrite: !!overwrite,\n incomingById: new Map,\n clientOnly: false,\n deferred: false,\n flavors: new Map,\n };\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map },\n context: context,\n });\n if (!isReference(ref)) {\n throw __DEV__ ? new InvariantError(\"Could not identify object \".concat(JSON.stringify(result))) : new InvariantError(6);\n }\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n return;\n }\n storeObject = applied;\n }\n if (__DEV__ && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n var incoming = Object.create(null);\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, field.selectionSet\n ? getContextFlavor(context, false, false)\n : context, childTree);\n var childTypename = void 0;\n if (field.selectionSet &&\n (isReference(incomingValue) ||\n storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (__DEV__ &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n !policies.getReadFunction(typename, field.name.value)) {\n __DEV__ && invariant.error(\"Missing field '\".concat(resultKeyNameFromField(field), \"' while writing result \").concat(JSON.stringify(result, null, 2)).substring(0, 1000));\n }\n });\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n dataId = dataId || id;\n if (keyObject) {\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n return __DEV__ ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false);\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (!(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n if (!args || args.if !== false) {\n deferred = true;\n }\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = (!isArray(incoming) &&\n (isReference(existing) || storeValueIsStoreObject(existing))) ? existing : void 0;\n var i_1 = incoming;\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return isArray(from)\n ? (typeof name === \"number\" ? from[name] : void 0)\n : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map;\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map :\n left.map.size ? left.map : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n if (isReference(existing))\n return;\n if (equal(existing, incoming))\n return;\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n if (!isArray(existing) &&\n !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" &&\n !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n __DEV__ && invariant.warn(\"Cache data may be lost when replacing the \".concat(fieldName, \" field of a \").concat(parentType, \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \").concat(childTypenames.length\n ? \"either ensure all objects of type \" +\n childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n : \"\", \"define a custom merge function for the \").concat(typeDotName, \" field, so InMemoryCache can safely merge these objects:\\n\\n existing: \").concat(JSON.stringify(existing).slice(0, 1000), \"\\n incoming: \").concat(JSON.stringify(incoming).slice(0, 1000), \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"));\n}\n","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport \"./fixPolyfills.js\";\nimport { wrap } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nvar InMemoryCache = (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.typenameDocumentCache = new Map();\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n var rootStore = this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n });\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities\n ? void 0\n : previousReader && previousReader.canon,\n }));\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (c) {\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, rootId = c.rootId, variables = c.variables;\n return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, rootId: rootId, variables: variables }));\n }\n }\n });\n new Set([\n this.data.group,\n this.optimisticData.group,\n ]).forEach(function (group) { return group.resetCaching(); });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null;\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n return false;\n }\n var store = options.optimistic\n ? this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n canonicalStringify.reset();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n __DEV__ && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n ++this.txCount;\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return updateResult = update(_this);\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === 'string') {\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n perform(this.data);\n }\n else {\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || (optimisticId !== null),\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n if (this.addTypename) {\n var result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic &&\n typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback(c.lastDiff = diff, lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { ApolloLink, Observable as Observable$1 } from '@apollo/client/core';\nimport { print } from 'graphql';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { BatchLink } from '@apollo/client/link/batch';\n\nconst fetch = (req, httpClient, extractFiles) => {\n const shouldUseBody = ['POST', 'PUT', 'PATCH'].indexOf(req.method.toUpperCase()) !== -1;\n const shouldStringify = (param) => ['variables', 'extensions'].indexOf(param.toLowerCase()) !== -1;\n const isBatching = req.body.length;\n let shouldUseMultipart = req.options && req.options.useMultipart;\n let multipartInfo;\n if (shouldUseMultipart) {\n if (isBatching) {\n return new Observable((observer) => observer.error(new Error('File upload is not available when combined with Batching')));\n }\n if (!shouldUseBody) {\n return new Observable((observer) => observer.error(new Error('File upload is not available when GET is used')));\n }\n if (!extractFiles) {\n return new Observable((observer) => observer.error(new Error(`To use File upload you need to pass \"extractFiles\" function from \"extract-files\" library to HttpLink's options`)));\n }\n multipartInfo = extractFiles(req.body);\n shouldUseMultipart = !!multipartInfo.files.size;\n }\n // `body` for some, `params` for others\n let bodyOrParams = {};\n if (isBatching) {\n if (!shouldUseBody) {\n return new Observable((observer) => observer.error(new Error('Batching is not available for GET requests')));\n }\n bodyOrParams = {\n body: req.body,\n };\n }\n else {\n const body = shouldUseMultipart ? multipartInfo.clone : req.body;\n if (shouldUseBody) {\n bodyOrParams = {\n body,\n };\n }\n else {\n const params = Object.keys(req.body).reduce((obj, param) => {\n const value = req.body[param];\n obj[param] = shouldStringify(param) ? JSON.stringify(value) : value;\n return obj;\n }, {});\n bodyOrParams = { params: params };\n }\n }\n if (shouldUseMultipart && shouldUseBody) {\n const form = new FormData();\n form.append('operations', JSON.stringify(bodyOrParams.body));\n const map = {};\n const files = multipartInfo.files;\n let i = 0;\n files.forEach((paths) => {\n map[++i] = paths;\n });\n form.append('map', JSON.stringify(map));\n i = 0;\n files.forEach((_, file) => {\n form.append(++i + '', file, file.name);\n });\n bodyOrParams.body = form;\n }\n // create a request\n return httpClient.request(req.method, req.url, Object.assign(Object.assign({ observe: 'response', responseType: 'json', reportProgress: false }, bodyOrParams), req.options));\n};\nconst mergeHeaders = (source, destination) => {\n if (source && destination) {\n const merged = destination\n .keys()\n .reduce((headers, name) => headers.set(name, destination.getAll(name)), source);\n return merged;\n }\n return destination || source;\n};\nfunction prioritize(...values) {\n const picked = values.find((val) => typeof val !== 'undefined');\n if (typeof picked === 'undefined') {\n return values[values.length - 1];\n }\n return picked;\n}\nfunction createHeadersWithClientAwereness(context) {\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`.\n let headers = context.headers && context.headers instanceof HttpHeaders\n ? context.headers\n : new HttpHeaders(context.headers);\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n // If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n if (name && !headers.has('apollographql-client-name')) {\n headers = headers.set('apollographql-client-name', name);\n }\n if (version && !headers.has('apollographql-client-version')) {\n headers = headers.set('apollographql-client-version', version);\n }\n }\n return headers;\n}\n\n// XXX find a better name for it\nclass HttpLinkHandler extends ApolloLink {\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n this.print = print;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n this.requester = (operation) => new Observable$1((observer) => {\n const context = operation.getContext();\n // decides which value to pick, Context, Options or to just use the default\n const pick = (key, init) => {\n return prioritize(context[key], this.options[key], init);\n };\n let method = pick('method', 'POST');\n const includeQuery = pick('includeQuery', true);\n const includeExtensions = pick('includeExtensions', false);\n const url = pick('uri', 'graphql');\n const withCredentials = pick('withCredentials');\n const useMultipart = pick('useMultipart');\n const useGETForQueries = this.options.useGETForQueries === true;\n const isQuery = operation.query.definitions.some((def) => def.kind === 'OperationDefinition' && def.operation === 'query');\n if (useGETForQueries && isQuery) {\n method = 'GET';\n }\n const req = {\n method,\n url: typeof url === 'function' ? url(operation) : url,\n body: {\n operationName: operation.operationName,\n variables: operation.variables,\n },\n options: {\n withCredentials,\n useMultipart,\n headers: this.options.headers,\n },\n };\n if (includeExtensions) {\n req.body.extensions = operation.extensions;\n }\n if (includeQuery) {\n req.body.query = this.print(operation.query);\n }\n const headers = createHeadersWithClientAwereness(context);\n req.options.headers = mergeHeaders(req.options.headers, headers);\n const sub = fetch(req, this.httpClient, this.options.extractFiles).subscribe({\n next: (response) => {\n operation.setContext({ response });\n observer.next(response.body);\n },\n error: (err) => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n }\n request(op) {\n return this.requester(op);\n }\n}\nclass HttpLink {\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpLinkHandler(this.httpClient, options);\n }\n}\nHttpLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: HttpLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpLink.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: HttpLink, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: HttpLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\nconst defaults = {\n batchInterval: 10,\n batchMax: 10,\n uri: 'graphql',\n method: 'POST',\n};\nclass HttpBatchLinkHandler extends ApolloLink {\n constructor(httpClient, options) {\n super();\n this.httpClient = httpClient;\n this.options = options;\n this.print = print;\n this.batchInterval = options.batchInterval || defaults.batchInterval;\n this.batchMax = options.batchMax || defaults.batchMax;\n if (this.options.operationPrinter) {\n this.print = this.options.operationPrinter;\n }\n const batchHandler = (operations) => {\n return new Observable$1((observer) => {\n const body = this.createBody(operations);\n const headers = this.createHeaders(operations);\n const { method, uri, withCredentials } = this.createOptions(operations);\n if (typeof uri === 'function') {\n throw new Error(`Option 'uri' is a function, should be a string`);\n }\n const req = {\n method,\n url: uri,\n body: body,\n options: {\n withCredentials,\n headers,\n },\n };\n const sub = fetch(req, this.httpClient, () => {\n throw new Error('File upload is not available when combined with Batching');\n }).subscribe({\n next: (result) => observer.next(result.body),\n error: (err) => observer.error(err),\n complete: () => observer.complete(),\n });\n return () => {\n if (!sub.closed) {\n sub.unsubscribe();\n }\n };\n });\n };\n const batchKey = options.batchKey ||\n ((operation) => {\n return this.createBatchKey(operation);\n });\n this.batcher = new BatchLink({\n batchInterval: this.batchInterval,\n batchMax: this.batchMax,\n batchKey,\n batchHandler,\n });\n }\n createOptions(operations) {\n const context = operations[0].getContext();\n return {\n method: prioritize(context.method, this.options.method, defaults.method),\n uri: prioritize(context.uri, this.options.uri, defaults.uri),\n withCredentials: prioritize(context.withCredentials, this.options.withCredentials),\n };\n }\n createBody(operations) {\n return operations.map((operation) => {\n const includeExtensions = prioritize(operation.getContext().includeExtensions, this.options.includeExtensions, false);\n const includeQuery = prioritize(operation.getContext().includeQuery, this.options.includeQuery, true);\n const body = {\n operationName: operation.operationName,\n variables: operation.variables,\n };\n if (includeExtensions) {\n body.extensions = operation.extensions;\n }\n if (includeQuery) {\n body.query = this.print(operation.query);\n }\n return body;\n });\n }\n createHeaders(operations) {\n var _a, _b;\n return operations.reduce((headers, operation) => {\n return mergeHeaders(headers, operation.getContext().headers);\n }, createHeadersWithClientAwereness({\n headers: this.options.headers,\n clientAwareness: (_b = (_a = operations[0]) === null || _a === void 0 ? void 0 : _a.getContext()) === null || _b === void 0 ? void 0 : _b.clientAwareness,\n }));\n }\n createBatchKey(operation) {\n const context = operation.getContext();\n if (context.skipBatching) {\n return Math.random().toString(36).substr(2, 9);\n }\n const headers = context.headers &&\n context.headers.keys().map((k) => context.headers.get(k));\n const opts = JSON.stringify({\n includeQuery: context.includeQuery,\n includeExtensions: context.includeExtensions,\n headers,\n });\n return prioritize(context.uri, this.options.uri) + opts;\n }\n request(op) {\n return this.batcher.request(op);\n }\n}\nclass HttpBatchLink {\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n create(options) {\n return new HttpBatchLinkHandler(this.httpClient, options);\n }\n}\nHttpBatchLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: HttpBatchLink, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpBatchLink.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: HttpBatchLink, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.2\", ngImport: i0, type: HttpBatchLink, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });\n\n// http\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HttpBatchLink, HttpBatchLinkHandler, HttpLink, HttpLinkHandler };\n","import { NgModule } from '@angular/core';\nimport { onError } from \"@apollo/client/link/error\";\nimport { ApolloLink, concat } from '@apollo/client/core';\nimport { N3TLogger } from './core/_helpers/n3tlogger';\nimport { InMemoryCache } from '@apollo/client/core'; //'apollo-cache-inmemory';\nimport { environment } from 'src/environments/environment';\nimport { ApolloModule, APOLLO_OPTIONS } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\n//import { HttpLinkModule } from 'apollo-angular-link-http';\n\n\nexport function createApollo(httpLink: HttpLink,\n logger: N3TLogger) {\n const uri = environment.apiUrl;\n const http = httpLink.create({ uri: uri + '/graphql' });\n const authMiddleware = new ApolloLink((operation, forward) => {\n operation.setContext({});\n return forward(operation);\n });\n\n /********* ERROR LOGGING LIBRARY FOR APOLLO CLIENT **************/\n const errorLink = onError(({ graphQLErrors, networkError }) => {\n if (graphQLErrors) // <-- graphql specific error i.e. resolvers, schema's etc...\n graphQLErrors.map(({ message, locations, path }) => \n\n /* log error to the console and the database */\n logger.error(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`)); \n\n if (networkError) // <-- network errors i.e. the server is down, a request is rejected etc...\n\n /* log error to the console and the database */\n logger.error(`[Network error]: ${networkError}`); \n });\n\n const httpLinkWithErrorHandling = ApolloLink.from([\n errorLink,\n http,\n ]);\n /***************************************************************/\n\n return {\n link: concat(authMiddleware, httpLinkWithErrorHandling),\n cache: new InMemoryCache(),\n };\n}\n\n@NgModule({\n exports: [ApolloModule], //, HttpLinkModule], \n providers: [\n {\n provide: APOLLO_OPTIONS,\n useFactory: createApollo,\n deps: [HttpLink, N3TLogger],\n },\n ],\n})\n\nexport class GraphQLModule {}\n","import { N3TStore } from '../_services/n3tStore.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { N3TKeycloakService } from '../_services/n3tKeycloak.service';\r\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\r\nimport { AuthenticationService } from '@app/core/_services/authentication.service';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n/*\r\n roles based route authorization guard\r\n*/\r\nexport class AuthGuard extends KeycloakAuthGuard implements CanActivate {\r\n constructor(\r\n protected router: Router,\r\n private n3tstore: N3TStore,\r\n private n3tKeycloak: N3TKeycloakService,\r\n private authService: AuthenticationService,\r\n private keycloakService: KeycloakService) {\r\n super(router, keycloakService); // <-- the base class requires the keycloak service in order to work properly\r\n }\r\n\r\n async isAccessAllowed(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n return new Promise(async(resolve, reject) => {\r\n\r\n if (!this.authenticated) { // <-- check the base class to determine if the user successfully logged into keycloak\r\n this.n3tKeycloak.login();\r\n return;\r\n }\r\n\r\n this.n3tstore.selectUser().subscribe(authUser => { // <-- (asyn execution) wait for the promise to resolve and an auth user to exist in the application state\r\n if (!this.authService.isAuthorized(route.data.roles))\r\n this.router.navigate(['/']);\r\n\r\n resolve(true);\r\n });\r\n\r\n });\r\n }\r\n}\r\n","import { from, Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\n\r\n@Injectable()\r\n/*\r\n https interceptor for adding keycloak authorization header \r\n*/\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n private excludedUrls: string[];\r\n constructor(private keycloakService: KeycloakService) { \r\n this.setExcludedUrls();\r\n }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n return from(this.getAuthToken()) // <-- (async execution) resolve the promise to get keycloak user and return a new observable\r\n .pipe(switchMap(token => {\r\n let excludedUrl = this.excludedUrls.find(x => x == request.url);\r\n if (request.url != excludedUrl) {\r\n const authHdr : string = 'Authorization';\r\n if (!request.headers.has(authHdr)) {\r\n request = request.clone({\r\n headers: request.headers.set(authHdr, `Bearer ` + token)\r\n });\r\n }\r\n }\r\n\r\n return next.handle(request);\r\n }));\r\n }\r\n\r\n /* \r\n cross-origin resource sharing (CORS) is automatically triggered if an authorization token is present in the header for any request.\r\n Any xhr requests will automatically get an authorization header from the angular keycloak library. In order to by-pass this behavior do the following\r\n \r\n 1. update the initializeKeycloak function in the n3tKeycloak.service file and add the site that should not have an authorization header to the \"bearerExcludedUrls\" array.\r\n 2. add the site to this function's \"excludedUrls\" array.\r\n */\r\n private setExcludedUrls() {\r\n this.excludedUrls = [];\r\n this.excludedUrls.push('https://api.ipify.org/?format=json');\r\n }\r\n\r\n async getAuthToken() : Promise {\r\n let instance = await this.keycloakService.getKeycloakInstance();\r\n return instance.token;\r\n }\r\n}\r\n","import { Update } from '@ngrx/entity';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { datapoint } from \"@app/core/_models/datapoint\";\r\nimport { N3TStore } from '../_services/n3tStore.service';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\n\r\n@Injectable()\r\n/*\r\n https interceptor for metrics related stats\r\n*/\r\nexport class MetricsInterceptor implements HttpInterceptor {\r\n constructor(private n3tStore: N3TStore) { }\r\n\r\n public metric: Observable;\r\n private metricSubject = new BehaviorSubject(null);\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n /*** metrics for vm load time gql polling timestamps \r\n \r\n polling for angular graphql uses a closure in the effect so the \r\n state for the time will have to be updated using the store ***/ \r\n if (request.body != null && request.body.operationName == 'getCompute') {\r\n let datapointid = request.headers.get('datapointid');\r\n\r\n this.metric = this.n3tStore.selectMetric(datapointid);\r\n this.metric.subscribe(x => this.metricSubject.next(x));\r\n\r\n if (this.metricSubject.value != null)\r\n this.updateNextPollingTime(this.metricSubject.value)\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n\r\n /*** update the polling time that will be used as the start time for the getVdcs effect ***/\r\n private updateNextPollingTime(datapoint: datapoint) {\r\n const updateDatapoint: Update = {\r\n id: datapoint.id.toString(),\r\n changes: { nextPollingTime: new Date(Date.now()) }\r\n }\r\n this.n3tStore.dispatchUpdateMetric(updateDatapoint);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { N3TLogger } from '../_helpers/n3tlogger';\r\nimport { AuthenticationService } from '@app/core/_services';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class HttpErrorInterceptor implements HttpInterceptor {\r\n constructor(private logger: N3TLogger,\r\n private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(request).pipe(catchError(err => {\r\n this.logger.error(err);\r\n if ([401, 403].indexOf(err.status) !== -1) {\r\n this.authenticationService.logout(); // <-- auto logout if 401 Unauthorized or 403 Forbidden response returned from api\r\n }\r\n\r\n const error = err.error.message || err.statusText;\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AppResolve implements Resolve {\r\n\r\n constructor() {}\r\n\r\n resolve(route: ActivatedRouteSnapshot): any {\r\n window.open('console.html', '_blank', 'width=1200,height=900'); \r\n //window.location.href = \"https://www.google.com\";\r\n return true;\r\n }\r\n\r\n}","import { NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { AlertModule } from 'ngx-bootstrap/alert';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { DialogsModule } from '../shared/dialogs/dialogs.module';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { TabsModule } from 'ngx-bootstrap/tabs';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\nimport { NgxGaugeModule } from 'ngx-gauge';\r\nimport { GraphQLModule } from '@app/graphql.module';\r\nimport { DataTablesModule } from 'angular-datatables';\r\nimport { AlertComponent } from '@app/core/components/alert/alert.component';\r\nimport { JwtInterceptor, MetricsInterceptor } from '@app/core/_helpers';\r\nimport { HttpErrorInterceptor } from '@app/core/error/http-error.interceptor';\r\nimport { LoginComponent } from '@app/core/components/login/login.component';\r\nimport { AccountModule } from '@app/features/account/account.module';\r\nimport { AppResolve } from '@app/core/resolvers/app.resolver';\r\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\nimport { WorkloaddetailsComponent } from './components/workloaddetails/workloaddetails.component';\r\nimport { ModalContentComponent } from './components';\r\nimport { ArchwizardModule } from 'angular-archwizard';\r\nimport { Select2Module } from \"ng-select2-component\";\r\n\r\n// import { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\n//import { NgbdSortableHeader } from './_directives/sortable.directive';\r\n\r\n/**\r\n * Module for global imports\r\n */\r\n@NgModule({\r\n declarations: [LoginComponent, WorkloaddetailsComponent, ModalContentComponent],\r\n imports: [\r\n CommonModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n // import ngx-bootstrap services here\r\n AccordionModule.forRoot(),\r\n AlertModule.forRoot(),\r\n BsDropdownModule.forRoot(),\r\n ButtonsModule.forRoot(),\r\n CollapseModule.forRoot(),\r\n ModalModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n TabsModule.forRoot(),\r\n PopoverModule.forRoot(),\r\n NgMultiSelectDropDownModule.forRoot(),\r\n NgxGaugeModule,\r\n // import GraphQL\r\n GraphQLModule,\r\n DialogsModule,\r\n DataTablesModule,\r\n AccountModule,\r\n ArchwizardModule.forRoot(),\r\n Select2Module,\r\n //NgbModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: MetricsInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpErrorInterceptor, multi: true },\r\n AppResolve\r\n ],\r\n exports: [NgxGaugeModule]\r\n})\r\nexport class CoreModule {\r\n // thi module can be load only once\r\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\r\n throwIfAlreadyLoaded(parentModule, 'CoreModule');\r\n }\r\n}\r\n\r\nexport function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\r\n if (parentModule) {\r\n throw new Error(`${moduleName} has already been loaded. Import ${moduleName} modules in the AppModule only.`);\r\n }\r\n}\r\n\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { NavigationItem } from './navigation.reducer';\r\n\r\nexport const toggleNavSection = createAction(\r\n '[Navigation] Toggle Nav Section',\r\n props<{ item: NavigationItem }>()\r\n);\r\n\r\nexport const activeUrl = createAction(\r\n '[Navigation] Active Url',\r\n props<{ url: string }>()\r\n);\r\n\r\nexport const toggleFilter = createAction(\r\n '[Navigation] Toggle Filter'\r\n);\r\n\r\nexport const navigationFilter = createAction(\r\n '[Navigation] Navigation Filter',\r\n props<{ text: string }>()\r\n);\r\n\r\nexport const mobileNavigation = createAction(\r\n '[Navigation] Mobile Navigation',\r\n props<{ open: boolean }>()\r\n);\r\n\r\n\r\n\r\n\r\n","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n return observeNotification(this, observer);\n }\n do(nextHandler, errorHandler, completeHandler) {\n const { kind, value, error } = this;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n }\n accept(nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n }\n toObservable() {\n const { kind, value, error } = this;\n const result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(() => error)\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(`Unexpected notification kind ${kind}`);\n }\n return result;\n }\n static createNext(value) {\n return new Notification('N', value);\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n const { kind, value, error } = notification;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate((source, subscriber) => {\n let element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n ({ duration, element, connector } = elementOrOptions);\n }\n const groups = new Map();\n const notify = (cb) => {\n groups.forEach(cb);\n cb(subscriber);\n };\n const handleError = (err) => notify((consumer) => consumer.error(err));\n let activeGroups = 0;\n let teardownAttempted = false;\n const groupBySourceSubscriber = new OperatorSubscriber(subscriber, (value) => {\n try {\n const key = keySelector(value);\n let group = groups.get(key);\n if (!group) {\n groups.set(key, (group = connector ? connector() : new Subject()));\n const grouped = createGroupedObservable(key, group);\n subscriber.next(grouped);\n if (duration) {\n const durationSubscriber = createOperatorSubscriber(group, () => {\n group.complete();\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n }, undefined, undefined, () => groups.delete(key));\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber));\n }\n }\n group.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, () => notify((consumer) => consumer.complete()), handleError, () => groups.clear(), () => {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n const result = new Observable((groupSubscriber) => {\n activeGroups++;\n const innerSub = groupSubject.subscribe(groupSubscriber);\n return () => {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return (source) => source.pipe(exhaustMap((a, i) => innerFrom(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return operate((source, subscriber) => {\n let index = 0;\n let innerSub = null;\n let isComplete = false;\n source.subscribe(createOperatorSubscriber(subscriber, (outerValue) => {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(subscriber, undefined, () => {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, () => {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n","import * as i3 from '@ngrx/store';\nimport { compose, ScannedActionsSubject, createAction } from '@ngrx/store';\nimport * as i1 from 'rxjs';\nimport { merge, Observable, Subject, defer, Notification, pipe, of } from 'rxjs';\nimport { ignoreElements, materialize, map, catchError, filter, groupBy, mergeMap, exhaustMap, dematerialize, take, concatMap, finalize, withLatestFrom } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, NgModule, Optional, Injector, SkipSelf, Self } from '@angular/core';\n\nconst DEFAULT_EFFECT_CONFIG = {\n dispatch: true,\n useEffectsErrorHandler: true,\n};\nconst CREATE_EFFECT_METADATA_KEY = '__@ngrx/effects_create__';\n\n/**\n * @description\n * Creates an effect from an `Observable` and an `EffectConfig`.\n *\n * @param source A function which returns an `Observable`.\n * @param config A `Partial` to configure the effect. By default, `dispatch` is true and `useEffectsErrorHandler` is true.\n * @returns If `EffectConfig`#`dispatch` is true, returns `Observable`. Else, returns `Observable`.\n *\n * @usageNotes\n *\n * ** Mapping to a different action **\n * ```ts\n * effectName$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(FeatureActions.actionOne),\n * map(() => FeatureActions.actionTwo())\n * )\n * );\n * ```\n *\n * ** Non-dispatching effects **\n * ```ts\n * effectName$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(FeatureActions.actionOne),\n * tap(() => console.log('Action One Dispatched'))\n * ),\n * { dispatch: false }\n * // FeatureActions.actionOne is not dispatched\n * );\n * ```\n */\nfunction createEffect(source, config) {\n const effect = source();\n const value = Object.assign(Object.assign({}, DEFAULT_EFFECT_CONFIG), config);\n Object.defineProperty(effect, CREATE_EFFECT_METADATA_KEY, {\n value,\n });\n return effect;\n}\nfunction getCreateEffectMetadata(instance) {\n const propertyNames = Object.getOwnPropertyNames(instance);\n const metadata = propertyNames\n .filter((propertyName) => {\n if (instance[propertyName] &&\n instance[propertyName].hasOwnProperty(CREATE_EFFECT_METADATA_KEY)) {\n // If the property type has overridden `hasOwnProperty` we need to ensure\n // that the metadata is valid (containing a `dispatch`property)\n // https://github.com/ngrx/platform/issues/2975\n const property = instance[propertyName];\n return property[CREATE_EFFECT_METADATA_KEY].hasOwnProperty('dispatch');\n }\n return false;\n })\n .map((propertyName) => {\n const metaData = instance[propertyName][CREATE_EFFECT_METADATA_KEY];\n return Object.assign({ propertyName }, metaData);\n });\n return metadata;\n}\n\nfunction getSourceForInstance(instance) {\n return Object.getPrototypeOf(instance);\n}\n\nconst METADATA_KEY = '__@ngrx/effects__';\n/**\n * @deprecated The Effect decorator (`@Effect`) is deprecated in favor for the `createEffect` method.\n * See the docs for more info {@link https://ngrx.io/guide/migration/v11#the-effect-decorator}\n */\nfunction Effect(config = {}) {\n return function (target, propertyName) {\n const metadata = Object.assign(Object.assign(Object.assign({}, DEFAULT_EFFECT_CONFIG), config), { propertyName });\n addEffectMetadataEntry(target, metadata);\n };\n}\nfunction getEffectDecoratorMetadata(instance) {\n const effectsDecorators = compose(getEffectMetadataEntries, getSourceForInstance)(instance);\n return effectsDecorators;\n}\n/**\n * Type guard to detemine whether METADATA_KEY is already present on the Class\n * constructor\n */\nfunction hasMetadataEntries(sourceProto) {\n return sourceProto.constructor.hasOwnProperty(METADATA_KEY);\n}\n/** Add Effect Metadata to the Effect Class constructor under specific key */\nfunction addEffectMetadataEntry(sourceProto, metadata) {\n if (hasMetadataEntries(sourceProto)) {\n sourceProto.constructor[METADATA_KEY].push(metadata);\n }\n else {\n Object.defineProperty(sourceProto.constructor, METADATA_KEY, {\n value: [metadata],\n });\n }\n}\nfunction getEffectMetadataEntries(sourceProto) {\n return hasMetadataEntries(sourceProto)\n ? sourceProto.constructor[METADATA_KEY]\n : [];\n}\n\nfunction getEffectsMetadata(instance) {\n return getSourceMetadata(instance).reduce((acc, { propertyName, dispatch, useEffectsErrorHandler }) => {\n acc[propertyName] = { dispatch, useEffectsErrorHandler };\n return acc;\n }, {});\n}\nfunction getSourceMetadata(instance) {\n const effects = [\n getEffectDecoratorMetadata,\n getCreateEffectMetadata,\n ];\n return effects.reduce((sources, source) => sources.concat(source(instance)), []);\n}\n\nfunction mergeEffects(sourceInstance, globalErrorHandler, effectsErrorHandler) {\n const sourceName = getSourceForInstance(sourceInstance).constructor.name;\n const observables$ = getSourceMetadata(sourceInstance).map(({ propertyName, dispatch, useEffectsErrorHandler, }) => {\n const observable$ = typeof sourceInstance[propertyName] === 'function'\n ? sourceInstance[propertyName]()\n : sourceInstance[propertyName];\n const effectAction$ = useEffectsErrorHandler\n ? effectsErrorHandler(observable$, globalErrorHandler)\n : observable$;\n if (dispatch === false) {\n return effectAction$.pipe(ignoreElements());\n }\n const materialized$ = effectAction$.pipe(materialize());\n return materialized$.pipe(map((notification) => ({\n effect: sourceInstance[propertyName],\n notification,\n propertyName,\n sourceName,\n sourceInstance,\n })));\n });\n return merge(...observables$);\n}\n\nconst MAX_NUMBER_OF_RETRY_ATTEMPTS = 10;\nfunction defaultEffectsErrorHandler(observable$, errorHandler, retryAttemptLeft = MAX_NUMBER_OF_RETRY_ATTEMPTS) {\n return observable$.pipe(catchError((error) => {\n if (errorHandler)\n errorHandler.handleError(error);\n if (retryAttemptLeft <= 1) {\n return observable$; // last attempt\n }\n // Return observable that produces this particular effect\n return defaultEffectsErrorHandler(observable$, errorHandler, retryAttemptLeft - 1);\n }));\n}\n\nclass Actions extends Observable {\n constructor(source) {\n super();\n if (source) {\n this.source = source;\n }\n }\n lift(operator) {\n const observable = new Actions();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n}\n/** @nocollapse */ /** @nocollapse */ Actions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Actions, deps: [{ token: ScannedActionsSubject }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ /** @nocollapse */ Actions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Actions });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Actions, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i1.Observable, decorators: [{\n type: Inject,\n args: [ScannedActionsSubject]\n }] }];\n } });\n/**\n * `ofType` filters an Observable of `Actions` into an Observable of the actions\n * whose type strings are passed to it.\n *\n * For example, if `actions` has type `Actions`, and\n * the type of the `Addition` action is `add`, then\n * `actions.pipe(ofType('add'))` returns an `Observable`.\n *\n * Properly typing this function is hard and requires some advanced TS tricks\n * below.\n *\n * Type narrowing automatically works, as long as your `actions` object\n * starts with a `Actions` instead of generic `Actions`.\n *\n * For backwards compatibility, when one passes a single type argument\n * `ofType('something')` the result is an `Observable`. Note, that `T`\n * completely overrides any possible inference from 'something'.\n *\n * Unfortunately, for unknown 'actions: Actions' these types will produce\n * 'Observable'. In such cases one has to manually set the generic type\n * like `actions.ofType('add')`.\n *\n * @usageNotes\n *\n * Filter the Actions stream on the \"customers page loaded\" action\n *\n * ```ts\n * import { ofType } from '@ngrx/effects';\n * import * fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * ofType(fromCustomers.pageLoaded)\n * )\n * ```\n */\nfunction ofType(...allowedTypes) {\n return filter((action) => allowedTypes.some((typeOrActionCreator) => {\n if (typeof typeOrActionCreator === 'string') {\n // Comparing the string to type\n return typeOrActionCreator === action.type;\n }\n // We are filtering by ActionCreator\n return typeOrActionCreator.type === action.type;\n }));\n}\n\nfunction reportInvalidActions(output, reporter) {\n if (output.notification.kind === 'N') {\n const action = output.notification.value;\n const isInvalidAction = !isAction(action);\n if (isInvalidAction) {\n reporter.handleError(new Error(`Effect ${getEffectName(output)} dispatched an invalid action: ${stringify(action)}`));\n }\n }\n}\nfunction isAction(action) {\n return (typeof action !== 'function' &&\n action &&\n action.type &&\n typeof action.type === 'string');\n}\nfunction getEffectName({ propertyName, sourceInstance, sourceName, }) {\n const isMethod = typeof sourceInstance[propertyName] === 'function';\n return `\"${sourceName}.${String(propertyName)}${isMethod ? '()' : ''}\"`;\n}\nfunction stringify(action) {\n try {\n return JSON.stringify(action);\n }\n catch (_a) {\n return action;\n }\n}\n\nconst onIdentifyEffectsKey = 'ngrxOnIdentifyEffects';\nfunction isOnIdentifyEffects(instance) {\n return isFunction(instance, onIdentifyEffectsKey);\n}\nconst onRunEffectsKey = 'ngrxOnRunEffects';\nfunction isOnRunEffects(instance) {\n return isFunction(instance, onRunEffectsKey);\n}\nconst onInitEffects = 'ngrxOnInitEffects';\nfunction isOnInitEffects(instance) {\n return isFunction(instance, onInitEffects);\n}\nfunction isFunction(instance, functionName) {\n return (instance &&\n functionName in instance &&\n typeof instance[functionName] === 'function');\n}\n\nconst _ROOT_EFFECTS_GUARD = new InjectionToken('@ngrx/effects Internal Root Guard');\nconst USER_PROVIDED_EFFECTS = new InjectionToken('@ngrx/effects User Provided Effects');\nconst _ROOT_EFFECTS = new InjectionToken('@ngrx/effects Internal Root Effects');\nconst ROOT_EFFECTS = new InjectionToken('@ngrx/effects Root Effects');\nconst _FEATURE_EFFECTS = new InjectionToken('@ngrx/effects Internal Feature Effects');\nconst FEATURE_EFFECTS = new InjectionToken('@ngrx/effects Feature Effects');\nconst EFFECTS_ERROR_HANDLER = new InjectionToken('@ngrx/effects Effects Error Handler');\n\nclass EffectSources extends Subject {\n constructor(errorHandler, effectsErrorHandler) {\n super();\n this.errorHandler = errorHandler;\n this.effectsErrorHandler = effectsErrorHandler;\n }\n addEffects(effectSourceInstance) {\n this.next(effectSourceInstance);\n }\n /**\n * @internal\n */\n toActions() {\n return this.pipe(groupBy(getSourceForInstance), mergeMap((source$) => {\n return source$.pipe(groupBy(effectsInstance));\n }), mergeMap((source$) => {\n const effect$ = source$.pipe(exhaustMap((sourceInstance) => {\n return resolveEffectSource(this.errorHandler, this.effectsErrorHandler)(sourceInstance);\n }), map((output) => {\n reportInvalidActions(output, this.errorHandler);\n return output.notification;\n }), filter((notification) => notification.kind === 'N' && notification.value != null), dematerialize());\n // start the stream with an INIT action\n // do this only for the first Effect instance\n const init$ = source$.pipe(take(1), filter(isOnInitEffects), map((instance) => instance.ngrxOnInitEffects()));\n return merge(effect$, init$);\n }));\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectSources.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectSources, deps: [{ token: i0.ErrorHandler }, { token: EFFECTS_ERROR_HANDLER }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ /** @nocollapse */ EffectSources.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectSources });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectSources, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i0.ErrorHandler }, { type: undefined, decorators: [{\n type: Inject,\n args: [EFFECTS_ERROR_HANDLER]\n }] }];\n } });\nfunction effectsInstance(sourceInstance) {\n if (isOnIdentifyEffects(sourceInstance)) {\n return sourceInstance.ngrxOnIdentifyEffects();\n }\n return '';\n}\nfunction resolveEffectSource(errorHandler, effectsErrorHandler) {\n return (sourceInstance) => {\n const mergedEffects$ = mergeEffects(sourceInstance, errorHandler, effectsErrorHandler);\n if (isOnRunEffects(sourceInstance)) {\n return sourceInstance.ngrxOnRunEffects(mergedEffects$);\n }\n return mergedEffects$;\n };\n}\n\nclass EffectsRunner {\n constructor(effectSources, store) {\n this.effectSources = effectSources;\n this.store = store;\n this.effectsSubscription = null;\n }\n start() {\n if (!this.effectsSubscription) {\n this.effectsSubscription = this.effectSources\n .toActions()\n .subscribe(this.store);\n }\n }\n ngOnDestroy() {\n if (this.effectsSubscription) {\n this.effectsSubscription.unsubscribe();\n this.effectsSubscription = null;\n }\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsRunner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRunner, deps: [{ token: EffectSources }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ /** @nocollapse */ EffectsRunner.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRunner });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRunner, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: EffectSources }, { type: i3.Store }]; } });\n\nconst ROOT_EFFECTS_INIT = '@ngrx/effects/init';\nconst rootEffectsInit = createAction(ROOT_EFFECTS_INIT);\nclass EffectsRootModule {\n constructor(sources, runner, store, rootEffects, storeRootModule, storeFeatureModule, guard) {\n this.sources = sources;\n runner.start();\n rootEffects.forEach((effectSourceInstance) => sources.addEffects(effectSourceInstance));\n store.dispatch({ type: ROOT_EFFECTS_INIT });\n }\n addEffects(effectSourceInstance) {\n this.sources.addEffects(effectSourceInstance);\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule, deps: [{ token: EffectSources }, { token: EffectsRunner }, { token: i3.Store }, { token: ROOT_EFFECTS }, { token: i3.StoreRootModule, optional: true }, { token: i3.StoreFeatureModule, optional: true }, { token: _ROOT_EFFECTS_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ EffectsRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule });\n/** @nocollapse */ /** @nocollapse */ EffectsRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule, decorators: [{\n type: NgModule,\n args: [{}]\n }], ctorParameters: function () {\n return [{ type: EffectSources }, { type: EffectsRunner }, { type: i3.Store }, { type: undefined, decorators: [{\n type: Inject,\n args: [ROOT_EFFECTS]\n }] }, { type: i3.StoreRootModule, decorators: [{\n type: Optional\n }] }, { type: i3.StoreFeatureModule, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [_ROOT_EFFECTS_GUARD]\n }] }];\n } });\n\nclass EffectsFeatureModule {\n constructor(root, effectSourceGroups, storeRootModule, storeFeatureModule) {\n effectSourceGroups.forEach((group) => group.forEach((effectSourceInstance) => root.addEffects(effectSourceInstance)));\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsFeatureModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule, deps: [{ token: EffectsRootModule }, { token: FEATURE_EFFECTS }, { token: i3.StoreRootModule, optional: true }, { token: i3.StoreFeatureModule, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ EffectsFeatureModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule });\n/** @nocollapse */ /** @nocollapse */ EffectsFeatureModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule, decorators: [{\n type: NgModule,\n args: [{}]\n }], ctorParameters: function () {\n return [{ type: EffectsRootModule }, { type: undefined, decorators: [{\n type: Inject,\n args: [FEATURE_EFFECTS]\n }] }, { type: i3.StoreRootModule, decorators: [{\n type: Optional\n }] }, { type: i3.StoreFeatureModule, decorators: [{\n type: Optional\n }] }];\n } });\n\nclass EffectsModule {\n static forFeature(featureEffects = []) {\n return {\n ngModule: EffectsFeatureModule,\n providers: [\n featureEffects,\n {\n provide: _FEATURE_EFFECTS,\n multi: true,\n useValue: featureEffects,\n },\n {\n provide: USER_PROVIDED_EFFECTS,\n multi: true,\n useValue: [],\n },\n {\n provide: FEATURE_EFFECTS,\n multi: true,\n useFactory: createEffects,\n deps: [Injector, _FEATURE_EFFECTS, USER_PROVIDED_EFFECTS],\n },\n ],\n };\n }\n static forRoot(rootEffects = []) {\n return {\n ngModule: EffectsRootModule,\n providers: [\n {\n provide: EFFECTS_ERROR_HANDLER,\n useValue: defaultEffectsErrorHandler,\n },\n EffectsRunner,\n EffectSources,\n Actions,\n rootEffects,\n {\n provide: _ROOT_EFFECTS,\n useValue: [rootEffects],\n },\n {\n provide: _ROOT_EFFECTS_GUARD,\n useFactory: _provideForRootGuard,\n deps: [\n [EffectsRunner, new Optional(), new SkipSelf()],\n [_ROOT_EFFECTS, new Self()],\n ],\n },\n {\n provide: USER_PROVIDED_EFFECTS,\n multi: true,\n useValue: [],\n },\n {\n provide: ROOT_EFFECTS,\n useFactory: createEffects,\n deps: [Injector, _ROOT_EFFECTS, USER_PROVIDED_EFFECTS],\n },\n ],\n };\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ EffectsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule });\n/** @nocollapse */ /** @nocollapse */ EffectsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\nfunction createEffects(injector, effectGroups, userProvidedEffectGroups) {\n const mergedEffects = [];\n for (const effectGroup of effectGroups) {\n mergedEffects.push(...effectGroup);\n }\n for (const userProvidedEffectGroup of userProvidedEffectGroups) {\n mergedEffects.push(...userProvidedEffectGroup);\n }\n return createEffectInstances(injector, mergedEffects);\n}\nfunction createEffectInstances(injector, effects) {\n return effects.map((effect) => injector.get(effect));\n}\nfunction _provideForRootGuard(runner, rootEffects) {\n // check whether any effects are actually passed\n const hasEffects = !(rootEffects.length === 1 && rootEffects[0].length === 0);\n if (hasEffects && runner) {\n throw new TypeError(`EffectsModule.forRoot() called twice. Feature modules should use EffectsModule.forFeature() instead.`);\n }\n return 'guarded';\n}\n\n/**\n * Wraps project fn with error handling making it safe to use in Effects.\n * Takes either a config with named properties that represent different possible\n * callbacks or project/error callbacks that are required.\n */\nfunction act(\n/** Allow to take either config object or project/error functions */\nconfigOrProject, errorFn) {\n const { project, error, complete, operator, unsubscribe } = typeof configOrProject === 'function'\n ? {\n project: configOrProject,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n error: errorFn,\n operator: concatMap,\n complete: undefined,\n unsubscribe: undefined,\n }\n : Object.assign(Object.assign({}, configOrProject), { operator: configOrProject.operator || concatMap });\n return (source) => defer(() => {\n const subject = new Subject();\n return merge(source.pipe(operator((input, index) => defer(() => {\n let completed = false;\n let errored = false;\n let projectedCount = 0;\n return project(input, index).pipe(materialize(), map((notification) => {\n switch (notification.kind) {\n case 'E':\n errored = true;\n return new Notification('N', error(notification.error, input));\n case 'C':\n completed = true;\n return complete\n ? new Notification('N', complete(projectedCount, input))\n : undefined;\n default:\n ++projectedCount;\n return notification;\n }\n }), filter((n) => n != null), dematerialize(), finalize(() => {\n if (!completed && !errored && unsubscribe) {\n subject.next(unsubscribe(projectedCount, input));\n }\n }));\n }))), subject);\n });\n}\n\n/**\n * `concatLatestFrom` combines the source value\n * and the last available value from a lazily evaluated Observable\n * in a new array\n *\n * @usageNotes\n *\n * Select the active customer from the NgRx Store\n *\n * ```ts\n * import { concatLatestFrom } from '@ngrx/effects';\n * import * as fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * concatLatestFrom(() => this.store.select(fromCustomers.selectActiveCustomer))\n * )\n * ```\n *\n * Select a customer from the NgRx Store by its id that is available on the action\n *\n * ```ts\n * import { concatLatestFrom } from '@ngrx/effects';\n * import * fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * concatLatestFrom((action) => this.store.select(fromCustomers.selectCustomer(action.customerId)))\n * )\n * ```\n */\nfunction concatLatestFrom(observablesFactory) {\n return pipe(concatMap((value) => {\n const observables = observablesFactory(value);\n const observablesAsArray = Array.isArray(observables)\n ? observables\n : [observables];\n return of(value).pipe(withLatestFrom(...observablesAsArray));\n }));\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Actions, EFFECTS_ERROR_HANDLER, Effect, EffectSources, EffectsFeatureModule, EffectsModule, EffectsRootModule, EffectsRunner, ROOT_EFFECTS_INIT, USER_PROVIDED_EFFECTS, act, concatLatestFrom, createEffect, defaultEffectsErrorHandler, getEffectsMetadata, mergeEffects, ofType, rootEffectsInit };\n","import { Notification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function materialize() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(Notification.createNext(value));\n }, () => {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, (err) => {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n","import { observeNotification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function dematerialize() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (notification) => observeNotification(notification, subscriber)));\n });\n}\n","import * as i1 from '@ngrx/store';\nimport { createAction, props, isNgrxMockEnvironment, select, ACTIVE_RUNTIME_CHECKS, createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, NgModule, Inject } from '@angular/core';\nimport * as i2 from '@angular/router';\nimport { NavigationStart, RoutesRecognized, NavigationCancel, NavigationError, NavigationEnd } from '@angular/router';\nimport { withLatestFrom } from 'rxjs/operators';\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nconst ROUTER_REQUEST = '@ngrx/router-store/request';\nconst routerRequestAction = createAction(ROUTER_REQUEST, props());\n/**\n * An action dispatched when the router navigates.\n */\nconst ROUTER_NAVIGATION = '@ngrx/router-store/navigation';\nconst routerNavigationAction = createAction(ROUTER_NAVIGATION, props());\n/**\n * An action dispatched when the router cancels navigation.\n */\nconst ROUTER_CANCEL = '@ngrx/router-store/cancel';\nconst routerCancelAction = createAction(ROUTER_CANCEL, props());\n/**\n * An action dispatched when the router errors.\n */\nconst ROUTER_ERROR = '@ngrx/router-store/error';\nconst routerErrorAction = createAction(ROUTER_ERROR, props());\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nconst ROUTER_NAVIGATED = '@ngrx/router-store/navigated';\nconst routerNavigatedAction = createAction(ROUTER_NAVIGATED, props());\n\nfunction routerReducer(state, action) {\n // Allow compilation with strictFunctionTypes - ref: #1344\n const routerAction = action;\n switch (routerAction.type) {\n case ROUTER_NAVIGATION:\n case ROUTER_ERROR:\n case ROUTER_CANCEL:\n return {\n state: routerAction.payload.routerState,\n navigationId: routerAction.payload.event.id,\n };\n default:\n return state;\n }\n}\n\nclass RouterStateSerializer {\n}\n\nclass DefaultRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n serializeRoute(route) {\n const children = route.children.map((c) => this.serializeRoute(c));\n return {\n params: route.params,\n paramMap: route.paramMap,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n routeConfig: route.routeConfig\n ? {\n component: route.routeConfig.component,\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n }\n : null,\n queryParams: route.queryParams,\n queryParamMap: route.queryParamMap,\n fragment: route.fragment,\n component: (route.routeConfig\n ? route.routeConfig.component\n : undefined),\n root: undefined,\n parent: undefined,\n firstChild: children[0],\n pathFromRoot: undefined,\n children,\n };\n }\n}\n\nclass MinimalRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n serializeRoute(route) {\n const children = route.children.map((c) => this.serializeRoute(c));\n return {\n params: route.params,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n routeConfig: route.routeConfig\n ? {\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n }\n : null,\n queryParams: route.queryParams,\n fragment: route.fragment,\n firstChild: children[0],\n children,\n };\n }\n}\n\nvar NavigationActionTiming;\n(function (NavigationActionTiming) {\n NavigationActionTiming[NavigationActionTiming[\"PreActivation\"] = 1] = \"PreActivation\";\n NavigationActionTiming[NavigationActionTiming[\"PostActivation\"] = 2] = \"PostActivation\";\n})(NavigationActionTiming || (NavigationActionTiming = {}));\nconst _ROUTER_CONFIG = new InjectionToken('@ngrx/router-store Internal Configuration');\nconst ROUTER_CONFIG = new InjectionToken('@ngrx/router-store Configuration');\nconst DEFAULT_ROUTER_FEATURENAME = 'router';\nfunction _createRouterConfig(config) {\n return Object.assign({ stateKey: DEFAULT_ROUTER_FEATURENAME, serializer: MinimalRouterStateSerializer, navigationActionTiming: NavigationActionTiming.PreActivation }, config);\n}\nvar RouterTrigger;\n(function (RouterTrigger) {\n RouterTrigger[RouterTrigger[\"NONE\"] = 1] = \"NONE\";\n RouterTrigger[RouterTrigger[\"ROUTER\"] = 2] = \"ROUTER\";\n RouterTrigger[RouterTrigger[\"STORE\"] = 3] = \"STORE\";\n})(RouterTrigger || (RouterTrigger = {}));\n/**\n * Connects RouterModule with StoreModule.\n *\n * During the navigation, before any guards or resolvers run, the router will dispatch\n * a ROUTER_NAVIGATION action, which has the following signature:\n *\n * ```\n * export type RouterNavigationPayload = {\n * routerState: SerializedRouterStateSnapshot,\n * event: RoutesRecognized\n * }\n * ```\n *\n * Either a reducer or an effect can be invoked in response to this action.\n * If the invoked reducer throws, the navigation will be canceled.\n *\n * If navigation gets canceled because of a guard, a ROUTER_CANCEL action will be\n * dispatched. If navigation results in an error, a ROUTER_ERROR action will be dispatched.\n *\n * Both ROUTER_CANCEL and ROUTER_ERROR contain the store state before the navigation\n * which can be used to restore the consistency of the store.\n *\n * Usage:\n *\n * ```typescript\n * @NgModule({\n * declarations: [AppCmp, SimpleCmp],\n * imports: [\n * BrowserModule,\n * StoreModule.forRoot(mapOfReducers),\n * RouterModule.forRoot([\n * { path: '', component: SimpleCmp },\n * { path: 'next', component: SimpleCmp }\n * ]),\n * StoreRouterConnectingModule.forRoot()\n * ],\n * bootstrap: [AppCmp]\n * })\n * export class AppModule {\n * }\n * ```\n */\nclass StoreRouterConnectingModule {\n constructor(store, router, serializer, errorHandler, config, activeRuntimeChecks) {\n this.store = store;\n this.router = router;\n this.serializer = serializer;\n this.errorHandler = errorHandler;\n this.config = config;\n this.activeRuntimeChecks = activeRuntimeChecks;\n this.lastEvent = null;\n this.routerState = null;\n this.trigger = RouterTrigger.NONE;\n this.stateKey = this.config.stateKey;\n if (!isNgrxMockEnvironment() &&\n isDevMode() &&\n ((activeRuntimeChecks === null || activeRuntimeChecks === void 0 ? void 0 : activeRuntimeChecks.strictActionSerializability) ||\n (activeRuntimeChecks === null || activeRuntimeChecks === void 0 ? void 0 : activeRuntimeChecks.strictStateSerializability)) &&\n this.serializer instanceof DefaultRouterStateSerializer) {\n console.warn('@ngrx/router-store: The serializability runtime checks cannot be enabled ' +\n 'with the DefaultRouterStateSerializer. The default serializer ' +\n 'has an unserializable router state and actions that are not serializable. ' +\n 'To use the serializability runtime checks either use ' +\n 'the MinimalRouterStateSerializer or implement a custom router state serializer. ' +\n 'This also applies to Ivy with immutability runtime checks.');\n }\n this.setUpStoreStateListener();\n this.setUpRouterEventsListener();\n }\n static forRoot(config = {}) {\n return {\n ngModule: StoreRouterConnectingModule,\n providers: [\n { provide: _ROUTER_CONFIG, useValue: config },\n {\n provide: ROUTER_CONFIG,\n useFactory: _createRouterConfig,\n deps: [_ROUTER_CONFIG],\n },\n {\n provide: RouterStateSerializer,\n useClass: config.serializer\n ? config.serializer\n : config.routerState === 0 /* Full */\n ? DefaultRouterStateSerializer\n : MinimalRouterStateSerializer,\n },\n ],\n };\n }\n setUpStoreStateListener() {\n this.store\n .pipe(select(this.stateKey), withLatestFrom(this.store))\n .subscribe(([routerStoreState, storeState]) => {\n this.navigateIfNeeded(routerStoreState, storeState);\n });\n }\n navigateIfNeeded(routerStoreState, storeState) {\n if (!routerStoreState || !routerStoreState.state) {\n return;\n }\n if (this.trigger === RouterTrigger.ROUTER) {\n return;\n }\n if (this.lastEvent instanceof NavigationStart) {\n return;\n }\n const url = routerStoreState.state.url;\n if (!isSameUrl(this.router.url, url)) {\n this.storeState = storeState;\n this.trigger = RouterTrigger.STORE;\n this.router.navigateByUrl(url).catch((error) => {\n this.errorHandler.handleError(error);\n });\n }\n }\n setUpRouterEventsListener() {\n const dispatchNavLate = this.config.navigationActionTiming ===\n NavigationActionTiming.PostActivation;\n let routesRecognized;\n this.router.events\n .pipe(withLatestFrom(this.store))\n .subscribe(([event, storeState]) => {\n this.lastEvent = event;\n if (event instanceof NavigationStart) {\n this.routerState = this.serializer.serialize(this.router.routerState.snapshot);\n if (this.trigger !== RouterTrigger.STORE) {\n this.storeState = storeState;\n this.dispatchRouterRequest(event);\n }\n }\n else if (event instanceof RoutesRecognized) {\n routesRecognized = event;\n if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {\n this.dispatchRouterNavigation(event);\n }\n }\n else if (event instanceof NavigationCancel) {\n this.dispatchRouterCancel(event);\n this.reset();\n }\n else if (event instanceof NavigationError) {\n this.dispatchRouterError(event);\n this.reset();\n }\n else if (event instanceof NavigationEnd) {\n if (this.trigger !== RouterTrigger.STORE) {\n if (dispatchNavLate) {\n this.dispatchRouterNavigation(routesRecognized);\n }\n this.dispatchRouterNavigated(event);\n }\n this.reset();\n }\n });\n }\n dispatchRouterRequest(event) {\n this.dispatchRouterAction(ROUTER_REQUEST, { event });\n }\n dispatchRouterNavigation(lastRoutesRecognized) {\n const nextRouterState = this.serializer.serialize(lastRoutesRecognized.state);\n this.dispatchRouterAction(ROUTER_NAVIGATION, {\n routerState: nextRouterState,\n event: new RoutesRecognized(lastRoutesRecognized.id, lastRoutesRecognized.url, lastRoutesRecognized.urlAfterRedirects, nextRouterState),\n });\n }\n dispatchRouterCancel(event) {\n this.dispatchRouterAction(ROUTER_CANCEL, {\n storeState: this.storeState,\n event,\n });\n }\n dispatchRouterError(event) {\n this.dispatchRouterAction(ROUTER_ERROR, {\n storeState: this.storeState,\n event: new NavigationError(event.id, event.url, `${event}`),\n });\n }\n dispatchRouterNavigated(event) {\n const routerState = this.serializer.serialize(this.router.routerState.snapshot);\n this.dispatchRouterAction(ROUTER_NAVIGATED, { event, routerState });\n }\n dispatchRouterAction(type, payload) {\n this.trigger = RouterTrigger.ROUTER;\n try {\n this.store.dispatch({\n type,\n payload: Object.assign(Object.assign({ routerState: this.routerState }, payload), { event: this.config.routerState === 0 /* Full */\n ? payload.event\n : {\n id: payload.event.id,\n url: payload.event.url,\n // safe, as it will just be `undefined` for non-NavigationEnd router events\n urlAfterRedirects: payload.event\n .urlAfterRedirects,\n } }),\n });\n }\n finally {\n this.trigger = RouterTrigger.NONE;\n }\n }\n reset() {\n this.trigger = RouterTrigger.NONE;\n this.storeState = null;\n this.routerState = null;\n }\n}\n/** @nocollapse */ /** @nocollapse */ StoreRouterConnectingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule, deps: [{ token: i1.Store }, { token: i2.Router }, { token: RouterStateSerializer }, { token: i0.ErrorHandler }, { token: ROUTER_CONFIG }, { token: ACTIVE_RUNTIME_CHECKS }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ StoreRouterConnectingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule });\n/** @nocollapse */ /** @nocollapse */ StoreRouterConnectingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: StoreRouterConnectingModule, decorators: [{\n type: NgModule,\n args: [{}]\n }], ctorParameters: function () {\n return [{ type: i1.Store }, { type: i2.Router }, { type: RouterStateSerializer }, { type: i0.ErrorHandler }, { type: undefined, decorators: [{\n type: Inject,\n args: [ROUTER_CONFIG]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ACTIVE_RUNTIME_CHECKS]\n }] }];\n } });\n/**\n * Check if the URLs are matching. Accounts for the possibility of trailing \"/\" in url.\n */\nfunction isSameUrl(first, second) {\n return stripTrailingSlash(first) === stripTrailingSlash(second);\n}\nfunction stripTrailingSlash(text) {\n if ((text === null || text === void 0 ? void 0 : text.length) > 0 && text[text.length - 1] === '/') {\n return text.substring(0, text.length - 1);\n }\n return text;\n}\n\nfunction createRouterSelector() {\n return createFeatureSelector(DEFAULT_ROUTER_FEATURENAME);\n}\nfunction getSelectors(selectState = createRouterSelector()) {\n const selectRouterState = createSelector(selectState, (router) => router && router.state);\n const selectRootRoute = createSelector(selectRouterState, (routerState) => routerState && routerState.root);\n const selectCurrentRoute = createSelector(selectRootRoute, (rootRoute) => {\n if (!rootRoute) {\n return undefined;\n }\n let route = rootRoute;\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n });\n const selectFragment = createSelector(selectRootRoute, (route) => route && route.fragment);\n const selectQueryParams = createSelector(selectRootRoute, (route) => route && route.queryParams);\n const selectQueryParam = (param) => createSelector(selectQueryParams, (params) => params && params[param]);\n const selectRouteParams = createSelector(selectCurrentRoute, (route) => route && route.params);\n const selectRouteParam = (param) => createSelector(selectRouteParams, (params) => params && params[param]);\n const selectRouteData = createSelector(selectCurrentRoute, (route) => route && route.data);\n const selectUrl = createSelector(selectRouterState, (routerState) => routerState && routerState.url);\n return {\n selectCurrentRoute,\n selectFragment,\n selectQueryParams,\n selectQueryParam,\n selectRouteParams,\n selectRouteParam,\n selectRouteData,\n selectUrl,\n };\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DEFAULT_ROUTER_FEATURENAME, DefaultRouterStateSerializer, MinimalRouterStateSerializer, NavigationActionTiming, ROUTER_CANCEL, ROUTER_CONFIG, ROUTER_ERROR, ROUTER_NAVIGATED, ROUTER_NAVIGATION, ROUTER_REQUEST, RouterStateSerializer, StoreRouterConnectingModule, createRouterSelector, getSelectors, routerCancelAction, routerErrorAction, routerNavigatedAction, routerNavigationAction, routerReducer, routerRequestAction };\n","import { Injectable } from '@angular/core';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { ROUTER_NAVIGATED, RouterNavigatedAction } from '@ngrx/router-store';\r\nimport { activeUrl, mobileNavigation } from './navigation.actions';\r\nimport { handleClassCondition } from 'src/app/shared/utils/utils.functions';\r\n\r\n@Injectable()\r\nexport class NavigationEffects {\r\n\r\n mapToActiveUrl$ = createEffect(() => this.actions$.pipe(\r\n ofType(ROUTER_NAVIGATED),\r\n map((action: RouterNavigatedAction) => activeUrl({ url: action.payload.event.url })),\r\n tap(action => handleClassCondition(false, 'mobile-nav-on', document.querySelector('body')))\r\n ));\r\n\r\n // mapToActiveUrlChannel$ = createEffect(() => this.actions$.pipe(\r\n // ofType(ROUTER_NAVIGATED),\r\n // map((action: RouterNavigatedAction) => activeUrl({ url: action.payload.event.url })),\r\n // tap(action => handleClassCondition(false, 'mobile-nav-on', document.querySelector('body')))\r\n // ));\r\n\r\n mobileNavigation$ = createEffect(() => this.actions$.pipe(\r\n ofType(mobileNavigation),\r\n tap(action => handleClassCondition(action.open, 'mobile-nav-on', document.querySelector('body'))\r\n )), { dispatch: false });\r\n\r\n constructor(private actions$: Actions, breakpointObserver: BreakpointObserver) {\r\n breakpointObserver.observe(\r\n '(max-width: 600px)',\r\n ).subscribe(result => {\r\n handleClassCondition(result.matches, 'mobile-view-activated', document.querySelector('body'));\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n","export const NavigationItems = [\r\n\r\n {\r\n title: 'Manage'\r\n },\r\n\r\n {\r\n title: 'PvDC Cloud Manage (TM)',\r\n tags: 'cloud manage',\r\n icon : 'fal fa-cloud',\r\n items: [\r\n {\r\n title: 'Overview',\r\n tags: 'cloud manage compute vms workloads overview',\r\n routerLink: '/cloudmanage/vms'\r\n },\r\n {\r\n title: 'Compute',\r\n tags: 'cloud manage compute',\r\n routerLink: '/cloudmanage/compute',\r\n },\r\n // {\r\n // title: 'Resources',\r\n // tags: 'net3 cloud manage resources',\r\n // icon: 'fal fa-sliders-h',\r\n // items: [\r\n \r\n // // {\r\n // // title: 'Templates',\r\n // // tags: 'net3 cloud manage resources templates',\r\n // // routerLink: '/cloudmanage/resources/templates'\r\n // // },\r\n // {\r\n // title: 'Add Resources',\r\n // tags: 'net3 cloud manage resources add',\r\n // routerLink: '/cloudmanage/resources/add-resources'\r\n // },\r\n // // {\r\n // // title: 'Cloud Usage',\r\n // // tags: 'net3 cloud manage resources usage',\r\n // // routerLink: '/cloudmanage/resources/usage'\r\n // // }\r\n // ]\r\n // },\r\n\r\n\r\n\r\n {\r\n title: 'Networks',\r\n tags: 'cloud manage networking',\r\n routerLink: '/cloudmanage/networking'\r\n },\r\n {\r\n title: 'Edge Gateways',\r\n tags: 'cloud manage networking edge gateway',\r\n routerLink: '/cloudmanage/networking/edge-gateways'\r\n },\r\n // {\r\n // title: 'Providers',\r\n // tags: 'cloud manage providers',\r\n // routerLink: '/cloudmanage/providers'\r\n // },\r\n ]\r\n },\r\n\r\n // {\r\n // title: 'Cost',\r\n // tags: 'net3 cost',\r\n // icon: 'fal fa-dollar-sign',\r\n // items: [\r\n // {\r\n // title: 'Cost Display',\r\n // tags: 'net3 cost display',\r\n // routerLink: '/cost/costdisplay'\r\n // }\r\n // ]\r\n // },\r\n\r\n {\r\n title: 'Disaster Recovery',\r\n tags: 'net3 brs',\r\n icon: 'fal fa-life-ring',\r\n items: [\r\n {\r\n title: 'Manage',\r\n tags: 'net3 brs manage',\r\n routerLink: '/brs/brsmanage'\r\n }\r\n ]\r\n },\r\n\r\n {\r\n title: 'Backups',\r\n tags: 'net3 dps',\r\n icon: 'fal fa-shield-alt',\r\n items: [\r\n // {\r\n // title: 'Manage',\r\n // tags: 'net3 dps manage bulk',\r\n // routerLink: '/dps/dpsmanage'\r\n // },\r\n {\r\n title: 'External Backups',\r\n tags: 'net3 dps external manage',\r\n routerLink: '/dps/external'\r\n },\r\n ]\r\n },\r\n\r\n // {\r\n // title: 'Recovery Director Services',\r\n // tags: 'net3 rds recovery director',\r\n // icon: 'fal fa-sitemap',\r\n // items: [\r\n // {\r\n // title: 'Recovery Director Selector',\r\n // tags: 'net3 rds recovery director selector',\r\n // routerLink: '/rds/selector'\r\n // }\r\n // ]\r\n // },\r\n\r\n {\r\n title: 'Resources'\r\n },\r\n\r\n {\r\n title: 'Resources',\r\n tags: 'net3 cloud manage resources',\r\n icon: 'fal fa-sliders-h',\r\n items: [\r\n\r\n // {\r\n // title: 'Templates',\r\n // tags: 'net3 cloud manage resources templates',\r\n // routerLink: '/cloudmanage/resources/templates'\r\n // },\r\n {\r\n title: 'Add Resources',\r\n tags: 'net3 cloud manage resources add',\r\n routerLink: '/cloudmanage/resources/add-resources'\r\n },\r\n // {\r\n // title: 'Cloud Usage',\r\n // tags: 'net3 cloud manage resources usage',\r\n // routerLink: '/cloudmanage/resources/usage'\r\n // }\r\n ]\r\n },\r\n\r\n {\r\n title: 'Monitoring'\r\n },\r\n\r\n {\r\n title: 'Monitoring Options',\r\n tags: 'net3 monitoring audit jobs',\r\n icon: 'fal fa-eye',\r\n items: [\r\n {\r\n title: 'Jobs',\r\n tags: 'net3 monitoring jobs',\r\n routerLink: '/monitor/jobs'\r\n },\r\n // {\r\n // title: 'Logs',\r\n // tags: 'net3 monitoring logs',\r\n // routerLink: '/monitor/logs'\r\n // },\r\n {\r\n title: 'Audit',\r\n tags: 'net3 monitoring audit',\r\n routerLink: '/monitor/audit'\r\n },\r\n {\r\n title: 'Services',\r\n routerLink: '/alive',\r\n },\r\n ]\r\n },\r\n\r\n {\r\n title: 'User Management'\r\n },\r\n\r\n {\r\n title: 'Account Management',\r\n tags: 'net3 user login logout',\r\n icon: 'fal fa-user-circle',\r\n items: [\r\n {\r\n title: 'Profile',\r\n tags: 'net3 user profile',\r\n routerLink: '/manage/profile'\r\n },\r\n // {\r\n // title: 'Permissions',\r\n // tags: 'net3 user permissions',\r\n // routerLink: '/manage/permissions'\r\n // },\r\n {\r\n title: 'Users',\r\n tags: 'net3 user maintenance',\r\n routerLink: '/manage/users'\r\n },\r\n {\r\n title: 'Logout',\r\n tags: 'net3 user logout',\r\n routerLink: '/account/logout'\r\n },\r\n ]\r\n },\r\n\r\n {\r\n title: 'Support'\r\n },\r\n\r\n {\r\n title: 'Customer Support',\r\n tags: 'customer support',\r\n icon: 'fal fa-cog',\r\n items: [\r\n {\r\n title: 'Submit Ticket',\r\n tags: 'customer support contact help',\r\n routerLink: '/support/ticket'\r\n },\r\n {\r\n title: 'FAQ',\r\n tags: 'application info faq',\r\n routerLink: '/support/faq'\r\n },\r\n {\r\n title: 'Help',\r\n tags: 'application help',\r\n routerLink: '/support/help'\r\n },\r\n {\r\n title: 'Contact Us',\r\n tags: 'customer support contact contacts',\r\n routerLink: '/support/contact'\r\n }\r\n ]\r\n },\r\n\r\n {\r\n title: 'Info'\r\n },\r\n\r\n {\r\n title: 'Application Info',\r\n tags: 'application info',\r\n icon: 'fal fa-info-circle',\r\n items: [\r\n {\r\n title: 'Release Notes',\r\n tags: 'application info introduction',\r\n routerLink: '/intel/introduction'\r\n },\r\n {\r\n title: 'Terms of Use/Privacy',\r\n tags: 'application info privacy terms',\r\n routerLink: '/intel/privacy'\r\n }\r\n ]\r\n },\r\n\r\n];\r\n","import { NavigationItems } from '../../app.navigation';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport * as NavigationActions from './navigation.actions';\r\n\r\nexport const navigationFeatureKey = 'navigation';\r\n\r\nexport interface NavigationItem {\r\n title: string;\r\n icon?: string;\r\n tags?: string;\r\n routerLink?: string;\r\n active?: boolean;\r\n open?: boolean;\r\n items?: NavigationItem[];\r\n matched?: boolean;\r\n navTitle?: boolean;\r\n\r\n badge?: any;\r\n}\r\n\r\nexport interface NavigationState {\r\n items: NavigationItem[];\r\n total: number;\r\n filterActive: boolean;\r\n filterText: string;\r\n matched: number;\r\n}\r\n\r\nexport const initialState: NavigationState = {\r\n items: decorateItems(NavigationItems),\r\n total: countTotal(NavigationItems),\r\n filterActive: false,\r\n filterText: '',\r\n matched: 0\r\n};\r\n\r\nconst navigationReducer = createReducer(\r\n initialState,\r\n on(NavigationActions.activeUrl, (state, action) => ({\r\n ...state,\r\n items: detectActiveItems(state.items, action.url)\r\n })),\r\n on(NavigationActions.toggleNavSection, (state, action) => ({\r\n ...state,\r\n items: toggleItems(state.items, action.item)\r\n })),\r\n on(NavigationActions.toggleFilter, state => {\r\n if (state.filterActive) {\r\n return {\r\n ...state,\r\n filterActive: false,\r\n matched: 0,\r\n items: state.items.map(_ => ({ ..._, matched: null }))\r\n };\r\n } else {\r\n const items = filterItems(state.items, state.filterText);\r\n return {\r\n ...state,\r\n filterActive: true,\r\n items,\r\n matched: countMatched(items),\r\n };\r\n }\r\n\r\n }),\r\n on(NavigationActions.navigationFilter, (state, action) => {\r\n const items = filterItems(state.items, action.text);\r\n return {\r\n ...state,\r\n filterText: action.text,\r\n items,\r\n matched: countMatched(items),\r\n };\r\n })\r\n);\r\n\r\nexport function reducer(state: NavigationState, action: Action) {\r\n return navigationReducer(state, action);\r\n}\r\n\r\n\r\n\r\n// utils\r\n\r\n// recursevly add `open` and `active` fields to items\r\nfunction decorateItems(navItems: NavigationItem[]): NavigationItem[] {\r\n return navItems.map(navItem => {\r\n const item: NavigationItem = {\r\n ...navItem,\r\n active: false,\r\n matched: null\r\n };\r\n if (navItem.items) {\r\n item.open = false;\r\n item.items = decorateItems(navItem.items);\r\n }\r\n\r\n item.navTitle = !navItem.items && !navItem.routerLink && !!navItem.title;\r\n\r\n return item;\r\n });\r\n}\r\n\r\n// recursevly count total of all items\r\nfunction countTotal(navItems: NavigationItem[]): number {\r\n let total = navItems.length;\r\n navItems.filter(_ => !!_.items).forEach(_ => {\r\n total += countTotal(_.items);\r\n });\r\n return total;\r\n}\r\n\r\n// recursevly count total of filter matched items\r\nfunction countMatched(navItems: NavigationItem[]): number {\r\n let matched = navItems.filter(_ => !!_.matched).length;\r\n navItems.filter(_ => !!_.items).forEach(_ => {\r\n matched += countMatched(_.items);\r\n });\r\n return matched;\r\n}\r\n\r\n\r\n// recursevly check if item is active by url when navigation ends\r\n// if active item has parent it's `open` field becomes true\r\nfunction detectActiveItems(navItems: NavigationItem[], activeUrl: string): NavigationItem[] {\r\n return navItems.map(navItem => {\r\n const isActive = itemIsActive(navItem, activeUrl);\r\n const item = {\r\n ...navItem,\r\n active: isActive\r\n };\r\n if (navItem.items) {\r\n item.open = isActive;\r\n item.items = detectActiveItems(navItem.items, activeUrl);\r\n }\r\n return item;\r\n });\r\n}\r\n\r\n// recursevly check if item is active by url\r\n// if any of item children is active item considered as active\r\nfunction itemIsActive(item: NavigationItem, activeUrl: string) {\r\n if (item.routerLink === activeUrl) {\r\n return true;\r\n } else if (item.items) {\r\n return item.items.some(_ => itemIsActive(_, activeUrl));\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nfunction toggleItems(navItems: NavigationItem[], toggledItem: NavigationItem): NavigationItem[] {\r\n\r\n const isToggledItemLevel = navItems.some(_ => _ === toggledItem);\r\n return navItems.map(navItem => {\r\n\r\n const item = {\r\n ...navItem\r\n };\r\n\r\n if (isToggledItemLevel && item.items && navItem !== toggledItem) {\r\n item.open = false;\r\n }\r\n if (navItem === toggledItem) {\r\n item.open = !navItem.open;\r\n }\r\n if (navItem.items) {\r\n item.items = toggleItems(navItem.items, toggledItem);\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction filterItems(navItems: NavigationItem[], text: string): NavigationItem[] {\r\n\r\n return navItems.map(navItem => {\r\n\r\n const item = {\r\n ...navItem,\r\n };\r\n\r\n if (navItem.items) {\r\n item.matched = navItemMatch(navItem, text) || navItem.items.some(_ => navItemMatch(_, text));\r\n item.items = filterItems(navItem.items, text);\r\n } else {\r\n item.matched = navItemMatch(navItem, text);\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction navItemMatch(item: NavigationItem, text: string) {\r\n return (!text.trim() || (item.tags && !!item.tags.match(new RegExp(`.*${text.trim()}.*`, 'gi'))));\r\n\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { NavigationState } from './navigation.reducer';\r\n\r\nexport const selectNavigationState = createFeatureSelector('navigation');\r\n\r\nexport const selectNavigationItems = createSelector(selectNavigationState, state => state.items);\r\nexport const selectFilter = createSelector(selectNavigationState, state => ({\r\n active: state.filterActive,\r\n text: state.filterText\r\n}));\r\n\r\n\r\nexport const selectResult = createSelector(selectNavigationState, state => ({\r\n active: state.filterActive && !!state.filterText.trim(),\r\n total: state.total,\r\n matched: state.matched\r\n}));\r\n","import * as i0 from '@angular/core';\nimport { Injectable, NgModule } from '@angular/core';\nimport { Subject, merge, fromEvent, timer } from 'rxjs';\n\nclass BnNgIdleService {\r\n constructor() {\r\n this.expired$ = new Subject();\r\n }\r\n startWatching(timeOutSeconds) {\r\n this.idle$ = merge(fromEvent(document, 'mousemove'), fromEvent(document, 'click'), fromEvent(document, 'mousedown'), fromEvent(document, 'keypress'), fromEvent(document, 'DOMMouseScroll'), fromEvent(document, 'mousewheel'), fromEvent(document, 'touchmove'), fromEvent(document, 'MSPointerMove'), fromEvent(window, 'mousemove'), fromEvent(window, 'resize'));\r\n this.timeOutMilliSeconds = timeOutSeconds * 1000;\r\n this.idleSubscription = this.idle$.subscribe((res) => {\r\n this.resetTimer();\r\n });\r\n this.startTimer();\r\n return this.expired$;\r\n }\r\n startTimer() {\r\n this.timer$ = timer(this.timeOutMilliSeconds, this.timeOutMilliSeconds).subscribe((res) => {\r\n this.expired$.next(true);\r\n });\r\n }\r\n resetTimer() {\r\n this.timer$.unsubscribe();\r\n this.startTimer();\r\n }\r\n stopTimer() {\r\n this.timer$.unsubscribe();\r\n this.idleSubscription.unsubscribe();\r\n }\r\n}\r\nBnNgIdleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nBnNgIdleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root'\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\nclass BnNgIdleModule {\r\n}\r\nBnNgIdleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nBnNgIdleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleModule });\r\nBnNgIdleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleModule, providers: [BnNgIdleService], imports: [[]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.6\", ngImport: i0, type: BnNgIdleModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [],\r\n declarations: [],\r\n providers: [BnNgIdleService],\r\n exports: []\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of bn-ng-idle\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { BnNgIdleModule, BnNgIdleService };\n","import { Store } from '@ngrx/store';\r\nimport { APP_CONFIG } from 'src/app/app.config';\r\nimport { mobileNavigation } from 'src/app/store/navigation';\r\nimport { Component, ChangeDetectionStrategy, HostListener, ViewChild } from '@angular/core';\r\nimport { BnNgIdleService } from 'bn-ng-idle';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport { DialogsService } from '../../dialogs/dialogs.service';\r\nimport { MetricsService } from '@app/core/_services/metrics.service';\r\n\r\n@Component({\r\n selector: 'smart-main',\r\n templateUrl: './main.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MainComponent {\r\n @ViewChild('childModal', { static: false }) childModal: ModalDirective;\r\n inactivityInterval: number = APP_CONFIG.inactivityInterval;\r\n signoutTimeout: number = APP_CONFIG.signoutTimeout;\r\n app = APP_CONFIG.app;\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n unloadHandler(event: Event) {\r\n return false;\r\n // this.n3tStore.dispatchAppReset();\r\n }\r\n\r\n constructor(private store: Store,\r\n private dialogs: DialogsService,\r\n private bnIdle: BnNgIdleService,\r\n public metricsSvc: MetricsService\r\n ) {\r\n }\r\n ngOnInit(): void {\r\n this.bnIdle.startWatching(this.inactivityInterval).subscribe((isTimedOut: boolean) =>this.onLogoutTimer(isTimedOut));\r\n }\r\n\r\n onLogoutTimer(isTimedOut: boolean): void {\r\n if (isTimedOut) {\r\n this.bnIdle.stopTimer();\r\n this.showChildModal();\r\n }\r\n }\r\n\r\n closeMobileNav($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(mobileNavigation({open: false}));\r\n }\r\n\r\n //Auto logout\r\n async showChildModal(): Promise {\r\n const result = await this.dialogs.confirmTimer({\r\n title: `Session Timeout` ,\r\n message: `Please click \"Stay signed in\" to keep working or click \"Sign Out\" to end your session now.`,\r\n buttons: {\r\n confirm: {\r\n label: 'Sign Out',\r\n className: 'btn-danger shadow-0'\r\n },\r\n cancel: {\r\n label: 'Stay Signed In',\r\n className: 'btn-default'\r\n }\r\n },\r\n timeout: this.signoutTimeout\r\n }).subscribe(x => {\r\n console.log('session timeout dialog timeout complete');\r\n })\r\n\r\n // if (result == true) {\r\n // this.authService.logout();\r\n // this.n3tstore.dispatchSessionTimeoutMetric();\r\n // }\r\n this.bnIdle.startWatching(this.inactivityInterval);\r\n }\r\n}\r\n\r\n","
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { BsModalRef } from 'ngx-bootstrap/modal';\r\n\r\n@Component({\r\n selector: 'smart-shortcut-modal',\r\n templateUrl: './shortcut-modal.component.html',\r\n})\r\nexport class ShortcutModalComponent {\r\n\r\n constructor(public bsModalRef: BsModalRef) { }\r\n\r\n closeShortcut($event: MouseEvent) {\r\n this.bsModalRef.hide();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { ShortcutModalComponent } from './shortcut-modal.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ShortcutModalService {\r\n bsModalRef: BsModalRef;\r\n\r\n constructor(private modalService: BsModalService) { }\r\n\r\n public openModal() {\r\n this.bsModalRef = this.modalService.show(ShortcutModalComponent,\r\n {\r\n class: 'modal-dialog-top modal-transparent'\r\n });\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { ShortcutModalService } from '../shortcut-modal/shortcut-modal.service';\r\nimport { APP_CONFIG } from 'src/app/app.config';\r\n\r\n@Component({\r\n selector: 'smart-logo',\r\n templateUrl: './logo.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LogoComponent {\r\n logo = APP_CONFIG.logo;\r\n appName = APP_CONFIG.appName.replace(\"PvDC \", \"\");\r\n\r\n constructor(public shortcut: ShortcutModalService) { }\r\n\r\n openShortcut($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.shortcut.openModal();\r\n\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n {{ appName }}\r\n \r\n \r\n
\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { toggleFilter, selectFilter, navigationFilter } from 'src/app/store/navigation';\r\nimport { SubSink } from 'subsink';\r\nimport { Subject } from 'rxjs';\r\nimport { tap, throttleTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'smart-nav-filter',\r\n templateUrl: './nav-filter.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavFilterComponent implements OnDestroy {\r\n\r\n vm$ = this.store.select(selectFilter);\r\n\r\n private sub = new SubSink();\r\n private textThrhottle$ = new Subject();\r\n\r\n constructor(private store: Store) {\r\n this.sub.sink = this.textThrhottle$.pipe(\r\n throttleTime(300),\r\n distinctUntilChanged(),\r\n tap(text => {\r\n this.store.dispatch(navigationFilter({text}));\r\n })\r\n ).subscribe();\r\n }\r\n\r\n toggleFilter($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(toggleFilter());\r\n }\r\n\r\n handleKeyup($event: KeyboardEvent, value: string) {\r\n this.textThrhottle$.next(value.trim());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n}\r\n","import { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { toggleFilter } from 'src/app/store/navigation';\r\nimport { APP_CONFIG } from 'src/app/app.config';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { AuthUser } from '@app/core/_models';\r\nimport { Company } from '@app/core/gql/graphql/company/schema/type';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'smart-nav-info-card',\r\n templateUrl: './nav-info-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavInfoCardComponent implements OnInit, OnDestroy{\r\n\r\n user = APP_CONFIG.user;\r\n avatar = APP_CONFIG.avatar;\r\n\r\n navigationSubscription:Subscription;\r\n user$: Observable;\r\n company$: Observable;\r\n\r\n constructor(private router: Router,\r\n private store: Store,\r\n private n3tStore: N3TStore,\r\n private cdr: ChangeDetectorRef) { \r\n }\r\n\r\n toggleFilter($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(toggleFilter());\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.user$ = this.n3tStore.selectUser(); //this.authService.user;\r\n //this.user$.subscribe();\r\n this.company$ = this.n3tStore.selectCompany(); //this.gqlService.gql.portal.company;\r\n //this.company$.subscribe();\r\n\r\n this.navigationSubscription = this.router.events.subscribe((e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n if(e.url == \"/account/login\") {\r\n this.user$ = new Observable(); //this.authService.user;\r\n this.company$ = new Observable(); //this.n3tStore.selectCompany(); //this.gqlService.gql.portal.company;\r\n }\r\n else {\r\n this.user$ = this.n3tStore.selectUser(); //this.authService.user;\r\n this.company$ = this.n3tStore.selectCompany(); //this.gqlService.gql.portal.company;\r\n }\r\n this.cdr.detectChanges();\r\n \r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n if (this.navigationSubscription) { \r\n this.navigationSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n","\r\n \r\n \r\n \r\n {{item.badge.label}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n {{ item.title }}\r\n {{item.badge.label}}\r\n \r\n\r\n\r\n {{ item.title }}\r\n\r\n","import { Component, Input, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { NavigationItem, toggleNavSection } from 'src/app/store/navigation';\r\n\r\nimport { trigger, state, style, transition, animate, group } from '@angular/animations';\r\nimport { Store } from '@ngrx/store';\r\nimport { makeSlideInOut } from '../../utils/animations';\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: '[smart-nav-item]',\r\n templateUrl: './nav-item.component.html',\r\n animations: [ makeSlideInOut()],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavItemComponent {\r\n\r\n @Input() item: NavigationItem;\r\n @Input() minified: boolean;\r\n\r\n @HostBinding('class.active') get active() { return this.item.active; }\r\n @HostBinding('class.open') get open() { return this.item.open; }\r\n @HostBinding('class.js-filter-hide') get hidden() { return this.item.matched !== null && !this.item.matched; }\r\n @HostBinding('class.js-filter-show') get shown() { return this.item.matched !== null && this.item.matched; }\r\n @HostBinding('class.nav-title') get navTitle() { return this.item.navTitle; }\r\n\r\n\r\n constructor(\r\n private store: Store\r\n ) { }\r\n\r\n toggleSection($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(toggleNavSection({ item: this.item }));\r\n }\r\n\r\n trackByFn(idx: number, item: NavigationItem) {\r\n return item.title + '_' + idx;\r\n }\r\n\r\n}\r\n","
    \r\n \r\n
\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Store, createSelector } from '@ngrx/store';\r\nimport { selectNavigationItems, NavigationItem } from 'src/app/store/navigation';\r\nimport { selectSettingsState } from 'src/app/store/settings';\r\n\r\n@Component({\r\n selector: 'smart-nav',\r\n templateUrl: './nav.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavComponent {\r\n\r\n vm$ = this.store.select(\r\n createSelector(\r\n selectNavigationItems,\r\n selectSettingsState,\r\n (items, settings) => ({ items, minified: settings.minifyNavigation })\r\n )\r\n );\r\n\r\n constructor(private store: Store) { }\r\n\r\n trackByFn(idx: number, item: NavigationItem) {\r\n return item.title + '_' + idx;\r\n }\r\n}\r\n","\r\n \r\n showing {{ vm.matched }} from {{ vm.total }} total\r\n \r\n\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { selectResult } from 'src/app/store/navigation';\r\n\r\n@Component({\r\n selector: 'smart-nav-filter-msg',\r\n templateUrl: './nav-filter-msg.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavFilterMsgComponent {\r\n vm$ = this.store.select(selectResult);\r\n constructor(private store: Store) { }\r\n}\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport * as settings from 'src/app/store/settings';\r\n\r\n@Component({\r\n selector: 'smart-nav-footer',\r\n templateUrl: './nav-footer.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavFooterComponent {\r\n\r\n constructor(private store: Store) {}\r\n\r\n toggleMinifyNavigation($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(settings.toggleMinifyNavigation());\r\n }\r\n}\r\n","\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { selectSettingsState } from 'src/app/store/settings';\r\n\r\n@Component({\r\n selector: 'smart-navigation',\r\n template: `\r\n \r\n\t \r\n \r\n \r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NavigationComponent {\r\n\r\n vm$ = this.store.select(selectSettingsState);\r\n\r\n constructor(private store: Store) { }\r\n}\r\n","\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { selectFilter } from 'src/app/store/navigation';\r\nimport { Store } from '@ngrx/store';\r\n\r\n@Component({\r\n selector: 'smart-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SidebarComponent {\r\n\r\n vm$ = this.store.select(selectFilter);\r\n\r\n constructor(private store: Store) { }\r\n\r\n}\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport * as settings from 'src/app/store/settings';\r\n\r\n@Component({\r\n selector: 'smart-settings-shortcut',\r\n templateUrl: './settings-shortcut.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SettingsShortcutComponent {\r\n\r\n constructor(private store: Store) { }\r\n\r\n toggleHideNavigation($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(settings.toggleHideNavigation());\r\n }\r\n\r\n toggleMinifyNavigation($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(settings.toggleMinifyNavigation());\r\n }\r\n\r\n toggleFixedNavigation($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(settings.toggleFixedNavigation());\r\n }\r\n}\r\n","\r\n
\r\n \r\n \r\n \r\n
    \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n","
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{(user$ | async)?.firstName}} {{(user$ | async)?.lastName}}
\r\n {{(user$ | async)?.displayName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Logout \r\n \r\n
\r\n
\r\n","import { AuthenticationService } from '@app/core/_services';\r\nimport { AuthUser } from '@app/core/_models/user';\r\nimport { Company } from '@app/core/gql/graphql/company/schema/type';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\r\n\r\n@Component({\r\n selector: 'smart-dropdown-user',\r\n templateUrl: './dropdown-user.component.html',\r\n})\r\nexport class DropdownUserComponent implements OnInit{\r\n\r\n user = {\r\n app: 'PvDC Customer Portal',\r\n name: '',\r\n email: '',\r\n avatar: 'avatar-admin.png',\r\n twitter: '',\r\n };\r\n\r\n constructor(private n3tStore: N3TStore, \r\n private n3tKeycloak: N3TKeycloakService,\r\n private authService: AuthenticationService) {}\r\n user$: Observable;\r\n\r\n ngOnInit() {\r\n //this.clearUser();\r\n this.user$ = this.n3tStore.selectUser();\r\n this.user$.subscribe();\r\n }\r\n\r\n logoutUser() {\r\n this.n3tKeycloak.logout();\r\n this.user$ = new Observable();\r\n \r\n }\r\n\r\n}\r\n\r\n","
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n

Operating as: {{ (company$ | async)?.companyName }}

\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n 0\" class=\"fa-stack fa-2x has-badge\" attr.data-count=\"{{ state.total.itemCount }}\"> \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n ","import { ShoppingCartService } from '@app/core/_services/shoppingcart.service';\r\nimport { SubSink } from 'subsink';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { mobileNavigation } from 'src/app/store/navigation';\r\nimport { APP_CONFIG } from 'src/app/app.config';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { Company } from '@app/core/gql/graphql/company/schema/type';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'smart-page-header',\r\n templateUrl: './page-header.component.html',\r\n styleUrls: ['./page-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PageHeaderComponent implements OnInit, OnDestroy {\r\n\r\n private sub = new SubSink();\r\n\r\n avatar = APP_CONFIG.avatar;\r\n email = APP_CONFIG.email;\r\n user = APP_CONFIG.user;\r\n navigationSubscription: Subscription;\r\n company$: Observable;\r\n isChannel$: BehaviorSubject = new BehaviorSubject(false);\r\n\r\n constructor(\r\n private router: Router,\r\n private store: Store,\r\n private n3tStore: N3TStore,\r\n private shoppingCartSvc: ShoppingCartService,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n openMobileNav($event: MouseEvent) {\r\n $event.preventDefault();\r\n this.store.dispatch(mobileNavigation({open: true}));\r\n }\r\n\r\n ngOnInit() {\r\n this.company$ = this.n3tStore.selectCompany();\r\n //this.company$.subscribe();\r\n \r\n this.navigationSubscription = this.router.events.subscribe((e: any) => {\r\n if (e instanceof NavigationEnd) {\r\n if(e.url == \"/account/login\") {\r\n this.company$ = new Observable(); //this.n3tStore.selectCompany(); //this.gqlService.gql.portal.company;\r\n }\r\n else {\r\n this.company$ = this.n3tStore.selectCompany();\r\n }\r\n this.cdr.detectChanges();\r\n\r\n }\r\n });\r\n\r\n // See if we need to show or hide the Channel Company component\r\n this.sub.sink = this.n3tStore.selectAuthUsers().subscribe(result => {\r\n if (result.roles.includes(\"ChannelAdmin\") || result.roles.includes(\"ChannelUser\")) {\r\n this.isChannel$.next(true);\r\n } else {\r\n this.isChannel$.next(false);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.navigationSubscription) { \r\n this.navigationSubscription.unsubscribe();\r\n }\r\n\r\n this.sub.unsubscribe();\r\n }\r\n\r\n cartState$ = this.shoppingCartSvc.state$.pipe();\r\n}\r\n","import {\r\n ActivatedRouteSnapshot,\r\n Params,\r\n RouterStateSnapshot,\r\n} from '@angular/router';\r\n\r\nimport * as fromRouter from '@ngrx/router-store';\r\nimport { Injectable } from '@angular/core';\r\n\r\nexport const routingFeatureKey = 'router';\r\n\r\nexport interface RouterStateUrl {\r\n url: string;\r\n queryParams: Params;\r\n params: Params;\r\n data: any;\r\n}\r\n\r\nexport const reducer = fromRouter.routerReducer;\r\n\r\n@Injectable()\r\nexport class CustomSerializer\r\n implements fromRouter.RouterStateSerializer {\r\n public serialize(routerState: RouterStateSnapshot): RouterStateUrl {\r\n const { url } = routerState;\r\n const { queryParams } = routerState.root;\r\n\r\n let state: ActivatedRouteSnapshot = routerState.root;\r\n while (state.firstChild) {\r\n state = state.firstChild;\r\n }\r\n\r\n const { params, data } = state;\r\n\r\n return { url, queryParams, params, data };\r\n }\r\n}\r\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\r\nimport { RouterStateUrl } from './router.reducer';\r\n\r\nimport * as fromRouter from '@ngrx/router-store';\r\n\r\nexport const getRouterState = createFeatureSelector<\r\n fromRouter.RouterReducerState\r\n>('router');\r\n","import { Location } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Actions, Effect, ofType } from '@ngrx/effects';\r\nimport * as RouterActions from './router.actions';\r\n\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class RouterEffects {\r\n @Effect({ dispatch: false }) navigate$ = this.actions$.pipe(\r\n ofType(RouterActions.GO),\r\n map((action: RouterActions.Go) => action.payload),\r\n tap(({ path, query: queryParams, extras }) => {\r\n this.router.navigate(path, { queryParams, ...extras });\r\n })\r\n );\r\n\r\n @Effect({ dispatch: false }) location$ = this.actions$.pipe(\r\n ofType(RouterActions.UPDATE),\r\n map((action: RouterActions.UpdateLocation) => action.payload),\r\n tap(path => {\r\n this.location.go(path);\r\n })\r\n );\r\n\r\n @Effect({ dispatch: false }) navigateBack$ = this.actions$.pipe(\r\n ofType(RouterActions.BACK),\r\n tap(() => this.location.back())\r\n );\r\n\r\n @Effect({ dispatch: false }) navigateForward$ = this.actions$.pipe(\r\n ofType(RouterActions.FORWARD),\r\n tap(() => this.location.forward())\r\n );\r\n constructor(\r\n private actions$: Actions,\r\n private router: Router,\r\n private location: Location\r\n ) { }\r\n}\r\n","import { NavigationExtras } from '@angular/router';\r\nimport { Action } from '@ngrx/store';\r\n\r\nexport const GO = '[Router] Go';\r\nexport const UPDATE = '[Router] Update url';\r\nexport const BACK = '[Router] Back';\r\nexport const FORWARD = '[Router] Forward';\r\n\r\nexport class Go implements Action {\r\n public readonly type = GO;\r\n constructor(\r\n public payload: {\r\n path: any[];\r\n query?: object;\r\n extras?: NavigationExtras;\r\n }\r\n ) {}\r\n}\r\n\r\nexport class UpdateLocation implements Action {\r\n public readonly type = UPDATE;\r\n constructor(public payload: string) {}\r\n}\r\n\r\nexport class Back implements Action {\r\n public readonly type = BACK;\r\n}\r\n\r\nexport class Forward implements Action {\r\n public readonly type = FORWARD;\r\n}\r\n\r\nexport type Actions = Go | Back | Forward;\r\n","
    \r\n
  1. PvDC Portal
  2. \r\n\r\n \r\n
  3. \r\n 2 && i === (vm.state.data.breadcrumbs.length -2); else elseBlock\">\r\n {{crumb}}\r\n \r\n \r\n {{crumb}}\r\n \r\n
  4. \r\n \r\n
    \r\n\r\n
  5. \r\n {{ date | date }}\r\n
  6. \r\n
\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { getRouterState } from 'src/app/store/router';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'smart-page-breadcrumb',\r\n templateUrl: './page-breadcrumb.component.html',\r\n styleUrls: ['./page-breadcrumb.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PageBreadcrumbComponent {\r\n\r\n date = Date.now();\r\n\r\n vm$ = this.store.select(getRouterState);\r\n\r\n constructor(private store: Store, private location: Location) { }\r\n\r\n goBack(event: Event): void {\r\n event.preventDefault();\r\n this.location.back();\r\n }\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\nimport { App } from '../../../shared/schema/enums/app';\r\n\r\nexport class GetTasksInput {\r\n datacenterLocation: DatacenterLocations;\r\n app: App;\r\n companyId: string;\r\n}\r\n","import { DatacenterLocations } from '../../../shared/schema/enums/datacenterLocations';\r\nimport { App } from '../../../shared/schema/enums/app';\r\nimport { GetTasksInput } from './getTasksInput';\r\n\r\nexport class GetAllTasksInput {\r\n taskLocations: GetTasksInput[]; \r\n}\r\n","export class TaskOwner {\r\n type: string;\r\n href: string;\r\n name: string;\r\n}\r\n","
\n
\n
\n Loading...\n \n \n \n \n \n \n
\n
\n
\n\n\n \n \n \n\n
\n
\n \n \n \n \n \n
\n\n
\n \n Alert!\n \n
\n There was an issue retrieving Tasks Data:
\n {{ errorMsg$ }}\n
\n
\n
\n\n
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
\n \n \n \n \n
\n ","import { N3TStore } from '@app/core/_services/n3tStore.service';\nimport { TimerService } from '@app/core/_services/timer.service';\nimport { TasksService } from '@app/core/_services/tasks.service';\nimport { Component, OnInit, ChangeDetectionStrategy, OnDestroy, HostListener } from '@angular/core';\nimport { App, DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\nimport { GetTasksInput } from '@app/core/gql/graphql/compute/schema/input';\nimport { GetAllTasksInput } from '@app/core/gql/graphql/compute/schema/input';\nimport { Task, TaskOwner } from '@app/core/gql/graphql/compute/schema/type';\nimport { Org } from '@app/core/_models/org';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pvdc-taskgrid',\n templateUrl: './taskgrid.component.html',\n styleUrls: ['./taskgrid.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TaskgridComponent implements OnInit, OnDestroy {\n tasks$: Observable;\n taskId: string;\n logsInfo$: Observable;\n\n dtOptions: DataTables.Settings = {};\n\n loading: boolean = true;\n loaded$: boolean = false;\n errorMsg$: string;\n isError$: boolean = false;\n callState$: string = \"\";\n\n constructor(\n private n3tStore: N3TStore,\n private taskTimer: TimerService,\n private tasksService: TasksService\n ) { }\n\n ngOnInit(): void {\n\n this.taskId = this.taskTimer.createNewTimer(\"tasks\", 15, ()=>this.onTaskTimer()); \n\n this.tasks$ = this.n3tStore.selectTasks();\n\n this.tasks$.subscribe((data) => {\n\n data.forEach(task => {\n if (task.owner == null) {\n task.owner = new TaskOwner();\n task.owner.name = \"\";\n }\n });\n\n this.dtOptions = {\n data: data,\n columns: [\n {title: 'Location', data:'datacenterCode'},\n {title: 'Status', data:'status'},\n {title: 'Operation Name', data:'operationName'},\n {title: 'Start Time', data:'startTime'},\n {title: 'Expiry Time', data:'expiryTime'},\n {title: 'Owner', data:'owner.name'},\n {title: 'User', data:'user.name'},\n {title: 'Operation', data:'operation'}\n ],\n columnDefs : [\n { targets : [3, 4],\n render : function (data, type, row) {\n return new Date(+data.replace(\"/Date(\",\"\").replace(\")/\", \"\").split(\"-\")[0]).toLocaleString();\n },\n type: 'date'\n }\n ],\n ordering: true,\n order: [[3, 'desc']],\n pagingType: 'full_numbers',\n pageLength: 5,\n lengthMenu: [ 5, 10 ],\n responsive: true,\n destroy: true,\n scrollX: true\n };\n $('#tasktable').DataTable(this.dtOptions);\n //this.dtTrigger.next();\n });\n\n this.n3tStore.selectTasksResult().subscribe((result) => {\n this.loaded$ = result.isLoaded;\n this.isError$ = result.hasError;\n this.errorMsg$ = result.error;\n this.callState$ = result.callState;\n });\n }\n\n @HostListener('window:beforeunload')\n async ngOnDestroy() {\n this.taskTimer.delTimer(\"tasks\");\n this.tasksService.cleanupTasksPolling();\n }\n \n onTaskTimer(): void {\n let orgs$: Observable = this.n3tStore.selectOrgs();\n\n if (orgs$ != null && orgs$ != undefined) {\n let getAllTasksInput: GetAllTasksInput = new GetAllTasksInput();\n getAllTasksInput.taskLocations = new Array();\n \n orgs$.forEach((orgs) => {\n orgs.forEach((org) => {\n let getTasks: GetTasksInput = new GetTasksInput();\n getTasks.app = App.vCloudDirector;\n getTasks.companyId = org.id;\n getTasks.datacenterLocation = org.datacenterLocation.valueOf();\n getAllTasksInput.taskLocations.push(getTasks);\n });\n });\n \n if (getAllTasksInput.taskLocations.length > 0) {\n //this.taskTimer.unsubscribe(this.taskId);\n if (!this.tasksService.isPolling) {\n this.tasksService.retrieveTasks(getAllTasksInput, 10000);\n }\n }\n else {\n if (this.tasksService.isPolling) {\n this.tasksService.retrieveTasks(getAllTasksInput, 0);\n }\n }\n \n }\n }\n\n toDate(input: string): Date {\n let date = new Date(+input.replace(\"/Date(\",\"\").replace(\")/\", \"\").split(\"-\")[0]);\n return date;\n }\n\n}\n","import { Component, OnInit, HostListener } from '@angular/core';\r\n//import { Console } from 'console';\r\nimport { APP_CONFIG } from 'src/app/app.config';\r\nimport { MainComponent } from '../main/main.component';\r\nimport { FabShortcutComponent } from '../fab-shortcut/fab-shortcut.component';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\n\r\n\r\n@Component({\r\n selector: 'smart-page-footer',\r\n templateUrl: './page-footer.component.html',\r\n styleUrls: ['./page-footer.component.scss']\r\n})\r\nexport class PageFooterComponent implements OnInit {\r\n\r\n copyright = APP_CONFIG.copyright;\r\n isOpen: boolean;\r\n\r\n ngOnInit() {\r\n //TODO: get from store\r\n this.isOpen = false;\r\n this.setContentWrapperSize();\r\n }\r\n\r\n constructor() {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n getScreenSize(event?) {\r\n this.setContentWrapperSize();\r\n }\r\n\r\n toggleIsOpen() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n onResized(event: ResizedEvent) {\r\n this.setContentWrapperSize();\r\n }\r\n\r\n setContentWrapperSize() {\r\n \r\n const pageWrapper: HTMLElement = document.getElementById(\"main-page-wrapper\");\r\n const pageContentWrapper: HTMLElement = document.getElementById(\"main-page-content-wrapper\");\r\n const pagefabShortcut: HTMLElement = document.getElementById(\"main-shortcut-menu\");\r\n const pageFooter: HTMLElement = document.getElementById(\"main-page-footer\");\r\n \r\n if (this.isOpen){\r\n pageContentWrapper.style.maxHeight = (pageWrapper.offsetHeight - pageFooter.offsetHeight).toString() + \"px\"; \r\n pagefabShortcut.style.bottom = (pageFooter.offsetHeight + 5).toString() + \"px\"; \r\n }\r\n else{\r\n pageContentWrapper.style.maxHeight = (pageWrapper.offsetHeight - pageFooter.offsetHeight).toString() + \"px\";\r\n pagefabShortcut.style.bottom = (pageFooter.offsetHeight + 5).toString() + \"px\";\r\n }\r\n }\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\tRecent Tasks\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t\r\n\t
\r\n
>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { NavFilterComponent } from './nav-filter/nav-filter.component';\r\nimport { NavInfoCardComponent } from './nav-info-card/nav-info-card.component';\r\nimport { NavComponent } from './nav/nav.component';\r\nimport { NavFilterMsgComponent } from './nav-filter-msg/nav-filter-msg.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NavigationComponent } from './navigation/navigation.component';\r\nimport { NavItemComponent } from './nav-item/nav-item.component';\r\nimport { NavFooterComponent } from './nav-footer/nav-footer.component';\r\nimport { UtilsModule } from '../utils/utils.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n NavFilterComponent, NavInfoCardComponent, NavComponent, NavFilterMsgComponent,\r\n NavigationComponent, NavItemComponent, NavFooterComponent,\r\n ],\r\n exports: [\r\n NavFilterComponent, NavInfoCardComponent, NavComponent, NavFilterMsgComponent, NavigationComponent\r\n ],\r\n imports: [\r\n\r\n CommonModule,\r\n RouterModule,\r\n TooltipModule,\r\n UtilsModule\r\n ]\r\n})\r\nexport class NavigationModule { }\r\n","import { Component} from '@angular/core';\r\nimport { scrollToTop, scrollToTop2, toggleFullscreen } from '../../utils/utils.functions';\r\nimport { Store } from '@ngrx/store';\r\nimport { Go } from 'src/app/store/router';\r\nimport { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\r\n\r\n@Component({\r\n selector: 'smart-fab-shortcut',\r\n templateUrl: './fab-shortcut.component.html'\r\n})\r\nexport class FabShortcutComponent {\r\n\r\n constructor(\r\n private store: Store,\r\n private n3tKeycloak: N3TKeycloakService,\r\n ) { }\r\n\r\n\r\n scrollTop($event: MouseEvent) {\r\n $event.preventDefault();\r\n scrollToTop2();\r\n scrollToTop(150);\r\n }\r\n logout($event: MouseEvent) {\r\n $event.preventDefault();\r\n //this.store.dispatch(new Go({path: ['/logout']}));\r\n this.n3tKeycloak.logout();\r\n }\r\n fullScreen($event: MouseEvent) {\r\n $event.preventDefault();\r\n toggleFullscreen();\r\n\r\n }\r\n printPage($event: MouseEvent) {\r\n $event.preventDefault();\r\n window.print();\r\n\r\n }\r\n\r\n}\r\n","\r\n ","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Output, ViewChild, ViewChildren, HostListener, Injectable, Directive, Input, NgModule } from '@angular/core';\nimport { isBs3, Utils } from 'ngx-bootstrap/utils';\nimport { Subscription, isObservable, EMPTY, from } from 'rxjs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from 'ngx-bootstrap/positioning';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { debounceTime, tap, switchMap, mergeMap, filter, toArray } from 'rxjs/operators';\nimport * as i1$1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport * as i3 from '@angular/forms';\n\nconst latinMap = {\n 'Á': 'A',\n 'Ă': 'A',\n 'Ắ': 'A',\n 'Ặ': 'A',\n 'Ằ': 'A',\n 'Ẳ': 'A',\n 'Ẵ': 'A',\n 'Ǎ': 'A',\n 'Â': 'A',\n 'Ấ': 'A',\n 'Ậ': 'A',\n 'Ầ': 'A',\n 'Ẩ': 'A',\n 'Ẫ': 'A',\n 'Ä': 'A',\n 'Ǟ': 'A',\n 'Ȧ': 'A',\n 'Ǡ': 'A',\n 'Ạ': 'A',\n 'Ȁ': 'A',\n 'À': 'A',\n 'Ả': 'A',\n 'Ȃ': 'A',\n 'Ā': 'A',\n 'Ą': 'A',\n 'Å': 'A',\n 'Ǻ': 'A',\n 'Ḁ': 'A',\n 'Ⱥ': 'A',\n 'Ã': 'A',\n 'Ꜳ': 'AA',\n 'Æ': 'AE',\n 'Ǽ': 'AE',\n 'Ǣ': 'AE',\n 'Ꜵ': 'AO',\n 'Ꜷ': 'AU',\n 'Ꜹ': 'AV',\n 'Ꜻ': 'AV',\n 'Ꜽ': 'AY',\n 'Ḃ': 'B',\n 'Ḅ': 'B',\n 'Ɓ': 'B',\n 'Ḇ': 'B',\n 'Ƀ': 'B',\n 'Ƃ': 'B',\n 'Ć': 'C',\n 'Č': 'C',\n 'Ç': 'C',\n 'Ḉ': 'C',\n 'Ĉ': 'C',\n 'Ċ': 'C',\n 'Ƈ': 'C',\n 'Ȼ': 'C',\n 'Ď': 'D',\n 'Ḑ': 'D',\n 'Ḓ': 'D',\n 'Ḋ': 'D',\n 'Ḍ': 'D',\n 'Ɗ': 'D',\n 'Ḏ': 'D',\n 'Dz': 'D',\n 'Dž': 'D',\n 'Đ': 'D',\n 'Ƌ': 'D',\n 'DZ': 'DZ',\n 'DŽ': 'DZ',\n 'É': 'E',\n 'Ĕ': 'E',\n 'Ě': 'E',\n 'Ȩ': 'E',\n 'Ḝ': 'E',\n 'Ê': 'E',\n 'Ế': 'E',\n 'Ệ': 'E',\n 'Ề': 'E',\n 'Ể': 'E',\n 'Ễ': 'E',\n 'Ḙ': 'E',\n 'Ë': 'E',\n 'Ė': 'E',\n 'Ẹ': 'E',\n 'Ȅ': 'E',\n 'È': 'E',\n 'Ẻ': 'E',\n 'Ȇ': 'E',\n 'Ē': 'E',\n 'Ḗ': 'E',\n 'Ḕ': 'E',\n 'Ę': 'E',\n 'Ɇ': 'E',\n 'Ẽ': 'E',\n 'Ḛ': 'E',\n 'Ꝫ': 'ET',\n 'Ḟ': 'F',\n 'Ƒ': 'F',\n 'Ǵ': 'G',\n 'Ğ': 'G',\n 'Ǧ': 'G',\n 'Ģ': 'G',\n 'Ĝ': 'G',\n 'Ġ': 'G',\n 'Ɠ': 'G',\n 'Ḡ': 'G',\n 'Ǥ': 'G',\n 'Ḫ': 'H',\n 'Ȟ': 'H',\n 'Ḩ': 'H',\n 'Ĥ': 'H',\n 'Ⱨ': 'H',\n 'Ḧ': 'H',\n 'Ḣ': 'H',\n 'Ḥ': 'H',\n 'Ħ': 'H',\n 'Í': 'I',\n 'Ĭ': 'I',\n 'Ǐ': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ḯ': 'I',\n 'İ': 'I',\n 'Ị': 'I',\n 'Ȉ': 'I',\n 'Ì': 'I',\n 'Ỉ': 'I',\n 'Ȋ': 'I',\n 'Ī': 'I',\n 'Į': 'I',\n 'Ɨ': 'I',\n 'Ĩ': 'I',\n 'Ḭ': 'I',\n 'Ꝺ': 'D',\n 'Ꝼ': 'F',\n 'Ᵹ': 'G',\n 'Ꞃ': 'R',\n 'Ꞅ': 'S',\n 'Ꞇ': 'T',\n 'Ꝭ': 'IS',\n 'Ĵ': 'J',\n 'Ɉ': 'J',\n 'Ḱ': 'K',\n 'Ǩ': 'K',\n 'Ķ': 'K',\n 'Ⱪ': 'K',\n 'Ꝃ': 'K',\n 'Ḳ': 'K',\n 'Ƙ': 'K',\n 'Ḵ': 'K',\n 'Ꝁ': 'K',\n 'Ꝅ': 'K',\n 'Ĺ': 'L',\n 'Ƚ': 'L',\n 'Ľ': 'L',\n 'Ļ': 'L',\n 'Ḽ': 'L',\n 'Ḷ': 'L',\n 'Ḹ': 'L',\n 'Ⱡ': 'L',\n 'Ꝉ': 'L',\n 'Ḻ': 'L',\n 'Ŀ': 'L',\n 'Ɫ': 'L',\n 'Lj': 'L',\n 'Ł': 'L',\n 'LJ': 'LJ',\n 'Ḿ': 'M',\n 'Ṁ': 'M',\n 'Ṃ': 'M',\n 'Ɱ': 'M',\n 'Ń': 'N',\n 'Ň': 'N',\n 'Ņ': 'N',\n 'Ṋ': 'N',\n 'Ṅ': 'N',\n 'Ṇ': 'N',\n 'Ǹ': 'N',\n 'Ɲ': 'N',\n 'Ṉ': 'N',\n 'Ƞ': 'N',\n 'Nj': 'N',\n 'Ñ': 'N',\n 'NJ': 'NJ',\n 'Ó': 'O',\n 'Ŏ': 'O',\n 'Ǒ': 'O',\n 'Ô': 'O',\n 'Ố': 'O',\n 'Ộ': 'O',\n 'Ồ': 'O',\n 'Ổ': 'O',\n 'Ỗ': 'O',\n 'Ö': 'O',\n 'Ȫ': 'O',\n 'Ȯ': 'O',\n 'Ȱ': 'O',\n 'Ọ': 'O',\n 'Ő': 'O',\n 'Ȍ': 'O',\n 'Ò': 'O',\n 'Ỏ': 'O',\n 'Ơ': 'O',\n 'Ớ': 'O',\n 'Ợ': 'O',\n 'Ờ': 'O',\n 'Ở': 'O',\n 'Ỡ': 'O',\n 'Ȏ': 'O',\n 'Ꝋ': 'O',\n 'Ꝍ': 'O',\n 'Ō': 'O',\n 'Ṓ': 'O',\n 'Ṑ': 'O',\n 'Ɵ': 'O',\n 'Ǫ': 'O',\n 'Ǭ': 'O',\n 'Ø': 'O',\n 'Ǿ': 'O',\n 'Õ': 'O',\n 'Ṍ': 'O',\n 'Ṏ': 'O',\n 'Ȭ': 'O',\n 'Ƣ': 'OI',\n 'Ꝏ': 'OO',\n 'Ɛ': 'E',\n 'Ɔ': 'O',\n 'Ȣ': 'OU',\n 'Ṕ': 'P',\n 'Ṗ': 'P',\n 'Ꝓ': 'P',\n 'Ƥ': 'P',\n 'Ꝕ': 'P',\n 'Ᵽ': 'P',\n 'Ꝑ': 'P',\n 'Ꝙ': 'Q',\n 'Ꝗ': 'Q',\n 'Ŕ': 'R',\n 'Ř': 'R',\n 'Ŗ': 'R',\n 'Ṙ': 'R',\n 'Ṛ': 'R',\n 'Ṝ': 'R',\n 'Ȑ': 'R',\n 'Ȓ': 'R',\n 'Ṟ': 'R',\n 'Ɍ': 'R',\n 'Ɽ': 'R',\n 'Ꜿ': 'C',\n 'Ǝ': 'E',\n 'Ś': 'S',\n 'Ṥ': 'S',\n 'Š': 'S',\n 'Ṧ': 'S',\n 'Ş': 'S',\n 'Ŝ': 'S',\n 'Ș': 'S',\n 'Ṡ': 'S',\n 'Ṣ': 'S',\n 'Ṩ': 'S',\n 'Ť': 'T',\n 'Ţ': 'T',\n 'Ṱ': 'T',\n 'Ț': 'T',\n 'Ⱦ': 'T',\n 'Ṫ': 'T',\n 'Ṭ': 'T',\n 'Ƭ': 'T',\n 'Ṯ': 'T',\n 'Ʈ': 'T',\n 'Ŧ': 'T',\n 'Ɐ': 'A',\n 'Ꞁ': 'L',\n 'Ɯ': 'M',\n 'Ʌ': 'V',\n 'Ꜩ': 'TZ',\n 'Ú': 'U',\n 'Ŭ': 'U',\n 'Ǔ': 'U',\n 'Û': 'U',\n 'Ṷ': 'U',\n 'Ü': 'U',\n 'Ǘ': 'U',\n 'Ǚ': 'U',\n 'Ǜ': 'U',\n 'Ǖ': 'U',\n 'Ṳ': 'U',\n 'Ụ': 'U',\n 'Ű': 'U',\n 'Ȕ': 'U',\n 'Ù': 'U',\n 'Ủ': 'U',\n 'Ư': 'U',\n 'Ứ': 'U',\n 'Ự': 'U',\n 'Ừ': 'U',\n 'Ử': 'U',\n 'Ữ': 'U',\n 'Ȗ': 'U',\n 'Ū': 'U',\n 'Ṻ': 'U',\n 'Ų': 'U',\n 'Ů': 'U',\n 'Ũ': 'U',\n 'Ṹ': 'U',\n 'Ṵ': 'U',\n 'Ꝟ': 'V',\n 'Ṿ': 'V',\n 'Ʋ': 'V',\n 'Ṽ': 'V',\n 'Ꝡ': 'VY',\n 'Ẃ': 'W',\n 'Ŵ': 'W',\n 'Ẅ': 'W',\n 'Ẇ': 'W',\n 'Ẉ': 'W',\n 'Ẁ': 'W',\n 'Ⱳ': 'W',\n 'Ẍ': 'X',\n 'Ẋ': 'X',\n 'Ý': 'Y',\n 'Ŷ': 'Y',\n 'Ÿ': 'Y',\n 'Ẏ': 'Y',\n 'Ỵ': 'Y',\n 'Ỳ': 'Y',\n 'Ƴ': 'Y',\n 'Ỷ': 'Y',\n 'Ỿ': 'Y',\n 'Ȳ': 'Y',\n 'Ɏ': 'Y',\n 'Ỹ': 'Y',\n 'Ź': 'Z',\n 'Ž': 'Z',\n 'Ẑ': 'Z',\n 'Ⱬ': 'Z',\n 'Ż': 'Z',\n 'Ẓ': 'Z',\n 'Ȥ': 'Z',\n 'Ẕ': 'Z',\n 'Ƶ': 'Z',\n 'IJ': 'IJ',\n 'Œ': 'OE',\n 'ᴀ': 'A',\n 'ᴁ': 'AE',\n 'ʙ': 'B',\n 'ᴃ': 'B',\n 'ᴄ': 'C',\n 'ᴅ': 'D',\n 'ᴇ': 'E',\n 'ꜰ': 'F',\n 'ɢ': 'G',\n 'ʛ': 'G',\n 'ʜ': 'H',\n 'ɪ': 'I',\n 'ʁ': 'R',\n 'ᴊ': 'J',\n 'ᴋ': 'K',\n 'ʟ': 'L',\n 'ᴌ': 'L',\n 'ᴍ': 'M',\n 'ɴ': 'N',\n 'ᴏ': 'O',\n 'ɶ': 'OE',\n 'ᴐ': 'O',\n 'ᴕ': 'OU',\n 'ᴘ': 'P',\n 'ʀ': 'R',\n 'ᴎ': 'N',\n 'ᴙ': 'R',\n 'ꜱ': 'S',\n 'ᴛ': 'T',\n 'ⱻ': 'E',\n 'ᴚ': 'R',\n 'ᴜ': 'U',\n 'ᴠ': 'V',\n 'ᴡ': 'W',\n 'ʏ': 'Y',\n 'ᴢ': 'Z',\n 'á': 'a',\n 'ă': 'a',\n 'ắ': 'a',\n 'ặ': 'a',\n 'ằ': 'a',\n 'ẳ': 'a',\n 'ẵ': 'a',\n 'ǎ': 'a',\n 'â': 'a',\n 'ấ': 'a',\n 'ậ': 'a',\n 'ầ': 'a',\n 'ẩ': 'a',\n 'ẫ': 'a',\n 'ä': 'a',\n 'ǟ': 'a',\n 'ȧ': 'a',\n 'ǡ': 'a',\n 'ạ': 'a',\n 'ȁ': 'a',\n 'à': 'a',\n 'ả': 'a',\n 'ȃ': 'a',\n 'ā': 'a',\n 'ą': 'a',\n 'ᶏ': 'a',\n 'ẚ': 'a',\n 'å': 'a',\n 'ǻ': 'a',\n 'ḁ': 'a',\n 'ⱥ': 'a',\n 'ã': 'a',\n 'ꜳ': 'aa',\n 'æ': 'ae',\n 'ǽ': 'ae',\n 'ǣ': 'ae',\n 'ꜵ': 'ao',\n 'ꜷ': 'au',\n 'ꜹ': 'av',\n 'ꜻ': 'av',\n 'ꜽ': 'ay',\n 'ḃ': 'b',\n 'ḅ': 'b',\n 'ɓ': 'b',\n 'ḇ': 'b',\n 'ᵬ': 'b',\n 'ᶀ': 'b',\n 'ƀ': 'b',\n 'ƃ': 'b',\n 'ɵ': 'o',\n 'ć': 'c',\n 'č': 'c',\n 'ç': 'c',\n 'ḉ': 'c',\n 'ĉ': 'c',\n 'ɕ': 'c',\n 'ċ': 'c',\n 'ƈ': 'c',\n 'ȼ': 'c',\n 'ď': 'd',\n 'ḑ': 'd',\n 'ḓ': 'd',\n 'ȡ': 'd',\n 'ḋ': 'd',\n 'ḍ': 'd',\n 'ɗ': 'd',\n 'ᶑ': 'd',\n 'ḏ': 'd',\n 'ᵭ': 'd',\n 'ᶁ': 'd',\n 'đ': 'd',\n 'ɖ': 'd',\n 'ƌ': 'd',\n 'ı': 'i',\n 'ȷ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'dz': 'dz',\n 'dž': 'dz',\n 'é': 'e',\n 'ĕ': 'e',\n 'ě': 'e',\n 'ȩ': 'e',\n 'ḝ': 'e',\n 'ê': 'e',\n 'ế': 'e',\n 'ệ': 'e',\n 'ề': 'e',\n 'ể': 'e',\n 'ễ': 'e',\n 'ḙ': 'e',\n 'ë': 'e',\n 'ė': 'e',\n 'ẹ': 'e',\n 'ȅ': 'e',\n 'è': 'e',\n 'ẻ': 'e',\n 'ȇ': 'e',\n 'ē': 'e',\n 'ḗ': 'e',\n 'ḕ': 'e',\n 'ⱸ': 'e',\n 'ę': 'e',\n 'ᶒ': 'e',\n 'ɇ': 'e',\n 'ẽ': 'e',\n 'ḛ': 'e',\n 'ꝫ': 'et',\n 'ḟ': 'f',\n 'ƒ': 'f',\n 'ᵮ': 'f',\n 'ᶂ': 'f',\n 'ǵ': 'g',\n 'ğ': 'g',\n 'ǧ': 'g',\n 'ģ': 'g',\n 'ĝ': 'g',\n 'ġ': 'g',\n 'ɠ': 'g',\n 'ḡ': 'g',\n 'ᶃ': 'g',\n 'ǥ': 'g',\n 'ḫ': 'h',\n 'ȟ': 'h',\n 'ḩ': 'h',\n 'ĥ': 'h',\n 'ⱨ': 'h',\n 'ḧ': 'h',\n 'ḣ': 'h',\n 'ḥ': 'h',\n 'ɦ': 'h',\n 'ẖ': 'h',\n 'ħ': 'h',\n 'ƕ': 'hv',\n 'í': 'i',\n 'ĭ': 'i',\n 'ǐ': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ḯ': 'i',\n 'ị': 'i',\n 'ȉ': 'i',\n 'ì': 'i',\n 'ỉ': 'i',\n 'ȋ': 'i',\n 'ī': 'i',\n 'į': 'i',\n 'ᶖ': 'i',\n 'ɨ': 'i',\n 'ĩ': 'i',\n 'ḭ': 'i',\n 'ꝺ': 'd',\n 'ꝼ': 'f',\n 'ᵹ': 'g',\n 'ꞃ': 'r',\n 'ꞅ': 's',\n 'ꞇ': 't',\n 'ꝭ': 'is',\n 'ǰ': 'j',\n 'ĵ': 'j',\n 'ʝ': 'j',\n 'ɉ': 'j',\n 'ḱ': 'k',\n 'ǩ': 'k',\n 'ķ': 'k',\n 'ⱪ': 'k',\n 'ꝃ': 'k',\n 'ḳ': 'k',\n 'ƙ': 'k',\n 'ḵ': 'k',\n 'ᶄ': 'k',\n 'ꝁ': 'k',\n 'ꝅ': 'k',\n 'ĺ': 'l',\n 'ƚ': 'l',\n 'ɬ': 'l',\n 'ľ': 'l',\n 'ļ': 'l',\n 'ḽ': 'l',\n 'ȴ': 'l',\n 'ḷ': 'l',\n 'ḹ': 'l',\n 'ⱡ': 'l',\n 'ꝉ': 'l',\n 'ḻ': 'l',\n 'ŀ': 'l',\n 'ɫ': 'l',\n 'ᶅ': 'l',\n 'ɭ': 'l',\n 'ł': 'l',\n 'lj': 'lj',\n 'ſ': 's',\n 'ẜ': 's',\n 'ẛ': 's',\n 'ẝ': 's',\n 'ḿ': 'm',\n 'ṁ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'ᵯ': 'm',\n 'ᶆ': 'm',\n 'ń': 'n',\n 'ň': 'n',\n 'ņ': 'n',\n 'ṋ': 'n',\n 'ȵ': 'n',\n 'ṅ': 'n',\n 'ṇ': 'n',\n 'ǹ': 'n',\n 'ɲ': 'n',\n 'ṉ': 'n',\n 'ƞ': 'n',\n 'ᵰ': 'n',\n 'ᶇ': 'n',\n 'ɳ': 'n',\n 'ñ': 'n',\n 'nj': 'nj',\n 'ó': 'o',\n 'ŏ': 'o',\n 'ǒ': 'o',\n 'ô': 'o',\n 'ố': 'o',\n 'ộ': 'o',\n 'ồ': 'o',\n 'ổ': 'o',\n 'ỗ': 'o',\n 'ö': 'o',\n 'ȫ': 'o',\n 'ȯ': 'o',\n 'ȱ': 'o',\n 'ọ': 'o',\n 'ő': 'o',\n 'ȍ': 'o',\n 'ò': 'o',\n 'ỏ': 'o',\n 'ơ': 'o',\n 'ớ': 'o',\n 'ợ': 'o',\n 'ờ': 'o',\n 'ở': 'o',\n 'ỡ': 'o',\n 'ȏ': 'o',\n 'ꝋ': 'o',\n 'ꝍ': 'o',\n 'ⱺ': 'o',\n 'ō': 'o',\n 'ṓ': 'o',\n 'ṑ': 'o',\n 'ǫ': 'o',\n 'ǭ': 'o',\n 'ø': 'o',\n 'ǿ': 'o',\n 'õ': 'o',\n 'ṍ': 'o',\n 'ṏ': 'o',\n 'ȭ': 'o',\n 'ƣ': 'oi',\n 'ꝏ': 'oo',\n 'ɛ': 'e',\n 'ᶓ': 'e',\n 'ɔ': 'o',\n 'ᶗ': 'o',\n 'ȣ': 'ou',\n 'ṕ': 'p',\n 'ṗ': 'p',\n 'ꝓ': 'p',\n 'ƥ': 'p',\n 'ᵱ': 'p',\n 'ᶈ': 'p',\n 'ꝕ': 'p',\n 'ᵽ': 'p',\n 'ꝑ': 'p',\n 'ꝙ': 'q',\n 'ʠ': 'q',\n 'ɋ': 'q',\n 'ꝗ': 'q',\n 'ŕ': 'r',\n 'ř': 'r',\n 'ŗ': 'r',\n 'ṙ': 'r',\n 'ṛ': 'r',\n 'ṝ': 'r',\n 'ȑ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ȓ': 'r',\n 'ṟ': 'r',\n 'ɼ': 'r',\n 'ᵲ': 'r',\n 'ᶉ': 'r',\n 'ɍ': 'r',\n 'ɽ': 'r',\n 'ↄ': 'c',\n 'ꜿ': 'c',\n 'ɘ': 'e',\n 'ɿ': 'r',\n 'ś': 's',\n 'ṥ': 's',\n 'š': 's',\n 'ṧ': 's',\n 'ş': 's',\n 'ŝ': 's',\n 'ș': 's',\n 'ṡ': 's',\n 'ṣ': 's',\n 'ṩ': 's',\n 'ʂ': 's',\n 'ᵴ': 's',\n 'ᶊ': 's',\n 'ȿ': 's',\n 'ɡ': 'g',\n 'ᴑ': 'o',\n 'ᴓ': 'o',\n 'ᴝ': 'u',\n 'ť': 't',\n 'ţ': 't',\n 'ṱ': 't',\n 'ț': 't',\n 'ȶ': 't',\n 'ẗ': 't',\n 'ⱦ': 't',\n 'ṫ': 't',\n 'ṭ': 't',\n 'ƭ': 't',\n 'ṯ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'ʈ': 't',\n 'ŧ': 't',\n 'ᵺ': 'th',\n 'ɐ': 'a',\n 'ᴂ': 'ae',\n 'ǝ': 'e',\n 'ᵷ': 'g',\n 'ɥ': 'h',\n 'ʮ': 'h',\n 'ʯ': 'h',\n 'ᴉ': 'i',\n 'ʞ': 'k',\n 'ꞁ': 'l',\n 'ɯ': 'm',\n 'ɰ': 'm',\n 'ᴔ': 'oe',\n 'ɹ': 'r',\n 'ɻ': 'r',\n 'ɺ': 'r',\n 'ⱹ': 'r',\n 'ʇ': 't',\n 'ʌ': 'v',\n 'ʍ': 'w',\n 'ʎ': 'y',\n 'ꜩ': 'tz',\n 'ú': 'u',\n 'ŭ': 'u',\n 'ǔ': 'u',\n 'û': 'u',\n 'ṷ': 'u',\n 'ü': 'u',\n 'ǘ': 'u',\n 'ǚ': 'u',\n 'ǜ': 'u',\n 'ǖ': 'u',\n 'ṳ': 'u',\n 'ụ': 'u',\n 'ű': 'u',\n 'ȕ': 'u',\n 'ù': 'u',\n 'ủ': 'u',\n 'ư': 'u',\n 'ứ': 'u',\n 'ự': 'u',\n 'ừ': 'u',\n 'ử': 'u',\n 'ữ': 'u',\n 'ȗ': 'u',\n 'ū': 'u',\n 'ṻ': 'u',\n 'ų': 'u',\n 'ᶙ': 'u',\n 'ů': 'u',\n 'ũ': 'u',\n 'ṹ': 'u',\n 'ṵ': 'u',\n 'ᵫ': 'ue',\n 'ꝸ': 'um',\n 'ⱴ': 'v',\n 'ꝟ': 'v',\n 'ṿ': 'v',\n 'ʋ': 'v',\n 'ᶌ': 'v',\n 'ⱱ': 'v',\n 'ṽ': 'v',\n 'ꝡ': 'vy',\n 'ẃ': 'w',\n 'ŵ': 'w',\n 'ẅ': 'w',\n 'ẇ': 'w',\n 'ẉ': 'w',\n 'ẁ': 'w',\n 'ⱳ': 'w',\n 'ẘ': 'w',\n 'ẍ': 'x',\n 'ẋ': 'x',\n 'ᶍ': 'x',\n 'ý': 'y',\n 'ŷ': 'y',\n 'ÿ': 'y',\n 'ẏ': 'y',\n 'ỵ': 'y',\n 'ỳ': 'y',\n 'ƴ': 'y',\n 'ỷ': 'y',\n 'ỿ': 'y',\n 'ȳ': 'y',\n 'ẙ': 'y',\n 'ɏ': 'y',\n 'ỹ': 'y',\n 'ź': 'z',\n 'ž': 'z',\n 'ẑ': 'z',\n 'ʑ': 'z',\n 'ⱬ': 'z',\n 'ż': 'z',\n 'ẓ': 'z',\n 'ȥ': 'z',\n 'ẕ': 'z',\n 'ᵶ': 'z',\n 'ᶎ': 'z',\n 'ʐ': 'z',\n 'ƶ': 'z',\n 'ɀ': 'z',\n 'ff': 'ff',\n 'ffi': 'ffi',\n 'ffl': 'ffl',\n 'fi': 'fi',\n 'fl': 'fl',\n 'ij': 'ij',\n 'œ': 'oe',\n 'st': 'st',\n 'ₐ': 'a',\n 'ₑ': 'e',\n 'ᵢ': 'i',\n 'ⱼ': 'j',\n 'ₒ': 'o',\n 'ᵣ': 'r',\n 'ᵤ': 'u',\n 'ᵥ': 'v',\n 'ₓ': 'x'\n};\n\nclass TypeaheadOptions {\n constructor(options) {\n this.placement = options.placement;\n this.animation = options.animation;\n this.typeaheadRef = options.typeaheadRef;\n }\n}\n\nclass TypeaheadMatch {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(item, value = item, header = false) {\n this.item = item;\n this.value = value;\n this.header = header;\n }\n isHeader() {\n return this.header;\n }\n toString() {\n return this.value;\n }\n}\n\nfunction latinize(str) {\n if (!str) {\n return '';\n }\n return str.replace(/[^A-Za-z0-9[\\] ]/g, function (a) {\n return latinMap[a] || a;\n });\n}\nfunction escapeRegexp(queryToEscape) {\n // Regex: capture the whole query string and replace it with the string\n // that will be used to match the results, for example if the capture is\n // 'a' the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\nfunction tokenize(str, wordRegexDelimiters = ' ', phraseRegexDelimiters = '', delimitersForMultipleSearch) {\n let result = [];\n if (!delimitersForMultipleSearch) {\n result = tokenizeWordsAndPhrases(str, wordRegexDelimiters, phraseRegexDelimiters);\n }\n else {\n const multipleSearchRegexStr = `([${delimitersForMultipleSearch}]+)`;\n const delimitedTokens = str.split(new RegExp(multipleSearchRegexStr, 'g'));\n const lastToken = delimitedTokens[delimitedTokens.length - 1];\n if (lastToken > '') {\n if (wordRegexDelimiters && phraseRegexDelimiters) {\n result = tokenizeWordsAndPhrases(lastToken, wordRegexDelimiters, phraseRegexDelimiters);\n }\n else {\n result.push(lastToken);\n }\n }\n }\n return result;\n}\nfunction tokenizeWordsAndPhrases(str, wordRegexDelimiters, phraseRegexDelimiters) {\n const result = [];\n const regexStr = `(?:[${phraseRegexDelimiters}])([^${phraseRegexDelimiters}]+)` +\n `(?:[${phraseRegexDelimiters}])|([^${wordRegexDelimiters}]+)`;\n const preTokenized = str.split(new RegExp(regexStr, 'g'));\n const preTokenizedLength = preTokenized.length;\n let token;\n const replacePhraseDelimiters = new RegExp(`[${phraseRegexDelimiters}]+`, 'g');\n for (let i = 0; i < preTokenizedLength; i += 1) {\n token = preTokenized[i];\n if (token && token.length && token !== wordRegexDelimiters) {\n result.push(token.replace(replacePhraseDelimiters, ''));\n }\n }\n return result;\n}\n// eslint-disable-next-line\nfunction getValueFromObject(object, option) {\n if (!option || typeof object !== 'object') {\n return object.toString();\n }\n if (option.endsWith('()')) {\n const functionName = option.slice(0, option.length - 2);\n return object[functionName]().toString();\n }\n const properties = option\n .replace(/\\[(\\w+)\\]/g, '.$1')\n .replace(/^\\./, '');\n const propertiesArray = properties.split('.');\n for (const property of propertiesArray) {\n if (property in object) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n object = object[property];\n }\n }\n if (!object) {\n return '';\n }\n return object.toString();\n}\n\nconst TYPEAHEAD_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\nconst typeaheadAnimation = trigger('typeaheadAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(TYPEAHEAD_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(TYPEAHEAD_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n]);\n\nlet nextWindowId = 0;\nclass TypeaheadContainerComponent {\n constructor(positionService, renderer, element, changeDetectorRef) {\n var _a;\n this.positionService = positionService;\n this.renderer = renderer;\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n // eslint-disable-next-line @angular-eslint/no-output-rename\n this.activeChangeEvent = new EventEmitter();\n this.isFocused = false;\n this.positionServiceSubscription = new Subscription();\n this.height = 0;\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._matches = [];\n this.renderer.setAttribute(this.element.nativeElement, 'id', this.popupId);\n this.positionServiceSubscription.add((_a = this.positionService.event$) === null || _a === void 0 ? void 0 : _a.subscribe(() => {\n if (this.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n this.changeDetectorRef.detectChanges();\n return;\n }\n this.animationState = 'unanimated';\n this.changeDetectorRef.detectChanges();\n }));\n }\n get isBs4() {\n return !isBs3();\n }\n get typeaheadTemplateMethods() {\n return {\n selectMatch: this.selectMatch.bind(this),\n selectActive: this.selectActive.bind(this),\n isActive: this.isActive.bind(this)\n };\n }\n get active() {\n return this._active;\n }\n set active(active) {\n this._active = active;\n this.activeChanged();\n }\n get matches() {\n return this._matches;\n }\n set matches(value) {\n var _a;\n this.positionService.setOptions({\n modifiers: { flip: { enabled: this.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n this._matches = value;\n this.needScrollbar = this.typeaheadScrollable && this.typeaheadOptionsInScrollableView < this.matches.length;\n if (this.typeaheadScrollable) {\n setTimeout(() => {\n this.setScrollableMode();\n });\n }\n if (this.typeaheadIsFirstItemActive && this._matches.length > 0) {\n this.setActive(this._matches[0]);\n if ((_a = this._active) === null || _a === void 0 ? void 0 : _a.isHeader()) {\n this.nextActiveMatch();\n }\n }\n if (this._active && !this.typeaheadIsFirstItemActive) {\n const concurrency = this._matches.find(match => { var _a; return match.value === ((_a = this._active) === null || _a === void 0 ? void 0 : _a.value); });\n if (concurrency) {\n this.selectActive(concurrency);\n return;\n }\n this.active = void 0;\n }\n }\n get isTopPosition() {\n return this.element.nativeElement.classList.contains('top');\n }\n get optionsListTemplate() {\n return this.parent ? this.parent.optionsListTemplate : undefined;\n }\n get isAnimated() {\n return this.parent ? this.parent.isAnimated : false;\n }\n get adaptivePosition() {\n return this.parent ? this.parent.adaptivePosition : false;\n }\n get typeaheadScrollable() {\n return this.parent ? this.parent.typeaheadScrollable : false;\n }\n get typeaheadOptionsInScrollableView() {\n return this.parent ? this.parent.typeaheadOptionsInScrollableView : 5;\n }\n get typeaheadIsFirstItemActive() {\n return this.parent ? this.parent.typeaheadIsFirstItemActive : true;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get itemTemplate() {\n return this.parent ? this.parent.typeaheadItemTemplate : undefined;\n }\n get canSelectItemsOnBlur() {\n var _a;\n return !!((_a = this.parent) === null || _a === void 0 ? void 0 : _a.selectItemOnBlur);\n }\n selectActiveMatch(isActiveItemChanged) {\n var _a, _b;\n if (this._active && ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.typeaheadSelectFirstItem)) {\n this.selectMatch(this._active);\n }\n if (!((_b = this.parent) === null || _b === void 0 ? void 0 : _b.typeaheadSelectFirstItem) && isActiveItemChanged) {\n this.selectMatch(this._active);\n }\n }\n activeChanged() {\n if (!this._active) {\n return;\n }\n const index = this.matches.indexOf(this._active);\n this.activeChangeEvent.emit(`${this.popupId}-${index}`);\n }\n prevActiveMatch() {\n if (!this._active) {\n return;\n }\n const index = this.matches.indexOf(this._active);\n this.setActive(this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1]);\n if (this._active.isHeader()) {\n this.prevActiveMatch();\n }\n if (this.typeaheadScrollable) {\n this.scrollPrevious(index);\n }\n }\n nextActiveMatch() {\n var _a;\n const index = this._active ? this.matches.indexOf(this._active) : -1;\n this.setActive(this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1]);\n if ((_a = this._active) === null || _a === void 0 ? void 0 : _a.isHeader()) {\n this.nextActiveMatch();\n }\n if (this.typeaheadScrollable) {\n this.scrollNext(index);\n }\n }\n selectActive(value) {\n this.isFocused = true;\n this.setActive(value);\n }\n highlight(match, query) {\n let itemStr = match.value;\n let itemStrHelper = (this.parent && this.parent.typeaheadLatinize\n ? latinize(itemStr)\n : itemStr).toLowerCase();\n let startIdx;\n let tokenLen;\n // Replaces the capture string with the same string inside of a \"strong\" tag\n if (typeof query === 'object') {\n const queryLen = query.length;\n for (let i = 0; i < queryLen; i += 1) {\n // query[i] is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query[i]);\n tokenLen = query[i].length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}${itemStr.substring(startIdx, startIdx + tokenLen)}` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n itemStrHelper =\n `${itemStrHelper.substring(0, startIdx)} ${' '.repeat(tokenLen)} ` +\n `${itemStrHelper.substring(startIdx + tokenLen)}`;\n }\n }\n }\n else if (query) {\n // query is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query);\n tokenLen = query.length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}${itemStr.substring(startIdx, startIdx + tokenLen)}` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n }\n }\n return itemStr;\n }\n focusLost() {\n this.isFocused = false;\n if (!this.canSelectItemsOnBlur) {\n this.setActive(void 0);\n }\n }\n isActive(value) {\n return this.active === value;\n }\n selectMatch(value, event) {\n var _a;\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.changeModel(value);\n setTimeout(() => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.typeaheadOnSelect.emit(value); }, 0);\n return false;\n }\n setScrollableMode() {\n var _a;\n if (!this.ulElement) {\n this.ulElement = this.element;\n }\n if ((_a = this.liElements) === null || _a === void 0 ? void 0 : _a.first) {\n const ulStyles = Utils.getStyles(this.ulElement.nativeElement);\n const liStyles = Utils.getStyles(this.liElements.first.nativeElement);\n const ulPaddingBottom = parseFloat((ulStyles['padding-bottom'] ? ulStyles['padding-bottom'] : '')\n .replace('px', ''));\n const ulPaddingTop = parseFloat((ulStyles['padding-top'] ? ulStyles['padding-top'] : '0')\n .replace('px', ''));\n const optionHeight = parseFloat((liStyles.height ? liStyles.height : '0')\n .replace('px', ''));\n const height = this.typeaheadOptionsInScrollableView * optionHeight;\n this.guiHeight = `${height + ulPaddingTop + ulPaddingBottom}px`;\n }\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');\n }\n scrollPrevious(index) {\n if (index === 0) {\n this.scrollToBottom();\n return;\n }\n if (this.liElements && this.ulElement) {\n const liElement = this.liElements.toArray()[index - 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop = liElement.nativeElement.offsetTop;\n }\n }\n }\n scrollNext(index) {\n if (index + 1 > this.matches.length - 1) {\n this.scrollToTop();\n return;\n }\n if (this.liElements && this.ulElement) {\n const liElement = this.liElements.toArray()[index + 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop =\n liElement.nativeElement.offsetTop -\n Number(this.ulElement.nativeElement.offsetHeight) +\n Number(liElement.nativeElement.offsetHeight);\n }\n }\n }\n ngOnDestroy() {\n this.positionServiceSubscription.unsubscribe();\n }\n setActive(value) {\n var _a;\n this._active = value;\n let preview;\n if (!(this._active == null || this._active.isHeader())) {\n preview = value;\n }\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.typeaheadOnPreview.emit(preview);\n }\n isScrolledIntoView(elem) {\n if (!this.ulElement) {\n return false;\n }\n const containerViewTop = this.ulElement.nativeElement.scrollTop;\n const containerViewBottom = containerViewTop + Number(this.ulElement.nativeElement.offsetHeight);\n const elemTop = elem.offsetTop;\n const elemBottom = elemTop + elem.offsetHeight;\n return ((elemBottom <= containerViewBottom) && (elemTop >= containerViewTop));\n }\n ;\n scrollToBottom() {\n var _a;\n if (!((_a = this.ulElement) === null || _a === void 0 ? void 0 : _a.nativeElement)) {\n return;\n }\n this.ulElement.nativeElement.scrollTop = this.ulElement.nativeElement.scrollHeight;\n }\n scrollToTop() {\n var _a;\n if (!((_a = this.ulElement) === null || _a === void 0 ? void 0 : _a.nativeElement)) {\n return;\n }\n this.ulElement.nativeElement.scrollTop = 0;\n }\n}\nTypeaheadContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadContainerComponent, deps: [{ token: i1.PositioningService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTypeaheadContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TypeaheadContainerComponent, selector: \"typeahead-container\", outputs: { activeChangeEvent: \"activeChange\" }, host: { listeners: { \"mouseleave\": \"focusLost()\", \"blur\": \"focusLost()\" }, properties: { \"class.dropdown-menu\": \"isBs4\", \"style.height\": \"isBs4 && needScrollbar ? guiHeight: 'auto'\", \"style.visibility\": \"'inherit'\", \"class.dropup\": \"dropup\", \"attr.role\": \"isBs4 ? 'listbox' : null \" }, styleAttribute: \"position: absolute;display: block;\", classAttribute: \"dropdown open bottom\" }, viewQueries: [{ propertyName: \"ulElement\", first: true, predicate: [\"ulElement\"], descendants: true }, { propertyName: \"liElements\", predicate: [\"liElements\"], descendants: true }], ngImport: i0, template: \"\\n\\n\\n\\n\\n\\n \\n\\n\\n\\n\\n \\n\\n\\n\\n\\n \\n
{{ match }}
\\n \\n \\n \\n
\\n
\\n\", styles: [\":host.dropdown{z-index:1000}:host.dropdown-menu,.dropdown-menu{overflow-y:auto;height:100px}\\n\"], directives: [{ type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], animations: [typeaheadAnimation] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadContainerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'typeahead-container', host: {\n class: 'dropdown open bottom',\n '[class.dropdown-menu]': 'isBs4',\n '[style.height]': `isBs4 && needScrollbar ? guiHeight: 'auto'`,\n '[style.visibility]': `'inherit'`,\n '[class.dropup]': 'dropup',\n style: 'position: absolute;display: block;',\n '[attr.role]': `isBs4 ? 'listbox' : null `\n }, styles: [\n `\n :host.dropdown {\n z-index: 1000;\n }\n\n :host.dropdown-menu, .dropdown-menu {\n overflow-y: auto;\n height: 100px;\n }\n `\n ], animations: [typeaheadAnimation], template: \"\\n\\n\\n\\n\\n\\n \\n\\n\\n\\n\\n \\n\\n\\n\\n\\n \\n
{{ match }}
\\n \\n \\n \\n
\\n
\\n\" }]\n }], ctorParameters: function () { return [{ type: i1.PositioningService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], ulElement: [{\n type: ViewChild,\n args: ['ulElement', { static: false }]\n }], liElements: [{\n type: ViewChildren,\n args: ['liElements']\n }], focusLost: [{\n type: HostListener,\n args: ['mouseleave']\n }, {\n type: HostListener,\n args: ['blur']\n }] } });\n\n/** Default values provider for typeahead */\nclass TypeaheadConfig {\n constructor() {\n /** sets use adaptive position */\n this.adaptivePosition = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /** used to hide results on blur */\n this.hideResultsOnBlur = true;\n /** if true, typeahead will cancel async request on blur */\n this.cancelRequestOnFocusLost = false;\n /** used to choose the first item in typeahead container */\n this.selectFirstItem = true;\n /** used to active/inactive the first item in typeahead container */\n this.isFirstItemActive = true;\n /** used to choose set minimal no of characters that needs to\n * be entered before typeahead kicks-in\n */\n this.minLength = 1;\n /**\n * used to choose item on blur event\n */\n this.selectItemOnBlur = false;\n }\n}\nTypeaheadConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTypeaheadConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass TypeaheadDirective {\n constructor(cis, config, changeDetection, element, ngControl, renderer, viewContainerRef) {\n this.changeDetection = changeDetection;\n this.element = element;\n this.ngControl = ngControl;\n this.renderer = renderer;\n /** minimal no of characters that needs to be entered before\n * typeahead kicks-in. When set to 0, typeahead shows on focus with full\n * list of options (limited as normal by typeaheadOptionsLimit)\n */\n this.typeaheadMinLength = 1;\n /** sets use adaptive position */\n this.adaptivePosition = false;\n /** turn on/off animation */\n this.isAnimated = false;\n /** minimal wait time after last character typed before typeahead kicks-in */\n this.typeaheadWaitMs = 0;\n /** match latin symbols.\n * If true the word súper would match super and vice versa.\n */\n this.typeaheadLatinize = true;\n /** Can be use to search words by inserting a single white space between each characters\n * for example 'C a l i f o r n i a' will match 'California'.\n */\n this.typeaheadSingleWords = true;\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to break words. Defaults to space.\n */\n this.typeaheadWordDelimiters = ' ';\n /** should be used only in case typeaheadMultipleSearch attribute is true.\n * Sets the multiple search delimiter to know when to start a new search. Defaults to comma.\n * If space needs to be used, then explicitly set typeaheadWordDelimiters to something else than space\n * because space is used by default OR set typeaheadSingleWords attribute to false if you don't need\n * to use it together with multiple search.\n */\n this.typeaheadMultipleSearchDelimiters = ',';\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to match exact phrase.\n * Defaults to simple and double quotes.\n */\n this.typeaheadPhraseDelimiters = '\\'\"';\n /** specifies if typeahead is scrollable */\n this.typeaheadScrollable = false;\n /** specifies number of options to show in scroll view */\n this.typeaheadOptionsInScrollableView = 5;\n /** fired when an options list was opened and the user clicked Tab\n * If a value equal true, it will be chosen first or active item in the list\n * If value equal false, it will be chosen an active item in the list or nothing\n */\n this.typeaheadSelectFirstItem = true;\n /** makes active first item in a list */\n this.typeaheadIsFirstItemActive = true;\n /** fired when 'busy' state of this component was changed,\n * fired on async mode only, returns boolean\n */\n this.typeaheadLoading = new EventEmitter();\n /** fired on every key event and returns true\n * in case of matches are not detected\n */\n this.typeaheadNoResults = new EventEmitter();\n /** fired when option was selected, return object with data of this option. */\n this.typeaheadOnSelect = new EventEmitter();\n /** fired when option was previewed, return object with data of this option. */\n this.typeaheadOnPreview = new EventEmitter();\n /** fired when blur event occurs. returns the active item */\n this.typeaheadOnBlur = new EventEmitter();\n /** This attribute indicates that the dropdown should be opened upwards */\n this.dropup = false;\n this.isOpen = false;\n this.list = 'list';\n this.isActiveItemChanged = false;\n this.isFocused = false;\n this.cancelRequestOnFocusLost = false;\n this.selectItemOnBlur = false;\n this.keyUpEventEmitter = new EventEmitter();\n this.placement = 'bottom left';\n this._matches = [];\n this._subscriptions = [];\n this._outsideClickListener = () => void 0;\n this._typeahead = cis.createLoader(element, viewContainerRef, renderer)\n .provide({ provide: TypeaheadConfig, useValue: config });\n Object.assign(this, {\n typeaheadHideResultsOnBlur: config.hideResultsOnBlur,\n cancelRequestOnFocusLost: config.cancelRequestOnFocusLost,\n typeaheadSelectFirstItem: config.selectFirstItem,\n typeaheadIsFirstItemActive: config.isFirstItemActive,\n typeaheadMinLength: config.minLength,\n adaptivePosition: config.adaptivePosition,\n isAnimated: config.isAnimated,\n selectItemOnBlur: config.selectItemOnBlur\n });\n }\n get matches() {\n return this._matches;\n }\n ngOnInit() {\n this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\n this.typeaheadMinLength =\n this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\n // async should be false in case of array\n if (this.typeaheadAsync === undefined && !(isObservable(this.typeahead))) {\n this.typeaheadAsync = false;\n }\n if (isObservable(this.typeahead)) {\n this.typeaheadAsync = true;\n }\n if (this.typeaheadAsync) {\n this.asyncActions();\n }\n else {\n this.syncActions();\n }\n this.checkDelimitersConflict();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput(e) {\n // For ``s, use the `value` property. For others that don't have a\n // `value` (such as ``), use either\n // `textContent` or `innerText` (depending on which one is supported, i.e.\n // Firefox or IE).\n const value = e.target.value !== undefined\n ? e.target.value\n : e.target.textContent !== undefined\n ? e.target.textContent\n : e.target.innerText;\n if (value != null && value.trim().length >= this.typeaheadMinLength) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(e.target.value);\n }\n else {\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(false);\n this.hide();\n }\n }\n onChange(event) {\n if (this._container) {\n // esc\n if (event.keyCode === 27 || event.key === 'Escape') {\n this.hide();\n return;\n }\n // up\n if (event.keyCode === 38 || event.key === 'ArrowUp') {\n this.isActiveItemChanged = true;\n this._container.prevActiveMatch();\n return;\n }\n // down\n if (event.keyCode === 40 || event.key === 'ArrowDown') {\n this.isActiveItemChanged = true;\n this._container.nextActiveMatch();\n return;\n }\n // enter\n if (event.keyCode === 13 || event.key === 'Enter') {\n this._container.selectActiveMatch();\n return;\n }\n }\n }\n onFocus() {\n this.isFocused = true;\n // add setTimeout to fix issue #5251\n // to get and emit updated value if it's changed on focus\n setTimeout(() => {\n if (this.typeaheadMinLength === 0) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(this.element.nativeElement.value || '');\n }\n }, 0);\n }\n onBlur() {\n var _a;\n this.isFocused = false;\n if (this._container && !this._container.isFocused) {\n this.typeaheadOnBlur.emit(this._container.active);\n }\n if (!this.container && ((_a = this._matches) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n this.typeaheadOnBlur.emit(new TypeaheadMatch(this.element.nativeElement.value, this.element.nativeElement.value, false));\n }\n }\n onKeydown(event) {\n // no container - no problems\n if (!this._container) {\n return;\n }\n if (event.keyCode === 9 || event.key === 'Tab') {\n this.onBlur();\n }\n if (event.keyCode === 9 || event.key === 'Tab' || event.keyCode === 13 || event.key === 'Enter') {\n event.preventDefault();\n if (this.typeaheadSelectFirstItem) {\n this._container.selectActiveMatch();\n return;\n }\n if (!this.typeaheadSelectFirstItem) {\n this._container.selectActiveMatch(this.isActiveItemChanged);\n this.isActiveItemChanged = false;\n this.hide();\n }\n }\n }\n changeModel(match) {\n var _a;\n if (!match) {\n return;\n }\n let valueStr;\n if (this.typeaheadMultipleSearch && this._allEnteredValue) {\n const tokens = this._allEnteredValue.split(new RegExp(`([${this.typeaheadMultipleSearchDelimiters}]+)`));\n this._allEnteredValue = tokens.slice(0, tokens.length - 1).concat(match.value).join('');\n valueStr = this._allEnteredValue;\n }\n else {\n valueStr = match.value;\n }\n this.ngControl.viewToModelUpdate(valueStr);\n (_a = this.ngControl.control) === null || _a === void 0 ? void 0 : _a.setValue(valueStr);\n this.changeDetection.markForCheck();\n this.hide();\n }\n show() {\n this._typeahead\n .attach(TypeaheadContainerComponent)\n .to(this.container)\n .position({ attachment: `${this.dropup ? 'top' : 'bottom'} left` })\n .show({\n typeaheadRef: this,\n placement: this.placement,\n animation: false,\n dropup: this.dropup\n });\n this._outsideClickListener = this.renderer\n .listen('document', 'click', (event) => {\n if (this.typeaheadMinLength === 0 && this.element.nativeElement.contains(event.target)) {\n return;\n }\n if (!this.typeaheadHideResultsOnBlur || this.element.nativeElement.contains(event.target)) {\n return;\n }\n this.onOutsideClick();\n });\n if (!this._typeahead.instance || !this.ngControl.control) {\n return;\n }\n this._container = this._typeahead.instance;\n this._container.parent = this;\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = (this.typeaheadLatinize\n ? latinize(this.ngControl.control.value)\n : this.ngControl.control.value)\n .toString()\n .toLowerCase();\n this._container.query = this.tokenizeQuery(normalizedQuery);\n this._container.matches = this._matches;\n this.element.nativeElement.focus();\n this._container.activeChangeEvent.subscribe((activeId) => {\n this.activeDescendant = activeId;\n this.changeDetection.markForCheck();\n });\n this.isOpen = true;\n }\n hide() {\n if (this._typeahead.isShown) {\n this._typeahead.hide();\n this._outsideClickListener();\n this._container = void 0;\n this.isOpen = false;\n this.changeDetection.markForCheck();\n }\n this.typeaheadOnPreview.emit();\n }\n onOutsideClick() {\n if (this._container && !this._container.isFocused) {\n this.hide();\n }\n }\n ngOnDestroy() {\n // clean up subscriptions\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._typeahead.dispose();\n }\n asyncActions() {\n this._subscriptions.push(this.keyUpEventEmitter\n .pipe(debounceTime(this.typeaheadWaitMs), tap(value => this._allEnteredValue = value), switchMap(() => {\n if (!this.typeahead) {\n return EMPTY;\n }\n return this.typeahead;\n }))\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n }));\n }\n syncActions() {\n this._subscriptions.push(this.keyUpEventEmitter\n .pipe(debounceTime(this.typeaheadWaitMs), mergeMap((value) => {\n this._allEnteredValue = value;\n const normalizedQuery = this.normalizeQuery(value);\n if (!this.typeahead) {\n return EMPTY;\n }\n const typeahead = isObservable(this.typeahead) ? this.typeahead : from(this.typeahead);\n return typeahead\n .pipe(filter((option) => {\n return !!option && this.testMatch(this.normalizeOption(option), normalizedQuery);\n }), toArray());\n }))\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n }));\n }\n normalizeOption(option) {\n const optionValue = getValueFromObject(option, this.typeaheadOptionField);\n const normalizedOption = this.typeaheadLatinize\n ? latinize(optionValue)\n : optionValue;\n return normalizedOption.toLowerCase();\n }\n tokenizeQuery(currentQuery) {\n let query = currentQuery;\n if (this.typeaheadMultipleSearch && this.typeaheadSingleWords) {\n if (!this.haveCommonCharacters(`${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`, this.typeaheadMultipleSearchDelimiters)) {\n // single words and multiple search delimiters are different, can be used together\n query = tokenize(query, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters, this.typeaheadMultipleSearchDelimiters);\n }\n }\n else if (this.typeaheadSingleWords) {\n query = tokenize(query, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters);\n }\n else {\n // multiple searches\n query = tokenize(query, void 0, void 0, this.typeaheadMultipleSearchDelimiters);\n }\n return query;\n }\n normalizeQuery(value) {\n // If singleWords, break model here to not be doing extra work on each iteration\n let normalizedQuery = (this.typeaheadLatinize\n ? latinize(value)\n : value)\n .toString()\n .toLowerCase();\n normalizedQuery = this.tokenizeQuery(normalizedQuery);\n return normalizedQuery;\n }\n testMatch(match, test) {\n let spaceLength;\n if (typeof test === 'object') {\n spaceLength = test.length;\n for (let i = 0; i < spaceLength; i += 1) {\n if (test[i].length > 0 && match.indexOf(test[i]) < 0) {\n return false;\n }\n }\n return true;\n }\n return match.indexOf(test) >= 0;\n }\n finalizeAsyncCall(matches) {\n this.prepareMatches(matches || []);\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(!this.hasMatches());\n if (!this.hasMatches()) {\n this.hide();\n return;\n }\n if (!this.isFocused && this.cancelRequestOnFocusLost) {\n return;\n }\n if (this._container && this.ngControl.control) {\n // fix: remove usage of ngControl internals\n const _controlValue = (this.typeaheadLatinize\n ? latinize(this.ngControl.control.value)\n : this.ngControl.control.value) || '';\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = _controlValue.toString().toLowerCase();\n this._container.query = this.tokenizeQuery(normalizedQuery);\n this._container.matches = this._matches;\n }\n else {\n this.show();\n }\n }\n prepareMatches(options) {\n const limited = options.slice(0, this.typeaheadOptionsLimit);\n const sorted = !this.typeaheadOrderBy ? limited : this.orderMatches(limited);\n if (this.typeaheadGroupField) {\n let matches = [];\n // extract all group names\n const groups = sorted\n .map((option) => getValueFromObject(option, this.typeaheadGroupField))\n .filter((v, i, a) => a.indexOf(v) === i);\n groups.forEach((group) => {\n // add group header to array of matches\n matches.push(new TypeaheadMatch(group, group, true));\n // add each item of group to array of matches\n matches = matches.concat(sorted\n .filter((option) => getValueFromObject(option, this.typeaheadGroupField) === group)\n .map((option) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))));\n });\n this._matches = matches;\n }\n else {\n this._matches = sorted.map(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (option) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField)));\n }\n }\n orderMatches(options) {\n if (!options.length) {\n return options;\n }\n if (this.typeaheadOrderBy !== null\n && this.typeaheadOrderBy !== undefined\n && typeof this.typeaheadOrderBy === 'object'\n && Object.keys(this.typeaheadOrderBy).length === 0) {\n console.error('Field and direction properties for typeaheadOrderBy have to be set according to documentation!');\n return options;\n }\n const { field, direction } = (this.typeaheadOrderBy || {});\n if (!direction || !(direction === 'asc' || direction === 'desc')) {\n console.error('typeaheadOrderBy direction has to equal \"asc\" or \"desc\". Please follow the documentation.');\n return options;\n }\n if (typeof options[0] === 'string') {\n return direction === 'asc' ? options.sort() : options.sort().reverse();\n }\n if (!field || typeof field !== 'string') {\n console.error('typeaheadOrderBy field has to set according to the documentation.');\n return options;\n }\n return options.sort((a, b) => {\n const stringA = getValueFromObject(a, field);\n const stringB = getValueFromObject(b, field);\n if (stringA < stringB) {\n return direction === 'asc' ? -1 : 1;\n }\n if (stringA > stringB) {\n return direction === 'asc' ? 1 : -1;\n }\n return 0;\n });\n }\n hasMatches() {\n return this._matches.length > 0;\n }\n checkDelimitersConflict() {\n if (this.typeaheadMultipleSearch && this.typeaheadSingleWords\n && (this.haveCommonCharacters(`${this.typeaheadPhraseDelimiters}${this.typeaheadWordDelimiters}`, this.typeaheadMultipleSearchDelimiters))) {\n throw new Error(`Delimiters used in typeaheadMultipleSearchDelimiters must be different\n from delimiters used in typeaheadWordDelimiters (current value: ${this.typeaheadWordDelimiters}) and\n typeaheadPhraseDelimiters (current value: ${this.typeaheadPhraseDelimiters}).\n Please refer to the documentation`);\n }\n }\n haveCommonCharacters(str1, str2) {\n for (let i = 0; i < str1.length; i++) {\n if (str1.charAt(i).indexOf(str2) > -1) {\n return true;\n }\n }\n return false;\n }\n}\nTypeaheadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadDirective, deps: [{ token: i1$1.ComponentLoaderFactory }, { token: TypeaheadConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i3.NgControl }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nTypeaheadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: TypeaheadDirective, selector: \"[typeahead]\", inputs: { typeahead: \"typeahead\", typeaheadMinLength: \"typeaheadMinLength\", adaptivePosition: \"adaptivePosition\", isAnimated: \"isAnimated\", typeaheadWaitMs: \"typeaheadWaitMs\", typeaheadOptionsLimit: \"typeaheadOptionsLimit\", typeaheadOptionField: \"typeaheadOptionField\", typeaheadGroupField: \"typeaheadGroupField\", typeaheadOrderBy: \"typeaheadOrderBy\", typeaheadAsync: \"typeaheadAsync\", typeaheadLatinize: \"typeaheadLatinize\", typeaheadSingleWords: \"typeaheadSingleWords\", typeaheadWordDelimiters: \"typeaheadWordDelimiters\", typeaheadMultipleSearch: \"typeaheadMultipleSearch\", typeaheadMultipleSearchDelimiters: \"typeaheadMultipleSearchDelimiters\", typeaheadPhraseDelimiters: \"typeaheadPhraseDelimiters\", typeaheadItemTemplate: \"typeaheadItemTemplate\", optionsListTemplate: \"optionsListTemplate\", typeaheadScrollable: \"typeaheadScrollable\", typeaheadOptionsInScrollableView: \"typeaheadOptionsInScrollableView\", typeaheadHideResultsOnBlur: \"typeaheadHideResultsOnBlur\", typeaheadSelectFirstItem: \"typeaheadSelectFirstItem\", typeaheadIsFirstItemActive: \"typeaheadIsFirstItemActive\", container: \"container\", dropup: \"dropup\" }, outputs: { typeaheadLoading: \"typeaheadLoading\", typeaheadNoResults: \"typeaheadNoResults\", typeaheadOnSelect: \"typeaheadOnSelect\", typeaheadOnPreview: \"typeaheadOnPreview\", typeaheadOnBlur: \"typeaheadOnBlur\" }, host: { listeners: { \"input\": \"onInput($event)\", \"keyup\": \"onChange($event)\", \"click\": \"onFocus()\", \"focus\": \"onFocus()\", \"blur\": \"onBlur()\", \"keydown\": \"onKeydown($event)\" }, properties: { \"attr.aria-activedescendant\": \"activeDescendant\", \"attr.aria-owns\": \"isOpen ? this._container.popupId : null\", \"attr.aria-expanded\": \"isOpen\", \"attr.aria-autocomplete\": \"list\" } }, exportAs: [\"bs-typeahead\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[typeahead]',\n exportAs: 'bs-typeahead',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isOpen ? this._container.popupId : null',\n '[attr.aria-expanded]': 'isOpen',\n '[attr.aria-autocomplete]': 'list'\n }\n }]\n }], ctorParameters: function () { return [{ type: i1$1.ComponentLoaderFactory }, { type: TypeaheadConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i3.NgControl }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }]; }, propDecorators: { typeahead: [{\n type: Input\n }], typeaheadMinLength: [{\n type: Input\n }], adaptivePosition: [{\n type: Input\n }], isAnimated: [{\n type: Input\n }], typeaheadWaitMs: [{\n type: Input\n }], typeaheadOptionsLimit: [{\n type: Input\n }], typeaheadOptionField: [{\n type: Input\n }], typeaheadGroupField: [{\n type: Input\n }], typeaheadOrderBy: [{\n type: Input\n }], typeaheadAsync: [{\n type: Input\n }], typeaheadLatinize: [{\n type: Input\n }], typeaheadSingleWords: [{\n type: Input\n }], typeaheadWordDelimiters: [{\n type: Input\n }], typeaheadMultipleSearch: [{\n type: Input\n }], typeaheadMultipleSearchDelimiters: [{\n type: Input\n }], typeaheadPhraseDelimiters: [{\n type: Input\n }], typeaheadItemTemplate: [{\n type: Input\n }], optionsListTemplate: [{\n type: Input\n }], typeaheadScrollable: [{\n type: Input\n }], typeaheadOptionsInScrollableView: [{\n type: Input\n }], typeaheadHideResultsOnBlur: [{\n type: Input\n }], typeaheadSelectFirstItem: [{\n type: Input\n }], typeaheadIsFirstItemActive: [{\n type: Input\n }], typeaheadLoading: [{\n type: Output\n }], typeaheadNoResults: [{\n type: Output\n }], typeaheadOnSelect: [{\n type: Output\n }], typeaheadOnPreview: [{\n type: Output\n }], typeaheadOnBlur: [{\n type: Output\n }], container: [{\n type: Input\n }], dropup: [{\n type: Input\n }],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }], onChange: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }], onFocus: [{\n type: HostListener,\n args: ['click']\n }, {\n type: HostListener,\n args: ['focus']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onKeydown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\nclass TypeaheadModule {\n static forRoot() {\n return {\n ngModule: TypeaheadModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\nTypeaheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTypeaheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadModule, declarations: [TypeaheadContainerComponent, TypeaheadDirective], imports: [CommonModule], exports: [TypeaheadContainerComponent, TypeaheadDirective] });\nTypeaheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: TypeaheadModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [TypeaheadContainerComponent, TypeaheadDirective],\n exports: [TypeaheadContainerComponent, TypeaheadDirective],\n entryComponents: [TypeaheadContainerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TypeaheadConfig, TypeaheadContainerComponent, TypeaheadDirective, TypeaheadMatch, TypeaheadModule, TypeaheadOptions, escapeRegexp, getValueFromObject, latinMap, latinize, tokenize };\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\r\n\r\nimport { MainComponent } from './main/main.component';\r\nimport { AuthComponent } from './auth/auth.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { LogoComponent } from './logo/logo.component';\r\nimport { PageHeaderComponent } from './page-header/page-header.component';\r\nimport { PageBreadcrumbComponent } from './page-breadcrumb/page-breadcrumb.component';\r\nimport { PageHeadingComponent } from './page-heading/page-heading.component';\r\nimport { PageFooterComponent } from './page-footer/page-footer.component';\r\nimport { DropdownAppsComponent } from './dropdown-apps/dropdown-apps.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { SettingsModalComponent } from './settings-modal/settings-modal.component';\r\nimport { UiModule } from '../ui/ui.module';\r\nimport { NavigationModule } from '../navigation/navigation.module';\r\nimport { SettingsShortcutComponent } from './settings-shortcut/settings-shortcut.component';\r\nimport { ShortcutModalComponent } from './shortcut-modal/shortcut-modal.component';\r\nimport { FabShortcutComponent } from './fab-shortcut/fab-shortcut.component';\r\nimport { DropdownUserComponent } from './dropdown-user/dropdown-user.component';\r\nimport { AlertComponent } from '@app/core/components';\r\nimport { ChangechannelComponent } from '@app/core/components';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TaskgridModule } from '@app/core/components/taskgrid/taskgrid.module';\r\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\r\nimport { BnNgIdleService } from 'bn-ng-idle'; \r\nimport { ProgressbarModule,ProgressbarConfig } from 'ngx-bootstrap/progressbar';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TypeaheadModule, TypeaheadConfig } from 'ngx-bootstrap/typeahead';\r\nimport { Select2Module } from \"ng-select2-component\";\r\nimport { LogoutComponent } from '@app/features/account/logout.component';\r\n// import { JobmonitorComponent } from '@app/core/components';\r\n// import { JobProgressBarComponent } from '@app/core/components';\r\nimport { MaterialModule } from '@app/shared/material/material.module';\r\nimport { MessagesComponent } from '@app/core/components';\r\nimport { MessageComponent } from '@app/core/components';\r\nimport { PanelsModule } from '../panels/panels.module';\r\nimport { MonitoringModule } from '@app/shared/monitoring/monitoring.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AlertComponent, MainComponent, AuthComponent, SidebarComponent,\r\n LogoComponent,\r\n PageHeaderComponent, PageBreadcrumbComponent, PageHeadingComponent,\r\n PageFooterComponent, DropdownAppsComponent, SettingsComponent,\r\n SettingsModalComponent,\r\n SettingsShortcutComponent,\r\n ShortcutModalComponent,\r\n FabShortcutComponent,\r\n DropdownUserComponent,\r\n ChangechannelComponent,\r\n LogoutComponent,\r\n// JobmonitorComponent,\r\n// JobProgressBarComponent,\r\n MessagesComponent,\r\n MessageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BsDropdownModule,\r\n ModalModule,\r\n ButtonsModule,\r\n ProgressbarModule,\r\n BrowserAnimationsModule,\r\n TypeaheadModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NavigationModule,\r\n UiModule,\r\n TaskgridModule,\r\n CollapseModule,\r\n AngularResizeEventModule,\r\n Select2Module,\r\n MaterialModule,\r\n PanelsModule,\r\n MonitoringModule\r\n ],\r\n providers: [BnNgIdleService, ProgressbarConfig, TypeaheadConfig],\r\n exports: [MainComponent, AuthComponent, SidebarComponent]\r\n})\r\nexport class LayoutModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { MainComponent } from './shared/layout/main/main.component';\r\nimport { LayoutModule } from './shared/layout/layout.module';\r\nimport { AuthGuard } from '@app/core/_helpers/auth.guard';\r\nimport { IsAuthorizedGuard } from './core/_helpers/is-authorized-guard';\r\nimport { AppResolve } from '@app/core/resolvers/app.resolver';\r\n\r\nconst routes: Routes = [\r\n\r\n {\r\n path: '',\r\n component: MainComponent,\r\n children: [\r\n { path: '', redirectTo: 'vms', pathMatch: 'full' },\r\n { path: 'alive', loadChildren: () => import('./core/components/alive/alive.module').then(m => m.AliveModule)},\r\n { path: 'intel', loadChildren: () => import('./features/about/about.module').then(m => m.AboutModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'settings', loadChildren: () => import('./features/settings/settings.module').then(m => m.SettingsModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'info', loadChildren: () => import('./features/info/info.module').then(m => m.InfoModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'ui', loadChildren: () => import('./features/ui-pages/ui-pages.module').then(m => m.UiPagesModule) },\r\n { path: 'icons', loadChildren: () => import('./features/icons/icons.module').then(m => m.IconsModule) },\r\n { path: 'cloudmanage', loadChildren: () => import('./features/cloudmanage/cloudmanage.module').then(m => m.CloudmanageModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'vms', loadChildren: () => import('./features/cloudmanage/compute/vms/vms.module').then(m => m.VmsModule),\r\n canActivate: [AuthGuard],\r\n // canLoad: [IsAuthorizedGuard], \r\n },\r\n { path: 'vm', loadChildren: () => import('./features/cloudmanage/compute/vm/vm.module').then(m => m.VmModule),\r\n canActivate: [AuthGuard] }, \r\n { path: 'cost', loadChildren: () => import('./features/cost/cost.module').then(m => m.CostModule),\r\n canActivate: [AuthGuard],\r\n data: { roles: ['admin', 'ChannelAdmin'] } },\r\n { path: 'brs', loadChildren: () => import('./features/brs/brs.module').then(m => m.BrsModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'dps', loadChildren: () => import('./features/dps/dps.module').then(m => m.DpsModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'rds', loadChildren: () => import('./features/rds/rds.module').then(m => m.RdsModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'account', loadChildren: () => import('./features/account/account.module').then(m => m.AccountModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'monitor', loadChildren: () => import('./features/monitor/monitor.module').then(m => m.MonitorModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'manage', loadChildren: () => import('./features/manage/manage.module').then(m => m.ManageModule),\r\n canActivate: [AuthGuard],\r\n data: { roles: ['Admin', 'ChannelAdmin'] } },\r\n { path: 'resources', loadChildren: () => import('./features/resources/resources.module').then(m => m.ResourcesModule),\r\n canActivate: [AuthGuard] },\r\n { path: 'support', loadChildren: () => import('./features/support/support.module').then(m => m.SupportModule),\r\n canActivate: [AuthGuard] }, \r\n { path: 'shoppingcart', loadChildren: () => import('./features/shoppingcart/shoppingcart.module').then(m => m.ShoppingCartModule),\r\n canActivate: [AuthGuard],\r\n data: { roles: ['admin', 'ChannelAdmin'] } },\r\n { path: '**', redirectTo: 'vms', pathMatch: 'full' } \r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [LayoutModule, RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\n// interface for n3thandler\r\nexport interface IN3THandler {\r\n handler: N3THandler;\r\n}\r\n\r\n// n3thandler base class. all custom handlers extend this class\r\nexport class N3THandler {\r\n public pattern: string;\r\n public message: string;\r\n public exactMatch: boolean;\r\n\r\n constructor() {}\r\n\r\n public getErrorMessage(error: any) {\r\n // if no message is defined then just use the error message\r\n return typeof this.message !== 'undefined' && this.message ? `error: ${this.message}` : `error: ${error.message}`;\r\n }\r\n\r\n public isMatch(error: any): boolean {\r\n const regexp = new RegExp(this.pattern);\r\n return this.exactMatch ? regexp.test(error) : regexp.test('/^${this.pattern}/$');\r\n }\r\n}\r\n","import { N3TErrorHandler } from '../n3t-error-handler';\r\nimport { IN3THandler, N3THandler } from '../n3t-handler';\r\n\r\nexport class TestErrorHandler implements IN3THandler {\r\n public handler: N3THandler;\r\n constructor() {\r\n this.handler = new N3THandler();\r\n this.handler.exactMatch = true;\r\n this.handler.pattern = 'is this a test error';\r\n this.handler.message = 'test error match found';\r\n }\r\n}\r\n","import { IN3THandler, N3THandler } from '../n3t-handler';\r\n\r\nexport class TestError2Handler implements IN3THandler {\r\n public handler: N3THandler;\r\n constructor() {\r\n this.handler = new N3THandler();\r\n this.handler.exactMatch = true;\r\n this.handler.pattern = 'is this a test error2';\r\n this.handler.message = 'test error2 match found';\r\n }\r\n}\r\n","import * as module from './index';\r\n\r\nexport const list: any[] = Object.keys(module).map(key => module[key]);\r\n","import { Observable, of } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport * as handlers from './handlers/list';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { AlertService } from '../_services/alert.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class N3TErrorHandler {\r\n constructor(private logger: N3TLogger,\r\n private alertService: AlertService) {}\r\n\r\n // handles observable errors and returns an observable of the given generic type\r\n public handleErrorObservable(operation = 'operation', sendAlert: boolean, context?: any, result?: T) {\r\n return (error: any): Observable => {\r\n const message = this.iterateHandlers(operation, error);\r\n this.logger.error(message, context, error);\r\n if (sendAlert) {\r\n this.alertService.error(message, error);\r\n }\r\n return of(result as T);\r\n };\r\n }\r\n\r\n // handles errors and returns the given generic type\r\n public handleErrorType(operation = 'operation', sendAlert: boolean, context?: any, result?: T) {\r\n return (error: any): T => {\r\n const message = this.iterateHandlers(operation, error);\r\n this.logger.error(message, context, error);\r\n if (sendAlert) {\r\n this.alertService.error(message);\r\n }\r\n return result as T;\r\n };\r\n }\r\n\r\n // handles errors with no return type\r\n public handleError(operation = 'operation', sendAlert: boolean, context?: any, ) {\r\n return (error: any) => {\r\n const message = this.iterateHandlers(operation, error);\r\n this.logger.error(message, context, error);\r\n if (sendAlert) {\r\n this.alertService.error(message);\r\n }\r\n };\r\n }\r\n\r\n // loop through all custom error message handlers\r\n private iterateHandlers(operation: string, error: any) {\r\n let message = null;\r\n for (const handler of handlers.list) { // <-- iterate through all existing error handlers\r\n const def = handler; // <-- class definition\r\n const errHandler = new def(); // <-- instantiate the class definition\r\n if (errHandler.handler.isMatch(error.message)) { // <-- look for regular expression match\r\n message = errHandler.handler.getErrorMessage(error);\r\n break;\r\n }\r\n }\r\n\r\n return message == null ? `${operation}, failed: ${error.message}` : `${operation}, failed: ${message}`;\r\n }\r\n}\r\n","import { N3TErrorHandler } from './n3t-error-handler';\r\nimport { ErrorHandler, Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\n\r\nexport class GlobalErrorHandler implements ErrorHandler {\r\n constructor(private n3tErrorHandler: N3TErrorHandler) {}\r\n\r\n handleError(error: Error) {\r\n const sendAlert = false;\r\n const operation = 'Global Error';\r\n const handler = this.n3tErrorHandler.handleError(operation, sendAlert);\r\n handler(error);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { ErrorHandler, NgModule } from '@angular/core';\r\nimport { GlobalErrorHandler } from './global-error-handler';\r\nimport { HttpErrorInterceptor } from './http-error.interceptor';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule],\r\n\r\n // register the classes for the error interception here\r\n providers: [\r\n {\r\n // processes all errors\r\n provide: ErrorHandler,\r\n useClass: GlobalErrorHandler\r\n },\r\n {\r\n // interceptor for HTTP errors\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: HttpErrorInterceptor,\r\n multi: true // multiple interceptors are possible\r\n }\r\n ]\r\n })\r\n\r\n export class ErrorHandlerModule {}\r\n","import { App } from './app.model';\r\nimport * as AppActions from './app.actions';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\n\r\nexport const appFeatureKey = 'app';\r\n\r\nexport interface State extends EntityState {\r\n appResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n appResult: new N3TResult()\r\n});\r\n\r\nconst gqlReducer = createReducer(\r\n initialState,\r\n on(AppActions.appResetError, \r\n (state, prop) => ({ ...state, appResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n )\r\n);\r\n \r\n export function reducer(state: State | undefined, action: Action) {\r\n return gqlReducer(state, action);\r\n }\r\n \r\n export const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n } = adapter.getSelectors();\r\n ","import { Guid } from 'guid-typescript';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { Update } from '@ngrx/entity';\r\n\r\nimport { Roles, TypeUser } from 'src/app/core/gql/graphql/permissions/schema/type';\r\nimport { GetCompanyUsersInput } from '@app/core/gql/graphql/permissions/schema/input';\r\nimport { CloudPermission } from '@app/core/gql/graphql/keycloak/schema/type/cloudPermission';\r\nimport { Membership } from '@app/core/gql/graphql/login/schema/type';\r\nimport { GetMembershipsInput } from '@app/core/gql/graphql/login/schema/input';\r\n\r\nexport const setCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Set CompanyUserMemberships', \r\n props<{ companyUserMemberships: Membership[] }>()\r\n);\r\n\r\nexport const addCompanyUserMembership = createAction(\r\n '[CompanyUserMemberships/API] Add CompanyUserMemberships',\r\n props<{ companyUserMembership: Membership }>()\r\n);\r\n\r\nexport const upsertCompanyUserMembership = createAction(\r\n '[CompanyUserMemberships/API] Upsert CompanyUserMembership',\r\n props<{ companyUserMembership: Membership }>()\r\n);\r\n\r\nexport const upsertCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Upsert CompanyUserMemberships',\r\n props<{ companyUserMemberships: Membership[] }>()\r\n );\r\n\r\nexport const addCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Add CompanyUserMemberships',\r\n props<{ companyUserMemberships: Membership[]}>()\r\n);\r\n\r\nexport const upsertCompanyUsers = createAction(\r\n '[CompanyUserMemberships/API] Upsert CompanyUserMemberships',\r\n props<{ companyUserMemberships: Membership[] }>()\r\n);\r\n\r\nexport const updateCompanyUserMembership = createAction(\r\n '[CompanyUserMemberships/API] Update CompanyUserMembership',\r\n props<{ companyUserMembership: Update }>()\r\n);\r\n\r\nexport const updateCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Update CompanyUserMemberships',\r\n props<{ companyUserMemberships: Update[] }>()\r\n);\r\n\r\nexport const deleteCompanyUserMembership = createAction(\r\n '[CompanyUserMemberships/API] Delete CompanyUserMembership',\r\n props<{ membershipId: string }>()\r\n);\r\n\r\nexport const deleteCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Delete CompanyUserMemberships',\r\n props<{ ids: string[] }>()\r\n);\r\n\r\nexport const clearCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Clear CompanyUserMemberships'\r\n);\r\n\r\nexport const getCompanyUserMemberships = createAction(\r\n '[CompanyUserMemberships/API] Get Company User Memberships',\r\n props<{ getCompanyUserMemberships: GetMembershipsInput }>()\r\n);\r\n\r\nexport const setCompanyUserMembershipsLoaded = createAction(\r\n '[CompanyUserMemberships/API] Set Company User Memberships Loaded'\r\n);\r\n\r\nexport const getCompanyUserMembershipsError = createAction(\r\n '[CompanyUserMemberships/API] Get Company User Memberships Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const updateCompanyUserMembershipsError = createAction(\r\n '[CompanyUserMemberships/API] Update Company User Memberships Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const deleteCompanyUserMembershipsError = createAction(\r\n '[CompanyUserMemberships/API] Delete Company User Memberships Error',\r\n props<{ message: string }>()\r\n);\r\n\r\nexport const setCompanyUserMembershipsReset = createAction(\r\n '[CompanyUserMemberships/API] Set Company User Memberships Reset'\r\n);\r\n\r\n","import { clearDPS } from './../dps/dps.actions';\r\nimport { Injectable } from '@angular/core';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as AppActions from './app.actions'\r\nimport * as AdminUserActions from '../adminUser/admin-user.actions';\r\nimport * as AuthUserActions from '../authUser/auth-user.actions';\r\nimport * as BRSLinkActions from '../brsLink/brs-link.actions';\r\nimport * as ChannelCompanyActions from '../channelCompany/channel-company.actions';\r\nimport * as CompanyActions from '../company/company.actions';\r\nimport * as CompanyIdentifierActions from '../companyIdentifier/company-identifier.actions';\r\nimport * as MembershipActions from '../membership/membership.actions';\r\nimport * as NetworkActions from '../network/network.actions';\r\nimport * as OrgActions from '../org/org.actions';\r\nimport * as ProviderTokenActions from '../providerToken/provider-token.actions';\r\nimport * as RoleActions from '../role/role.actions';\r\nimport * as TaskActions from '../task/task.actions';\r\nimport * as UserLoginActions from '../userLogin/user-login.actions';\r\nimport * as VDCActions from '../vdc/vdc.actions';\r\nimport * as MetricsActions from '../metrics/metrics.actions';\r\nimport * as VMFlatActions from '../vmFlat/vm-flat.actions';\r\nimport * as SnapshotActions from '../snapshot/snapshot.actions';\r\nimport * as TemplatesActions from '../templates/templates.actions';\r\nimport * as SelectedTemplatesActions from '../selectedTemplates/selected-templates.actions';\r\nimport * as ProductActions from '../product/product.actions';\r\nimport * as DPSActions from '../dps/dps.actions';\r\nimport * as BackupAuthActions from '../backupAuth/backup-auth.actions';\r\nimport * as BackupClusterActions from '../backupClusterInfo/backup-cluster-info.actions';\r\nimport * as BackupJobActions from '../backupJob/backup-job.actions';\r\nimport * as ProcessJobActions from '../processJob/process-job.actions';\r\nimport * as CompanyUserActions from '../companyUser/company-user.actions';\r\nimport * as CompanyUserMemberships from '../companyUserMemberships/company-user-memberships.actions';\r\nimport * as TenantOfferingItems from '../tenantOfferingItems/tenant-offering-items.actions';\r\nimport * as TenantUsages from '../tenantUsages/tenant-usages.actions';\r\n\r\n@Injectable()\r\nexport class AppEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger) {}\r\n\r\n /*\r\n side effects:\r\n 1. dispatch clear data and reset each slice of store state for the entire application\r\n */\r\n appReset$ = createEffect(() => this.actions$.pipe(\r\n ofType(AppActions.appReset),\r\n switchMap(action => { \r\n return [\r\n AdminUserActions.clearAdminUsers(),\r\n AuthUserActions.resetAuthUsersResult(),\r\n AuthUserActions.clearAuthUsers(),\r\n BRSLinkActions.clearBrsLinks(),\r\n CompanyActions.clearCompanys(),\r\n ChannelCompanyActions.clearChannelCompanys(),\r\n CompanyIdentifierActions.clearCompanyIdentifiers(),\r\n MembershipActions.clearMemberships(),\r\n NetworkActions.clearNetworks(),\r\n OrgActions.clearOrgs(),\r\n ProviderTokenActions.clearProviderTokens(),\r\n RoleActions.clearRoles(),\r\n TaskActions.clearTasks(),\r\n UserLoginActions.clearUserLogins(),\r\n VDCActions.clearVdcs(),\r\n VMFlatActions.clearVmFlats(),\r\n CompanyIdentifierActions.setCompanyIdentifiersReset(),\r\n SnapshotActions.clearTypeVMSnapshots(),\r\n TemplatesActions.clearTemplates(),\r\n SelectedTemplatesActions.clearSelectedTemplates(),\r\n ProductActions.clearProducts(),\r\n DPSActions.clearDPS(),\r\n BackupAuthActions.clearBackupAuth(),\r\n BackupClusterActions.clearBackupClusterInfo(),\r\n BackupJobActions.clearBackupJob(),\r\n ProcessJobActions.clearProcessJob(),\r\n CompanyUserActions.clearCompanyUsers(),\r\n CompanyUserMemberships.clearCompanyUserMemberships(),\r\n MetricsActions.clearMetrics(),\r\n ProductActions.clearProducts(),\r\n TenantOfferingItems.clearTenantOfferingItemsByEdition(),\r\n TenantUsages.clearTenantUsages(),\r\n ]\r\n }), catchError(error => {\r\n let errorContext = 'app.effects.appReset';\r\n this.logger.error(error.message, errorContext, error);\r\n return [AppActions.appResetError({ message : error.message })];\r\n })));\r\n\r\n /*\r\n side effects:\r\n 1. dispatch clear data and reset each slice of store state for the entire application affected by Channel change\r\n */\r\n appResetChannel$ = createEffect(() => this.actions$.pipe(\r\n ofType(AppActions.appResetChannel),\r\n switchMap(action => { \r\n return [\r\n //AdminUserActions.clearAdminUsers(),\r\n BRSLinkActions.clearBrsLinks(),\r\n CompanyActions.clearCompanys(),\r\n CompanyIdentifierActions.clearCompanyIdentifiers(),\r\n MembershipActions.clearMemberships(),\r\n NetworkActions.clearNetworks(),\r\n OrgActions.clearOrgs(),\r\n ProviderTokenActions.clearProviderTokens(),\r\n TaskActions.clearTasks(),\r\n UserLoginActions.clearUserLogins(),\r\n VDCActions.clearVdcs(),\r\n VMFlatActions.clearVmFlats(),\r\n SnapshotActions.clearTypeVMSnapshots(),\r\n TemplatesActions.clearTemplates(),\r\n SelectedTemplatesActions.clearSelectedTemplates(),\r\n ProductActions.clearProducts(),\r\n DPSActions.clearDPS(),\r\n BackupAuthActions.clearBackupAuth(),\r\n BackupClusterActions.clearBackupClusterInfo(),\r\n BackupJobActions.clearBackupJob(),\r\n ProcessJobActions.clearProcessJob(),\r\n CompanyUserActions.clearCompanyUsers(),\r\n CompanyUserMemberships.clearCompanyUserMemberships(),\r\n ProductActions.clearProducts(),\r\n TenantOfferingItems.clearTenantOfferingItemsByEdition(),\r\n TenantUsages.clearTenantUsages(),\r\n ]\r\n }), catchError(error => {\r\n let errorContext = 'app.effects.appResetChannel';\r\n this.logger.error(error.message, errorContext, error);\r\n return [AppActions.appResetChannelError({ message : error.message })];\r\n })));\r\n}","import * as app from '.';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectAppState = createFeatureSelector(\"app\");","import { Actions } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AdminUserEffects {\n\n constructor(private actions$: Actions) {}\n}\n","import { GqlService } from 'src/app/core/_services/gql.service';\nimport { Injectable } from '@angular/core';\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\nimport * as AuthUserActions from './auth-user.actions';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { UpdateRolesByUserInput } from '@app/core/gql/graphql/permissions/schema/input';\n\n@Injectable()\nexport class AuthUserEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger,\n private gqlService: GqlService) {}\n\n /*\n side effects:\n 1. fill user roles with new roles update auth user roles action\n 2. dispatch upsert auth user to save state to store (upsert = update | insert)\n */\n updateUserRoles$ = createEffect(() => this.actions$.pipe(\n ofType(AuthUserActions.updateAuthUserRoles),\n mergeMap(action => {\n let rolesUpdate = new UpdateRolesByUserInput();\n rolesUpdate.roles = action.roles;\n rolesUpdate.UserId = action.user.userId.toString();\n\n return this.gqlService.gql.permission.updateRolesByUser(rolesUpdate)\n .pipe(switchMap(response => {\n let user = action.user;\n let newRoles: string[] = [];\n \n action.roles.forEach(role => { newRoles.push(role[\"role\"]) });\n user.roles = newRoles;\n\n return [\n AuthUserActions.upsertAuthUser({ authUser: user })\n\n ]\n\n }))\n }), catchError(error => {\n let errorContext = 'auth-user.effects.updateAuthUserRoles';\n this.logger.error(error.message, errorContext, error);\n return [AuthUserActions.updateAuthUserRolesError({ message : error.message })];\n }))\n\n // mergeMap(action => {\n // let user = action.user;\n // let newRoles: string[] = [];\n\n // action.roles.forEach(role => { newRoles.push(role[\"role\"]) });\n // user.roles = newRoles;\n \n // //return AuthUserActions.upsertAuthUser({ authUser: user });\n\n // }), catchError(error => {\n // let errorContext = 'auth-user.effects.updateAuthUserRoles';\n // this.logger.error(error.message, errorContext, error);\n // return [AuthUserActions.updateAuthUserRolesError({ message : error.message })];\n // }))\n );\n}\n","import { Store } from '@ngrx/store';\r\nimport { Guid } from 'guid-typescript';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { datapoint } from '@app/core/_models';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport * as MetricsActions from '../metrics/metrics.actions';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { MetricsService } from '@app/core/_services/metrics.service';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport * as MetricsSelectors from '../../store/metrics/metrics.selectors';\r\n\r\n@Injectable()\r\nexport class MetricsEffects {\r\n constructor(private store: Store,\r\n private actions$: Actions,\r\n private logger: N3TLogger,\r\n private metricsSvc: MetricsService) {}\r\n\r\n /*\r\n side effects:\r\n 1. create a datapoint from the metrics service and set the value\r\n 2. dispatch the set metric action to save the state to the store and to the database\r\n */ \r\n logout$ = createEffect(() => this.actions$.pipe(\r\n ofType(MetricsActions.logout),\r\n mergeMap(() => {\r\n let datapoint = this.metricsSvc.getAuthLogout();\r\n datapoint.set(new Date(Date.now()));\r\n return [MetricsActions.setMetric({ metric: datapoint, persistToDb: true })]\r\n }),\r\n catchError(error => {\r\n let errorContext = 'metrics.effects.logout';\r\n this.logger.error(error.message, errorContext, error);\r\n return [];\r\n })\r\n ));\r\n\r\n /*\r\n side effects:\r\n 1. create a datapoint from the metrics service and set the value\r\n 2. dispatch the set metric action to save the state to the store and to the database\r\n */ \r\n sessionLength$ = createEffect(() => this.actions$.pipe(\r\n ofType(MetricsActions.sessionLength),\r\n mergeMap(() => {\r\n let datapoint = this.metricsSvc.getAuthSessionLength();\r\n datapoint.startTimeDuration = this.metricsSvc.sessionStartTime;\r\n datapoint.endTimeDuration = new Date(Date.now());\r\n datapoint.setTimeDuration();\r\n return [MetricsActions.setMetric({ metric: datapoint, persistToDb: true })]\r\n }),\r\n catchError(error => {\r\n let errorContext = 'metrics.effects.sessionLength';\r\n this.logger.error(error.message, errorContext, error);\r\n return [];\r\n })\r\n ));\r\n\r\n /*\r\n side effects:\r\n 1. create a datapoint from the metrics service and set the value\r\n 2. dispatch the set metric action to save the state to the store and to the database\r\n */ \r\n sessionTimeout$ = createEffect(() => this.actions$.pipe(\r\n ofType(MetricsActions.sessionTimeout),\r\n mergeMap(() => {\r\n let datapoint = this.metricsSvc.getAuthSessionTimeout();\r\n datapoint.set(new Date(Date.now()));\r\n return [MetricsActions.setMetric({ metric: datapoint, persistToDb: true })]\r\n }),\r\n catchError(error => {\r\n let errorContext = 'metrics.effects.sessionTimeout';\r\n this.logger.error(error.message, errorContext, error);\r\n return [];\r\n })\r\n ));\r\n \r\n /*\r\n side effects:\r\n 1. select the metric from the store state using the id of the metric in the action\r\n 2. if no metric exists create it and set the duration using the existing start time\r\n 3. if a metric exists in the store for the given id, use the polling time as the start time and set the duration\r\n 4. dispatch the set metric action to save the state to the store and to the database\r\n */ \r\n dataLoadVmTimeDuration$ = createEffect(() => this.actions$.pipe(\r\n ofType(MetricsActions.dataLoadVmTimeDuration),\r\n switchMap(action => {\r\n\r\n let endTimeDuration = new Date(Date.now());\r\n let storedDatapoint = new BehaviorSubject(null);\r\n let metric = this.store.select(MetricsSelectors.selectMetricById(action.metricCompute.id.toString()));\r\n metric.subscribe(x => storedDatapoint.next(x));\r\n \r\n if (storedDatapoint.value != null && storedDatapoint.value.nextPollingTime != null) {\r\n let dp = new datapoint(Guid.parse(storedDatapoint.value.correlationId), storedDatapoint.value.userId, storedDatapoint.value.statNamespace)\r\n dp.startTimeDuration = storedDatapoint.value.nextPollingTime;\r\n dp.endTimeDuration = new Date(Date.now());\r\n dp.setTimeDuration();\r\n return [MetricsActions.setMetric({ metric: dp, persistToDb: true })];\r\n } else {\r\n action.metricCloudManage.endTimeDuration = endTimeDuration\r\n action.metricCompute.endTimeDuration = endTimeDuration\r\n action.metricCloudManage.setTimeDuration();\r\n action.metricCompute.setTimeDuration();\r\n return [MetricsActions.setMetric({ metric: action.metricCloudManage, persistToDb: true }),\r\n MetricsActions.setMetric({ metric: action.metricCompute, persistToDb: true }) ];\r\n }\r\n }),\r\n catchError(error => {\r\n let errorContext = 'metrics.effects.setMetricDuration';\r\n this.logger.error(error.message, errorContext, error);\r\n return [];\r\n })\r\n ));\r\n\r\n /*\r\n side effects:\r\n 1. if persistToDb is true save the metric to the logins database using the metrics service\r\n 2. set the persistedToDb flag so the state is persisted to the store\r\n */ \r\n setMetric$ = createEffect(() => this.actions$.pipe(\r\n ofType(MetricsActions.setMetric),\r\n map(action => {\r\n if (action.persistToDb) {\r\n action.metric.isPersistedToDb = true;\r\n this.metricsSvc.add(action.metric)// <-- save the metric datapoint to the database and then rxjs will save the state\r\n }\r\n }),\r\n catchError(error => {\r\n let errorContext = 'metrics.effects.setMetricDuration';\r\n this.logger.error(error.message, errorContext, error);\r\n return [];\r\n })\r\n ), { dispatch: false });\r\n\r\n /*\r\n side effects:\r\n 1. if persistToDb is true save the metric to the logins database using the metrics service\r\n 2. set the persistedToDb flag so the state is persisted to the store\r\n */ \r\n persistToDb$ = createEffect(() => this.actions$.pipe(\r\n ofType(MetricsActions.persistToDb),\r\n map(action => {\r\n action.metric.isPersistedToDb = true;\r\n this.metricsSvc.add(action.metric)// <-- save the metric datapoint to the database and then rxjs will save the state\r\n }),\r\n catchError(error => {\r\n let errorContext = 'metrics.effects.persistToDb';\r\n this.logger.error(error.message, errorContext, error);\r\n return [];\r\n })\r\n ), { dispatch: false });\r\n}","import { Actions } from '@ngrx/effects';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BrsLinkEffects {\n\n constructor(private actions$: Actions) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect } from '@ngrx/effects';\n\n@Injectable()\nexport class ChannelCompanyEffects {\n\n constructor(private actions$: Actions) {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { GqlService } from '@app/core/_services/gql.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\n\n/*** action exports ***/\nimport * as CompanyActions from '../company/company.actions';\nimport * as AdminUserActions from '../adminUser/admin-user.actions';\n\n@Injectable()\nexport class CompanyEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger,\n private gqlService: GqlService) {}\n\n getCompanyChannelAdminUser$ = createEffect(() => this.actions$.pipe(\n ofType(CompanyActions.getCompanyChannelAdminUser),\n mergeMap(action => {\n return this.gqlService.gql.company.getCompanyChannelAdmin(action.companyId)\n .pipe(switchMap(response => {\n let resp = response[\"data\"];\n let user = resp[\"ChannelAdmin\"];\n\n return [\n AdminUserActions.upsertAdminUser({ adminUser: user.companyChannelAdmin }),\n AdminUserActions.setCompanyChannelAdminUserLoaded(),\n ]\n\n }))\n }), catchError(error => {\n let errorContext = 'company.effects.getCompanyChannelAdminUser';\n this.logger.error(error.message, errorContext, error);\n //return [AdminUserActions.setCompanyChannelAdminUserLoadedError({ message : error.message })];\n return [];\n }))\n )\n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect } from '@ngrx/effects';\n\n@Injectable()\nexport class CompanyIdentifierEffects {\n\n constructor(private actions$: Actions) {}\n\n}\n","import { Gql } from './gql.model';\r\nimport * as GqlActions from './gql.actions';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\n\r\nexport const gqlFeatureKey = 'gql';\r\n\r\nexport interface State extends EntityState {\r\n vdcsResult: N3TResult,\r\n brsLinksResult: N3TResult,\r\n authUserResult: N3TResult,\r\n companyDataResult: N3TResult,\r\n networkDataResult: N3TResult,\r\n providerTokensResult: N3TResult,\r\n adminUserResult: N3TResult,\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n /*** n3t result objects */ \r\n adminUserResult: new N3TResult(),\r\n authUserResult: new N3TResult(),\r\n brsLinksResult: new N3TResult(),\r\n companyDataResult: new N3TResult(),\r\n networkDataResult: new N3TResult(),\r\n providerTokensResult: new N3TResult(),\r\n vdcsResult: new N3TResult(),\r\n});\r\n\r\nconst gqlReducer = createReducer(\r\n initialState,\r\n\r\n /*** admin user reducers ***/\r\n on(GqlActions.getGqlAdminUser, (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlAdminUserLoaded, (state) => ({ ...state, adminUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlAdminUserError, (state, prop) => ({ ...state, adminUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n\r\n /*** auth user reducers ***/\r\n on(GqlActions.getGqlAuthUser, (state) => ({ ...state, authUserResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlAuthUserLoaded, (state) => ({ ...state, authUserResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlAuthUserError, (state, prop) => ({ ...state, authUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n\r\n /*** brs links reducers ***/\r\n on(GqlActions.getGqlBRSLinks, (state) => ({ ...state, brsLinksResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlBRSLinksLoaded, (state) => ({ ...state, brsLinksResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlBRSLinksError, (state, prop) => ({ ...state, brsLinksResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n\r\n /*** company data reducers ***/\r\n on(GqlActions.getGqlCompanyData, (state) => ({ ...state, companyDataResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlCompanyDataLoaded, (state) => ({ ...state, companyDataResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlCompanyDataError, (state, prop) => ({ ...state, companyDataResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n\r\n /*** network data reducers ***/\r\n on(GqlActions.getGqlNetworkData, (state) => ({ ...state, networkDataResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setVdcNetworkData, (state) => ({ ...state, networkDataResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlNetworkDataLoaded, (state) => ({ ...state, networkDataResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlNetworkDataError, (state, prop) => ({ ...state, networkDataResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n\r\n /*** provider token reducers ***/\r\n on(GqlActions.getGqlProviderTokens, (state) => ({ ...state, providerTokensResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlProviderTokensLoaded, (state) => ({ ...state, providerTokensResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlProviderTokensError, (state, prop) => ({ ...state, providerTokensResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n\r\n /*** vdcs reducers ***/\r\n on(GqlActions.getGqlVdcs, (state) => ({ ...state, vdcsResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})),\r\n on(GqlActions.setGqlVdcsLoaded, (state) => ({ ...state, vdcsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})),\r\n on(GqlActions.setGqlVdcsError, (state, prop) => ({ ...state, vdcsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})),\r\n);\r\n \r\n export function reducer(state: State | undefined, action: Action) {\r\n return gqlReducer(state, action);\r\n }\r\n \r\n export const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n } = adapter.getSelectors();\r\n ","\r\nexport class GetProductSelfServiceInput {\r\n customerId: string; \r\n}","import { UUID } from 'angular2-uuid';\r\nimport { DatacenterLocations } from './../../../shared/schema/enums/datacenterLocations';\r\nimport { Vpc, VpnConnection, InternetGateway, Subnet, NetworkInterface } from './index';\r\n\r\nexport class NetworkData {\r\n id: string;\r\n vpcs: Vpc[];\r\n vpns: VpnConnection[];\r\n gateways: InternetGateway[];\r\n subnets: Subnet[];\r\n networkInterfaces: NetworkInterface[];\r\n\r\n href: string;\r\n name: string;\r\n type: string;\r\n description: string;\r\n providerInfo: string;\r\n datacenterLocation: DatacenterLocations;\r\n}","import { GetProductSelfServiceInput } from './../../core/gql/graphql/products/schema/input/getProductSelfServiceInput';\r\nimport { ComputeService } from './../../core/_services/compute.service';\r\nimport { GetTemplatesInput } from './../../core/gql/graphql/templates/schema/input/getTemplatesInput';\r\nimport { upsertAdminUser } from './../adminUser/admin-user.actions';\r\nimport { BehaviorSubject, firstValueFrom, from, Observable, of } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { GqlService } from '@app/core/_services/gql.service';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, mergeMap, switchMap, map, filter } from 'rxjs/operators';\r\nimport { Login } from 'src/app/core/gql/graphql/shared/schema/type';\r\n\r\n/*** selectors exports ***/\r\nimport * as MetricsSelectors from '../../store/metrics/metrics.selectors';\r\n\r\n/*** action exports ***/\r\nimport * as GQLActions from './gql.actions';\r\nimport * as VdcActions from '../vdc/vdc.actions';\r\nimport * as AppActions from '../app/app.actions';\r\nimport * as OrgActions from '../org/org.actions';\r\nimport * as RoleActions from '../role/role.actions';\r\nimport * as MetricsActions from '../metrics/metrics.actions';\r\nimport * as NetworkActions from '../network/network.actions';\r\nimport * as CompanyActions from '../company/company.actions';\r\nimport * as BRSLinkActions from '../brsLink/brs-link.actions';\r\nimport * as AuthUserActions from '../authUser/auth-user.actions';\r\nimport * as AdminUserActions from '../adminUser/admin-user.actions';\r\nimport * as UserLoginActions from '../userLogin/user-login.actions';\r\nimport * as MembershipActions from '../membership/membership.actions';\r\nimport * as ProviderTokenActions from '../providerToken/provider-token.actions';\r\nimport * as ChannelCompanyActions from '../channelCompany/channel-company.actions';\r\nimport * as CompanyIdentifiers from '../companyIdentifier/company-identifier.actions';\r\nimport * as CompanyIdentifierActions from '../companyIdentifier/company-identifier.actions';\r\nimport * as VMFlatActions from '../vmFlat/vm-flat.actions';\r\nimport * as TemplatesActions from '../templates/templates.actions';\r\nimport * as DPSActions from '../dps/dps.actions';\r\nimport * as BackupAuthActions from '../backupAuth/backup-auth.actions';\r\nimport * as ProductActions from '../product/product.actions';\r\nimport { GetNetworksByLocationResponse, NetworkData } from '@app/core/gql/graphql/network/schema/type';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { TypeToken } from '@app/core/gql/graphql/compute/schema/type';\r\nimport { Message } from '@angular/compiler/src/i18n/i18n_ast';\r\nimport { DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { CompanyIdentifier } from '@app/core/gql/graphql/company/schema/type';\r\nimport { MetricsService } from '@app/core/_services/metrics.service';\r\nimport { datapoint } from '@app/core/_models';\r\nimport { N3TStore } from '@app/core/_services/n3tStore.service';\r\nimport { Store } from '@ngrx/store';\r\nimport { Guid } from 'guid-typescript';\r\n\r\n@Injectable()\r\nexport class GqlEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService,\r\n private metricsSvc: MetricsService,\r\n private computeService: ComputeService,\r\n private store: Store) {\r\n \r\n }\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and get the channel admin\r\n 2. dispatch load adminUsers action and save the state to the store\r\n 3. dispatch get companyData and call graphql to get the company data associated with the given user and company\r\n */ \r\n getAdminUser$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlAdminUser),\r\n mergeMap(action => {\r\n return this.gqlService.gql.company.getCompanyChannelAdmin(action.adminUser.companyId)\r\n .pipe(switchMap(adminUser => {\r\n\r\n let userId: string = adminUser.data[\"ChannelAdmin\"].companyChannelAdmin.userId.toString();\r\n let companyId: string = adminUser.data[\"ChannelAdmin\"].companyChannelAdmin.companyId.toString();\r\n let channelAdmin: Login = adminUser.data[\"ChannelAdmin\"].companyChannelAdmin;\r\n\r\n return [\r\n AdminUserActions.upsertAdminUser({ adminUser: channelAdmin }),\r\n GQLActions.getGqlCompanyData({ userId: userId, companyId: companyId }),\r\n AdminUserActions.setAdminUserLoaded()\r\n ] \r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlAdminUser';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlAdminUserError({ message : error.message }),\r\n AdminUserActions.getAdminUserError({ message: error.message })\r\n ];\r\n }))\r\n )\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and get the vdcs associated with the given user (VDC -> VAPP -> VM)\r\n 2. dispatch set VDC network action to save VDC networks to the store\r\n 3. dispatch a load vdcs action to save the vdcs to the store\r\n 4. dispatch a flatten Vdcs action (converts pvdcs to vm's)\r\n */ \r\n getVdcs$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlVdcs),\r\n mergeMap(action => {\r\n\r\n /*** metric stats for data load time ***/\r\n let dataLoadComputeMetric = this.metricsSvc.getDataLoadTimeCompute();\r\n dataLoadComputeMetric.startTimeDuration = new Date(Date.now());\r\n action.dataLoadCloudManageMetric.datapointTimestamp = new Date(Date.now());\r\n\r\n return this.gqlService.gql.compute.getCompute(action.userId.toString(), this.metricsSvc.correlationId.toString(), dataLoadComputeMetric.id)\r\n .pipe(switchMap(vdcs => {\r\n return [\r\n MetricsActions.dataLoadVmTimeDuration({ metricCloudManage: action.dataLoadCloudManageMetric, metricCompute: dataLoadComputeMetric }),\r\n GQLActions.setVdcNetworkData({vdcs: vdcs}),\r\n VdcActions.setVdcs({vdcs: vdcs}),\r\n GQLActions.setGqlVdcsLoaded(),\r\n VdcActions.flattenVdcs({ vdcs: vdcs }),\r\n VdcActions.setFlattenVdcsLoaded(),\r\n VdcActions.setVdcsLoaded()\r\n ]\r\n }));\r\n\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlVdcs';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlVdcsError({ message : error.message }),\r\n VdcActions.setVdcsError({ message: error.message })\r\n ];\r\n }))\r\n )\r\n\r\n setVdcNetworks$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.setVdcNetworkData),\r\n mergeMap(action => {\r\n let networks = new Array();\r\n action.vdcs.forEach(vdc => {\r\n if (this.computeService.isPvDC(vdc.datacenterLocation.toString())) {\r\n if (vdc.networks != null && vdc.networks.length > 0) {\r\n\r\n vdc.networks.forEach((network, index) => {\r\n let nwData = new NetworkData();\r\n nwData.id = network.id;\r\n nwData.datacenterLocation = vdc.datacenterLocation;\r\n nwData.description = network.description;\r\n nwData.providerInfo = network.providerInfo;\r\n nwData.href = network.href;\r\n nwData.type = network.type;\r\n nwData.name = network.name;\r\n\r\n networks.push(nwData);\r\n })\r\n }\r\n }\r\n })\r\n return [\r\n NetworkActions.upsertNetworks({ networks: networks }),\r\n GQLActions.setGqlNetworkDataLoaded()\r\n ];\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.setVdcNetworks';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlNetworkDataError({ message : error.message })\r\n ];\r\n })\r\n ))\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and get provider tokens\r\n 2. dispatch load provide tokens action to save the state to the store\r\n */\r\n getProviderTokens$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlProviderTokens),\r\n mergeMap(action => {\r\n\r\n /*** metric stat for data load time ***/\r\n let metric = this.metricsSvc.getDataLoadTimeProviderTokens();\r\n metric.startTimeDuration = new Date(Date.now());\r\n\r\n return this.gqlService.gql.compute.getProviderTokens(action.input)\r\n .pipe(switchMap(tokens => {\r\n\r\n /*** set the time duration for the load ***/\r\n metric.endTimeDuration = new Date(Date.now());\r\n metric.setTimeDuration();\r\n\r\n let theTokens: TypeToken[];\r\n let data = tokens.data[\"ComputeTokens\"];\r\n\r\n theTokens = data == null ? [] : data.tokens;\r\n\r\n theTokens.forEach(tok => {\r\n if (tok.id == undefined) {\r\n tok.id = UUID.UUID();\r\n }\r\n });\r\n\r\n return [\r\n ProviderTokenActions.setProviderTokens({ providerTokens: theTokens }),\r\n GQLActions.setGqlProviderTokensLoaded(),\r\n MetricsActions.setMetric({metric: metric, persistToDb: true })\r\n ]}))\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlProviderTokens';\r\n this.logger.error(error.message, errorContext, error);\r\n return [GQLActions.setGqlProviderTokensError({ message : error.message })];\r\n }))\r\n )\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and get a network by location\r\n 2. dispatch load network action to save the state to the store\r\n */\r\n getNetworks$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlNetworkData),\r\n mergeMap(action => {\r\n return this.gqlService.gql.network.getNetworksByLocation(action.input)\r\n .pipe(switchMap(response => {\r\n \r\n let networks = new Array();\r\n let data = response.data[\"NetworksByLocation\"]; \r\n \r\n networks = data == null ? [] : data.networks;\r\n\r\n networks = networks.map(x => Object.assign({}, x));\r\n\r\n networks.forEach(network => {\r\n if (network.id == undefined) {\r\n network.id = UUID.UUID();\r\n }\r\n network.datacenterLocation = DatacenterLocations[action.input.datacenterLocation];\r\n });\r\n \r\n return [\r\n NetworkActions.upsertNetworks({ networks: networks }), //.setNetworks({ networks }),\r\n GQLActions.setGqlNetworkDataLoaded()\r\n ]\r\n })) \r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlNetworkData';\r\n this.logger.error(error.message, errorContext, error);\r\n return [GQLActions.setGqlNetworkDataError({ message : error.message })];\r\n }))\r\n )\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and authenticate a user\r\n 2. dispatch an app reset to reset all of the store data\r\n 3. dispatch load auth users action and save the result of the graphql call in the store\r\n 4. dispatch get gql companydata action that calls graphql and returns the company data associated with the user\r\n */\r\n getAuthUser$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlAuthUser),\r\n mergeMap(action => { \r\n let login = { UserName: action.user, Password: action.password };\r\n return this.gqlService.gql.login.getAuthentication(login)\r\n .pipe(switchMap(authUser => [\r\n AppActions.appReset(),\r\n AuthUserActions.setAuthUsers({ authUsers: [authUser] }),\r\n GQLActions.getGqlCompanyData({ userId: authUser.userId.toString(), companyId: authUser.companyId.toString() }),\r\n GQLActions.setGqlAuthUserLoaded(),\r\n AuthUserActions.setAuthUsersLoaded()\r\n ]))\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlAuthUser';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlAuthUserError({ message : error.message }),\r\n AuthUserActions.getAuthUsersError({ message : error.message })\r\n ];\r\n }))\r\n )\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and authenticate a user\r\n 2. dispatch an app reset to reset all of the store data\r\n 3. dispatch load auth users action and save the result of the graphql call in the store\r\n 4. dispatch get gql companydata action that calls graphql and returns the company data associated with the user\r\n */\r\n getAuthUserByUserId$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlAuthUserByUserId),\r\n mergeMap(action => { \r\n return this.gqlService.gql.login.getAuthenticationByUserId(action.keycloakUser)\r\n .pipe(switchMap(authUser => { \r\n return [AppActions.appReset(),\r\n AuthUserActions.setAuthUsers({ authUsers: [authUser] }),\r\n GQLActions.setGqlAuthUserLoaded(),\r\n AuthUserActions.setAuthUsersLoaded(),\r\n GQLActions.getGqlCompanyData({ userId: authUser.userId.toString(), companyId: authUser.companyId.toString() })];\r\n }));\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlAuthUserByUserId';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlAuthUserError({ message : error.message }),\r\n AuthUserActions.getAuthUsersError({ message : error.message })\r\n ];\r\n }))\r\n )\r\n\r\n /*\r\n side effects:\r\n 1. call this.store.dispatchgraphql service and get brs links\r\n 2. dispatch load companys action and save the state to the store\r\n */\r\n getBRSLinks$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlBRSLinks),\r\n mergeMap(action => { \r\n return this.gqlService.gql.brs.getBRSLinks(action.orgInfo)\r\n .pipe(switchMap(response => [\r\n BRSLinkActions.setBrsLinks({ brsLinks: response }),\r\n GQLActions.setGqlBRSLinksLoaded(),\r\n BRSLinkActions.setBrsLinksLoaded()\r\n ]\r\n ))\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlBRSLinks';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlBRSLinksError({ message : error.message }),\r\n BRSLinkActions.getBrsLinksError({ message : error.message })\r\n ];\r\n }))\r\n )\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and get company data\r\n 2. dispatch get vdcs action that calls graphql and returns the vdcs associated with the given user and saves it to store\r\n 3. dispatch load companys action and save the state to the store\r\n 4. dispatch load companyIdentifiers action and save the state to the store\r\n 5. dispatch load userLogins action and save the state to the store\r\n 6. dispatch load memberships action and save the state to the store\r\n 7. dispatch load orgs action and save the state to the store\r\n 8. dispatch load roles action and save the state to the store\r\n 9. dispatch load templates action adn save the state to the store\r\n */\r\n getGqlCompanyData$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlCompanyData),\r\n mergeMap(action => {\r\n\r\n /*** metric stat for data load time ***/\r\n let metricCloudManage = this.metricsSvc.getPageLoadTimeVm();\r\n let metricCompany = this.metricsSvc.getDataLoadTimeCompany();\r\n metricCloudManage.startTimeDuration = new Date(Date.now());\r\n metricCompany.startTimeDuration = new Date(Date.now());\r\n\r\n return this.gqlService.gql.portal.getCompanyData(action.userId, action.companyId)\r\n .pipe(switchMap(response => {\r\n\r\n /*** metric stat data load company time duration ***/\r\n metricCompany.endTimeDuration = new Date(Date.now());\r\n metricCompany.setTimeDuration();\r\n\r\n let selfServInput = new GetProductSelfServiceInput();\r\n selfServInput.customerId = response.company.companyNameShort;\r\n\r\n return [\r\n OrgActions.getOrgs(),\r\n GQLActions.getGqlVdcs( { userId: action.userId, dataLoadCloudManageMetric: metricCloudManage }),\r\n GQLActions.getGqlProviderTokens( { input: { userId: action.userId }}),\r\n CompanyActions.setCompanys({ companys: [response.company] }),\r\n CompanyIdentifierActions.setCompanyIdentifiers({ companyIdentifiers: response.companyIdentifiers === null ? new Array() : response.companyIdentifiers }),\r\n UserLoginActions.setUserLogins({ userLogins: response.logins }),\r\n MembershipActions.setMemberships({ memberships: response.memberships }),\r\n OrgActions.setOrgs({ orgs: response.orgs }),\r\n TemplatesActions.getTemplates({ getTemplatesInput: response.orgs }),\r\n RoleActions.setRoles( { roles: response.roles }),\r\n BackupAuthActions.setBackupAuthResults( { backupAuthResults: response.backupAuth }),\r\n GQLActions.setGqlCompanyDataLoaded(),\r\n OrgActions.setOrgsLoaded(),\r\n CompanyActions.setCompanysLoaded(),\r\n CompanyIdentifierActions.setCompanyIdentifiersLoaded(),\r\n MembershipActions.setMembershipLoaded(),\r\n RoleActions.setRoleLoaded(),\r\n BackupAuthActions.setBackupAuthDataLoaded({ sessions: response.backupAuth, companyIdentifiers: response.companyIdentifiers === null ? new Array() : response.companyIdentifiers }),\r\n UserLoginActions.setUserLoginLoaded(),\r\n ProductActions.getProductSelfServiceData({ getProductsSelfService: selfServInput }),\r\n MetricsActions.setMetric({metric: metricCompany, persistToDb: true })\r\n ];\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlCompanyData'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlCompanyDataError({ message : error.message }),\r\n CompanyActions.getCompanysError({ message : error.message }),\r\n CompanyIdentifierActions.getCompanyIdentifiersError({ message : error.message }),\r\n MembershipActions.getMembershipError({ message : error.message }),\r\n RoleActions.getRoleError({ message: error.message }),\r\n BackupAuthActions.setBackupAuthDataError({ message: error.message }),\r\n UserLoginActions.getUserLoginError({ message: error.message })\r\n ];\r\n }))\r\n)\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and get company data\r\n 1.5 reset Store to purge data that will be replaced with new channel company data\r\n 2. dispatch get vdcs action that calls graphql and returns the vdcs associated with the given user and saves it to store\r\n 3. dispatch load companys action and save the state to the store\r\n 4. dispatch load companyIdentifiers action and save the state to the store\r\n 5. dispatch load userLogins action and save the state to the store\r\n 6. dispatch load memberships action and save the state to the store\r\n 7. dispatch load orgs action and save the state to the store\r\n 8. dispatch load roles action and save the state to the store\r\n 9. dispatch \"loaded\" actions for retrieved data\r\n */\r\n getGqlChannelCompanyData$ = createEffect(() => this.actions$.pipe(\r\n ofType(GQLActions.getGqlChannelCompanyData),\r\n mergeMap(action => {\r\n\r\n /*** metric stat for data load time ***/\r\n let metricCloudManage = this.metricsSvc.getPageLoadTimeVm();\r\n let metricCompany = this.metricsSvc.getDataLoadTimeCompany();\r\n metricCloudManage.startTimeDuration = new Date(Date.now());\r\n metricCompany.startTimeDuration = new Date(Date.now());\r\n\r\n return this.gqlService.gql.portal.getCompanyData(action.userId, action.companyId)\r\n .pipe(switchMap(response => {\r\n\r\n let selfServInput = new GetProductSelfServiceInput();\r\n selfServInput.customerId = response.company.companyNameShort;\r\n\r\n /*** metric stat data load company time duration ***/\r\n metricCompany.endTimeDuration = new Date(Date.now());\r\n metricCompany.setTimeDuration();\r\n \r\n return [\r\n OrgActions.getOrgs(),\r\n VMFlatActions.setVmFlatsReloading(),\r\n GQLActions.getGqlVdcs( { userId: action.userId, dataLoadCloudManageMetric: metricCloudManage } ),\r\n GQLActions.getGqlProviderTokens( { input: { userId: action.userId }}),\r\n CompanyActions.setCompanys({ companys: [response.company] }),\r\n CompanyIdentifierActions.setCompanyIdentifiers({ companyIdentifiers: response.companyIdentifiers }),\r\n UserLoginActions.setUserLogins({ userLogins: response.logins }),\r\n MembershipActions.setMemberships({ memberships: response.memberships }),\r\n OrgActions.setOrgs({ orgs: response.orgs }),\r\n TemplatesActions.getTemplates({ getTemplatesInput: response.orgs }),\r\n RoleActions.setRoles( { roles: response.roles }),\r\n BackupAuthActions.setBackupAuthResults( { backupAuthResults: response.backupAuth }),\r\n GQLActions.setGqlCompanyDataLoaded(),\r\n OrgActions.setOrgsLoaded(),\r\n CompanyActions.setCompanysLoaded(),\r\n CompanyIdentifierActions.setCompanyIdentifiersLoaded(),\r\n MembershipActions.setMembershipLoaded(),\r\n RoleActions.setRoleLoaded(),\r\n BackupAuthActions.setBackupAuthDataLoaded({ sessions: response.backupAuth, companyIdentifiers: response.companyIdentifiers }),\r\n UserLoginActions.setUserLoginLoaded(),\r\n ProductActions.getProductSelfServiceData({ getProductsSelfService: selfServInput }),\r\n MetricsActions.setMetric({metric: metricCompany, persistToDb: true })\r\n ]\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'gql.effects.getGqlChannelCompanyData'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n GQLActions.setGqlCompanyDataError({ message : error.message }),\r\n CompanyActions.getCompanysError({ message : error.message }),\r\n CompanyIdentifierActions.getCompanyIdentifiersError({ message : error.message }),\r\n MembershipActions.getMembershipError({ message : error.message }),\r\n RoleActions.getRoleError({ message: error.message }),\r\n BackupAuthActions.setBackupAuthDataError({ message: error.message }),\r\n UserLoginActions.getUserLoginError({ message: error.message })\r\n ];\r\n }))\r\n )\r\n\r\n\r\n\r\n}","import { CreateProviderMembershipInput } from './../../core/gql/graphql/permissions/schema/input/createProviderMembershipInput';\nimport { CreatePortalMembershipInput } from './../../core/gql/graphql/permissions/schema/input/createPortalMembershipInput';\nimport { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { GqlService } from '@app/core/_services';\nimport { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\nimport * as MembershipActions from '../membership/membership.actions';\nimport { Membership } from '@app/core/gql/graphql/login/schema/type';\nimport { DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\nimport { Action, createAction } from '@ngrx/store';\nimport { NEVER, never } from 'rxjs';\n\n@Injectable()\nexport class MembershipEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger,\n private gqlService: GqlService,\n //private userService: UserService,\n private n3tKeycloakService: N3TKeycloakService) {}\n\n addMembership$ = createEffect(() => this.actions$.pipe (\n ofType(MembershipActions.addMembership),\n map(action => {\n switch (action.membership.applicationName) {\n case \"N3TLoginPortal\":\n let pmInput = new CreatePortalMembershipInput();\n pmInput.ApplicationId = action.membership.applicationId;\n pmInput.ApplicationLocationId = action.membership.locationId;\n pmInput.UserId = action.membership.userId;\n pmInput.Username = action.membership.username;\n pmInput.Password = action.membership.password;\n\n return this.gqlService.gql.permission.createPortalMembership(pmInput)\n .pipe(switchMap(response => {\n let foo = response[\"data\"];\n let memb = new Membership();\n\n memb.applicationName = action.membership.applicationName;\n memb.applicationId = action.membership.applicationId;\n memb.companyId = action.membership.companyId;\n memb.datacenterCode = action.membership.datacenterCode;\n memb.location = action.membership.location;\n memb.locationId = action.membership.locationId;\n memb.isApproved = foo.portalMembership.result.isApproved;\n memb.isLockedOut = foo.portalMembership.result.isLockedOut;\n memb.membershipId = foo.portalMembership.result.membershipId;\n\n return [\n MembershipActions.upsertMembership({membership: memb}),\n MembershipActions.setMembershipLoaded()\n ]\n\n })), catchError(error => {\n let errorContext = 'membership.effects.addMembership Portal';\n this.logger.error(error.message, errorContext, error);\n return [MembershipActions.getMembershipError({ message : error.message })];\n })\n case \"vCloudDirector\":\n let pInput = new CreateProviderMembershipInput();\n pInput.orgId = action.orgId;\n pInput.sessionId = action.sessionId;\n pInput.user = action.login;\n\n return this.gqlService.gql.permission.createProviderMembership(pInput)\n .pipe(switchMap(response => {\n let foo = response[\"data\"];\n let memb = new Membership();\n memb.applicationId = foo.orgUserResponse.result.applicationId.toString();\n memb.applicationName = foo.orgUserResponse.result.applicationName;\n memb.companyId = foo.orgUserResponse.result.companyId.toString();\n memb.datacenterCode = DatacenterLocations[foo.orgUserResponse.result.datacenterLocation].toString();\n memb.location = foo.orgUserResponse.result.location;\n memb.locationId = foo.orgUserResponse.result.applicationLocationId.toString();\n memb.isApproved = true;\n memb.isLockedOut = false;\n memb.membershipId = foo.orgUserResponse.result.membershipId;\n\n return [\n MembershipActions.upsertMembership({membership: memb}),\n MembershipActions.setMembershipLoaded()\n ]\n })), catchError(error => {\n let errorContext = 'membership.effects.addMembership Provider';\n this.logger.error(error.message, errorContext, error);\n return [MembershipActions.getMembershipError({ message : error.message })];\n })\n default:\n //return NEVER;\n return [\n MembershipActions.setMembershipLoaded()\n ] \n }\n }),\n switchMap(thing => {\n return [\n MembershipActions.setMembershipLoaded()\n ]\n //return NEVER\n })\n // mergeMap(action => {\n // // We will create the appropriate \"type\" of membership based on info from the action's Membership\n // switch (action.membership.applicationName) {\n // case \"N3TLoginPortal\":\n // let pmInput = new CreatePortalMembershipInput();\n // pmInput.ApplicationId = action.membership.applicationId;\n // pmInput.ApplicationLocationId = action.membership.locationId;\n // pmInput.UserId = action.membership.userId;\n // pmInput.Username = action.membership.username;\n // pmInput.Password = action.membership.password;\n\n // return this.gqlService.gql.permission.createPortalMembership(pmInput)\n // .pipe(switchMap(response => {\n // let foo = response[\"data\"];\n // let memb = new Membership();\n\n // memb.applicationName = action.membership.applicationName;\n // memb.applicationId = action.membership.applicationId;\n // memb.companyId = action.membership.companyId;\n // memb.datacenterCode = action.membership.datacenterCode;\n // memb.location = action.membership.location;\n // memb.locationId = action.membership.locationId;\n // memb.isApproved = foo.portalMembership.result.isApproved;\n // memb.isLockedOut = foo.portalMembership.result.isLockedOut;\n // memb.membershipId = foo.portalMembership.result.membershipId;\n\n // return [\n // MembershipActions.upsertMembership({membership: memb}),\n // MembershipActions.setMembershipLoaded()\n // ]\n\n // })), catchError(error => {\n // let errorContext = 'membership.effects.addMembership Portal';\n // this.logger.error(error.message, errorContext, error);\n // return [MembershipActions.getMembershipError({ message : error.message })];\n // })\n // case \"vCloudDirector\":\n // let pInput = new CreateProviderMembershipInput();\n // pInput.orgId = action.orgId;\n // pInput.sessionId = action.sessionId;\n // pInput.user = action.login;\n\n // return this.gqlService.gql.permission.createProviderMembership(pInput)\n // .pipe(switchMap(response => {\n // let foo = response[\"data\"];\n // let memb = new Membership();\n // memb.applicationId = foo.orgUserResponse.result.applicationId.toString();\n // memb.applicationName = foo.orgUserResponse.result.applicationName;\n // memb.companyId = foo.orgUserResponse.result.companyId.toString();\n // memb.datacenterCode = DatacenterLocations[foo.orgUserResponse.result.datacenterLocation].toString();\n // memb.location = foo.orgUserResponse.result.location;\n // memb.locationId = foo.orgUserResponse.result.applicationLocationId.toString();\n // memb.isApproved = true;\n // memb.isLockedOut = false;\n // memb.membershipId = foo.orgUserResponse.result.membershipId;\n\n // return [\n // MembershipActions.upsertMembership({membership: memb}),\n // MembershipActions.setMembershipLoaded()\n // ]\n // })), catchError(error => {\n // let errorContext = 'membership.effects.addMembership Provider';\n // this.logger.error(error.message, errorContext, error);\n // return [MembershipActions.getMembershipError({ message : error.message })];\n // })\n // default:\n // break;\n // }\n // }\n // )\n ))\n\n private createPortalMembership(): Action {\n let act = createAction('DoSomething');\n return act;\n }\n\n // getCompanyUsers$ = createEffect(() => this.actions$.pipe (\n // ofType(CompanyUserActions.getCompanyUsers),\n // mergeMap(action => {\n // return this.gqlService.gql.permission.getCompanyUsers(action.getCompanyUsers)\n // .pipe(switchMap(response => {\n // //response.data[\"getCompanyUsers\"].companyUsersResponse.result\n // let foo = response[\"data\"];\n // let bar = foo[\"getCompanyUsers\"];\n \n // return [\n // CompanyUserActions.setCompanyUsersLoaded(),\n // CompanyUserActions.upsertCompanyUsers({ companyUsers: bar.companyUsersResponse.result })\n // ]\n \n // }))\n // }), catchError(error => {\n // let errorContext = 'company-user.effects.getCompanyUser';\n // this.logger.error(error.message, errorContext, error);\n // return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\n // }))\n // )\n\n}\n","import { UUID } from 'angular2-uuid';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\nimport * as NetworkActions from './network.actions';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\n\n@Injectable()\nexport class NetworkEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger) {}\n\n /*\n side effects:\n 1. generate a unique id for a network\n 2. return result to action stream to store the state\n */\n generateNetworkId$ = createEffect(() => this.actions$.pipe(\n ofType(NetworkActions.addNetwork),\n map(action => {\n action.network.id = UUID.UUID();\n return action;\n }), catchError(error => {\n let errorContext = 'network.effects.addNetwork';\n this.logger.error(error.message, errorContext, error);\n return [NetworkActions.generateNetworkTokenError({ message : error.message })];\n }))\n );\n\n /*\n side effects:\n 1. generate a unique id for a list of network\n 2. return result to action stream to store the state\n */\n generatedNetworkIds$ = createEffect(() => this.actions$.pipe(\n ofType(NetworkActions.addNetworks),\n map(action => {\n action.networks.forEach(network => {\n network.id = UUID.UUID();\n });\n return action;\n }), catchError(error => {\n let errorContext = 'network.effects.addNetworks';\n this.logger.error(error.message, errorContext, error);\n return [NetworkActions.generateNetworkTokenError({ message : error.message })];\n }))\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect } from '@ngrx/effects';\n\n@Injectable()\nexport class OrgEffects {\n\n constructor(private actions$: Actions) {}\n\n}\n","import { UUID } from 'angular2-uuid';\nimport { Injectable } from '@angular/core';\nimport { catchError, map } from 'rxjs/operators';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport * as ProviderTokenActions from './provider-token.actions';\n\n@Injectable()\nexport class ProviderTokenEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger) {}\n\n /*\n side effects:\n 1. generate a unique id for a provider token\n 2. return result to action stream to store the state\n */\n generateTokenId$ = createEffect(() => this.actions$.pipe(\n ofType(ProviderTokenActions.addProviderToken),\n map(action => {\n action.providerToken.id = UUID.UUID();\n return action;\n }), catchError(error => {\n let errorContext = 'provider-token.effects.addProviderToken';\n this.logger.error(error.message, errorContext, error);\n return [ProviderTokenActions.generateProviderTokenError({ message : error.message })];\n }))\n );\n\n /*\n side effects:\n 1. generate a unique id for a list of provider tokens\n 2. return result to action stream to store the state\n */\n generatedTokenIds$ = createEffect(() => this.actions$.pipe(\n ofType(ProviderTokenActions.addProviderTokens),\n map(action => {\n action.providerTokens.forEach(token => {\n token.id = UUID.UUID();\n });\n return action;\n }), catchError(error => {\n let errorContext = 'provider-token.effects.addProviderTokens';\n this.logger.error(error.message, errorContext, error);\n return [ProviderTokenActions.generateProviderTokensError({ message : error.message })];\n }))\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\n\n\n@Injectable()\nexport class RoleEffects {\n\n constructor(private actions$: Actions) {}\n\n}\n","import { Injectable } from '@angular/core';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { GqlService } from '@app/core/_services/gql.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\n\nimport * as VmFlatActions from '../vmFlat/vm-flat.actions';\nimport * as TaskActions from '../task/task.actions';\n\n@Injectable()\nexport class TaskEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger,\n private gqlService: GqlService) {}\n\n /*\n side effects:\n 1. call graphql service and update the power status of the VM\n 2. dispatch power toggle action to save the state to the store\n */\n // addTask$ = createEffect(() => this.actions$.pipe(\n // ofType(TaskActions.addTask),\n // mergeMap(action => {\n // return this.gqlService.gql.compute.updatePowerStatus(action.powerStatus) // this.gqlService.gql.network.getNetworksByLocation(action.input)\n // .pipe(switchMap(response => {\n // let tmp1 = response[\"data\"];\n // let tmp2 = tmp1[\"updatePowerStatus\"];\n // //let result = tmp2;\n \n // if (!tmp2.success) {\n // let errorContext = 'task.effects.addTask';\n // this.logger.error(tmp2.message, errorContext);\n // return [VmFlatActions.togglePowerStatusError({ message : tmp2.message })];\n // }\n\n \n // return [\n // TaskActions.addTask((tmp2 as any).powerStatus.result.result)\n // // NetworkActions.setNetworks({ networks }),\n // // GQLActions.setGqlNetworkDataLoaded()\n // ]\n // })) \n // }), catchError(error => {\n // let errorContext = 'task.effects.addTask';\n // this.logger.error(error.message, errorContext, error);\n // return [VmFlatActions.togglePowerStatusError({ message : error.message })];\n // }))\n // )\n\n /*\n side effects:\n 1. call graphql service and retrieve Tasks\n 2. Set Get Tasks Loaded\n 3. dispatch Set Tasks with results to save the state to the store\n */\n getTasks$ = createEffect(() => this.actions$.pipe (\n ofType(TaskActions.getTasks),\n mergeMap(action => {\n return this.gqlService.gql.compute.getTasks(action.getTasksInput)\n .pipe(switchMap(response => {\n let foo = response[\"data\"];\n let bar = foo[\"Tasks\"];\n\n return [\n TaskActions.getTasksLoaded(),\n TaskActions.upsertTasks({ tasks: bar.tasksResponse }),\n TaskActions.setTasksLoaded()\n ]\n\n }))\n }), catchError(error => {\n let errorContext = 'task.effects.getTasks';\n this.logger.error(error.message, errorContext, error);\n return [TaskActions.getTasksError({ message : error.message })];\n }))\n )\n \n getAllTasks$ = createEffect(() => this.actions$.pipe (\n ofType(TaskActions.getAllTasks),\n mergeMap(action => {\n return this.gqlService.gql.compute.getAllTasks(action.getAllTasksInput, action.pollingInterval)\n .pipe(switchMap(response => {\n let foo = response[\"data\"];\n let bar = foo[\"getAllTasks\"];\n\n return [\n TaskActions.getTasksLoaded(),\n TaskActions.upsertTasks({ tasks: bar.tasksResponse }),\n TaskActions.setTasksLoaded()\n ]\n\n }))\n }), catchError(error => {\n let errorContext = 'task.effects.getAllTasks';\n this.logger.error(error.message, errorContext, error);\n return [TaskActions.getTasksError({ message : error.message })];\n }))\n )\n \n\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect } from '@ngrx/effects';\n\n@Injectable()\nexport class UserLoginEffects {\n\n constructor(private actions$: Actions) {}\n\n}\n","import { VmFlatEffects } from './../vmFlat/vm-flat.effects';\nimport { of } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport * as VdcActions from './vdc.actions';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport * as VmFlatActions from '../vmFlat/vm-flat.actions';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\nimport { CloudmanageService } from '@app/core/_services/cloudmanage.service';\n\n@Injectable()\nexport class VdcEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger,\n private cloudmanageService: CloudmanageService) {}\n\n /*\n side effects:\n 1. call cloudManage service to flatten vdcs (VDC -> VAPP -> VM) and extract VM's.\n 2. dispatch a load state action in the vmFlat store state using the flattened VM's\n */\n flattenVdcs$ = createEffect(() => this.actions$.pipe(\n ofType(VdcActions.flattenVdcs),\n mergeMap(action => {\n return of(this.cloudmanageService.flattenCompute(action.vdcs))\n .pipe(switchMap(vmsFlats => [\n VmFlatActions.getVmFlats(),\n VmFlatActions.setVmFlats({ vmFlats: vmsFlats }),\n VmFlatActions.setVmFlatsLoaded(),\n ]))\n }), catchError(error => {\n let errorContext = 'vdc.effects.flattenVdcs';\n this.logger.error(error.message, errorContext, error);\n return [\n VdcActions.setFlattenVdcsError({ message : error.message }),\n VmFlatActions.getVmFlatsError({ message : error.message }),\n ];\n }))\n )\n}\n","import { CloudmanageService } from './../../core/_services/cloudmanage.service';\nimport { Injectable } from '@angular/core';\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\nimport { GqlService } from '@app/core/_services/gql.service';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\n\nimport * as VmFlatActions from '../vmFlat/vm-flat.actions';\nimport * as TaskActions from '../task/task.actions';\nimport { Task, TaskOwner, TaskUser, VMFlat } from '@app/core/gql/graphql/compute/schema/type';\nimport { Update } from '@ngrx/entity';\n\n@Injectable()\nexport class VmFlatEffects {\n\n constructor(private actions$: Actions,\n private logger: N3TLogger,\n private gqlService: GqlService,\n private cloudmanageService: CloudmanageService) {}\n\n /*\n side effects:\n 1. call graphql service and update the power status of the VM\n 2. dispatch power toggle action to save the state to the store\n 3. dispatch update action on VMFlat to update power status\n */\n togglePowerStatus$ = createEffect(() => this.actions$.pipe(\n ofType(VmFlatActions.togglePowerStatus),\n mergeMap(action => {\n return this.gqlService.gql.compute.updatePowerStatus(action.powerStatus) \n .pipe(switchMap(response => {\n let tmp1 = response[\"data\"];\n let tmp2 = tmp1[\"updatePowerStatus\"];\n let task = {} as Task;\n let vmUpdate: Update = {\n id: action.vmFlat.id,\n changes: {}\n };\n \n if (!tmp2.success) {\n let errorContext = 'vm-flat.effects.togglePowerStatus';\n this.logger.error(tmp2.message, errorContext);\n return [VmFlatActions.togglePowerStatusError({ message : tmp2.message })];\n } else {\n task = tmp2.powerStatus.result.result;\n task.datacenterCode = this.cloudmanageService.getDatacenterLocationFromUrl(task.href);\n task.owner = {} as TaskOwner;\n task.owner.name = \"\";\n task.user = {} as TaskUser;\n task.user.name = \"\";\n task.id = task.id.replace(\"urn:vcloud:task:\", \"\"); // remove non-guid part of task id\n\n // Set up info for updating the VMFlat with new power status\n const changes = {\n status: this.cloudmanageService.mapPowerStatusFromTask(task.operationName)\n };\n \n vmUpdate = {\n id: action.vmFlat.id,\n changes\n }\n\n }\n \n return [\n TaskActions.upsertTask({ task: task }),\n VmFlatActions.updateVmFlat({vmFlat: vmUpdate})\n ]\n })) \n }), catchError(error => {\n let errorContext = 'vm-flat.effects.togglePowerStatus';\n this.logger.error(error.message, errorContext, error);\n return [VmFlatActions.togglePowerStatusError({ message : error.message })];\n }))\n )\n\n}\n","import { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport { TypeVMSnapshot } from '@app/core/gql/graphql/compute/schema/type';\r\nimport * as SnapshotActions from './snapshot.actions';\r\n\r\nexport const snapshotsFeatureKey = 'snapshots';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n snapshotResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: typeVMSnapshot => typeVMSnapshot.snap.href\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n snapshotResult: new N3TResult()\r\n});\r\n\r\nconst snapshotReducer = createReducer(\r\n initialState,\r\n on(SnapshotActions.addTypeVMSnapshot,\r\n (state, action) => adapter.addOne(action.typeVMSnapshot, state)\r\n ),\r\n on(SnapshotActions.upsertTypeVMSnapshot,\r\n (state, action) => adapter.upsertOne(action.typeVMSnapshot, state)\r\n ),\r\n on(SnapshotActions.addTypeVMSnapshots,\r\n (state, action) => adapter.addMany(action.typeVMSnapshots, state)\r\n ),\r\n on(SnapshotActions.upsertTypeVMSnapshots,\r\n (state, action) => adapter.upsertMany(action.typeVMSnapshots, state)\r\n ),\r\n on(SnapshotActions.updateTypeVMSnapshot,\r\n (state, action) => adapter.updateOne(action.typeVMSnapshot, state)\r\n ),\r\n on(SnapshotActions.updateTypeVMSnapshots,\r\n (state, action) => adapter.updateMany(action.typeVMSnapshots, state)\r\n ),\r\n on(SnapshotActions.deleteTypeVMSnapshot,\r\n (state, action) => adapter.removeOne(action.id, state)\r\n ),\r\n on(SnapshotActions.deleteTypeVMSnapshots,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(SnapshotActions.clearTypeVMSnapshots,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(SnapshotActions.getTypeVMSnapshotStatus, \r\n (state) => ({ ...state, snapshotResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ), \r\n on(SnapshotActions.getTypeVMSnapshotStatusError, \r\n (state, prop) => ({ ...state, snapshotResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(SnapshotActions.setTypeVMSnapshotStatusLoaded, \r\n (state) => ({ ...state, snapshotResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n )\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return snapshotReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import { Injectable } from '@angular/core';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { GqlService } from '@app/core/_services';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\r\n\r\n/*** action exports ***/\r\nimport * as SnapshotActions from '../snapshot/snapshot.actions';\r\n\r\n@Injectable()\r\nexport class SnapshotEffects {\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService\r\n ) {}\r\n\r\n getTypeVMSnapshotStatus$ = createEffect(() => this.actions$.pipe(\r\n ofType(SnapshotActions.getTypeVMSnapshotStatus),\r\n mergeMap(action => {\r\n return this.gqlService.gql.compute.getSnapProtectStatus(action.getSnapProtectStatusInput)\r\n .pipe(switchMap(response => {\r\n let resp = response[\"data\"];\r\n let result = resp.getSnapProtectStatus;\r\n let snap = resp.getSnapProtectStatus[\"Snapshot\"];\r\n\r\n if( result.success === true ) {\r\n return [\r\n SnapshotActions.upsertTypeVMSnapshot({ typeVMSnapshot: snap }),\r\n SnapshotActions.setTypeVMSnapshotStatusLoaded(),\r\n ]\r\n } else {\r\n return [SnapshotActions.getTypeVMSnapshotStatusError({ message: \"Error retrieving snapshot: \" + result.message })]; \r\n }\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'snapshot.effects.getTypeVMSnapshotStatus';\r\n this.logger.error(error.message, errorContext, error);\r\n return [SnapshotActions.getTypeVMSnapshotStatusError({ message: error.message })];\r\n }))\r\n )\r\n\r\n}\r\n","import * as snapshot from '.';\r\nimport * as fromSnapshot from './snapshot.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectSnapshotState = createFeatureSelector(\"snapshots\");\r\n\r\nexport const selectSnapshotById = (id:string) => createSelector(\r\n selectSnapshotState,\r\n snapshotState => snapshotState.entities[id]\r\n);\r\n\r\nexport const selectAllSnapshots = createSelector(\r\n selectSnapshotState,\r\n fromSnapshot.selectAll\r\n);","import { DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums/index';\r\nimport { Org } from '@app/core/gql/graphql/shared/schema/type';\r\n\r\nexport class GetTemplatesInput {\r\n datacenterLocations: DatacenterLocations[];\r\n }","import { Injectable } from '@angular/core';\r\nimport { DatacenterLocations } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { GetTemplatesInput } from '@app/core/gql/graphql/templates/schema/input';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { GqlService } from '@app/core/_services/gql.service';\r\nimport { MetricsService } from '@app/core/_services/metrics.service';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\r\nimport * as MetricsActions from '../metrics/metrics.actions';\r\n\r\nimport * as TemplatesActions from '../templates/templates.actions';\r\n\r\n@Injectable()\r\nexport class TemplatesEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService,\r\n private metricsSvc: MetricsService) {}\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and retrieve Templates\r\n 2. Set Get Templates Loaded\r\n 3. dispatch Set Templates with results to save the state to the store\r\n */\r\n getTemplates$ = createEffect(() => this.actions$.pipe (\r\n ofType(TemplatesActions.getTemplates),\r\n mergeMap(action => {\r\n\r\n /*** metric stat for data load time ***/\r\n let metric = this.metricsSvc.getDataLoadTimeTemplates();\r\n metric.startTimeDuration = new Date(Date.now());\r\n\r\n let locs = new GetTemplatesInput();\r\n locs.datacenterLocations = new Array();\r\n\r\n action.getTemplatesInput.forEach(function (org) {\r\n locs.datacenterLocations.push(org.datacenterLocation);\r\n });\r\n \r\n return this.gqlService.gql.templates.getTemplates(locs)\r\n .pipe(switchMap(response => {\r\n\r\n /*** set the time duration for the load ***/\r\n metric.endTimeDuration = new Date(Date.now());\r\n metric.setTimeDuration();\r\n\r\n let foo = response[\"data\"];\r\n let bar = foo[\"Templates\"];\r\n\r\n return [\r\n TemplatesActions.getTemplatesLoaded(),\r\n TemplatesActions.upsertTemplates({ templates: bar.templates }),\r\n TemplatesActions.setTemplatesLoaded(),\r\n MetricsActions.setMetric({metric: metric, persistToDb: true })\r\n ];\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'templates.effects.getTemplates';\r\n this.logger.error(error.message, errorContext, error);\r\n return [TemplatesActions.getTemplatesError({ message : error.message })];\r\n }))\r\n )\r\n \r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { GqlService } from '@app/core/_services/gql.service';\r\nimport { Actions } from '@ngrx/effects';\r\n\r\nimport * as SelectedTemplatesActions from '../templates/templates.actions';\r\n\r\n@Injectable()\r\nexport class SelectedTemplatesEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n /*\r\n side effects:\r\n 1. call graphql service and retrieve Templates\r\n 2. Set Get Templates Loaded\r\n 3. dispatch Set Templates with results to save the state to the store\r\n */\r\n\r\n \r\n\r\n}\r\n","import { GetProductsInput } from './../../core/gql/graphql/products/schema/input/getProductsInput';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport * as ProductActions from './product.actions';\r\nimport { GqlService } from '@app/core/_services';\r\n\r\n@Injectable()\r\nexport class ProductEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private gqlService: GqlService,\r\n private logger: N3TLogger) {}\r\n\r\n /*\r\n side effects:\r\n 1. Get list of Products\r\n 2. Return result to action stream to store the state\r\n */\r\n getProducts$ = createEffect(() => this.actions$.pipe(\r\n ofType(ProductActions.getProductData),\r\n mergeMap(action => {\r\n return this.gqlService.gql.products.getProducts(action.getProducts)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let bar = foo[\"Products\"];\r\n\r\n return [\r\n ProductActions.setProductDataLoaded(),\r\n ProductActions.setProducts({ products: bar.ProductResponse.result })\r\n ]}))\r\n }), catchError(error => {\r\n let errorContext = 'product.effects.getProducts'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n ProductActions.setProductDataError({ message : error.message })\r\n ];\r\n })\r\n ))\r\n\r\n /*\r\n side effects:\r\n 1. Get list of Self-Service Products\r\n 2. Return result to action stream to store the state\r\n */\r\n getProductsSelfService$ = createEffect(() => this.actions$.pipe(\r\n ofType(ProductActions.getProductSelfServiceData),\r\n mergeMap(action => {\r\n return this.gqlService.gql.products.getProductSelfServicePricing(action.getProductsSelfService)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let bar = foo[\"ProductSelfServicePricing\"];\r\n let resp = bar[\"ProductSelfServiceResponse\"];\r\n let res = resp[\"result\"];\r\n let containers = res[\"containers\"];\r\n if (containers.length === 0 ) {\r\n return [\r\n ProductActions.setProductSelfServiceDataLoaded()\r\n ]\r\n } \r\n let products = containers[0][\"products\"];\r\n let reqProducts = products[\"requestedProducts\"];\r\n\r\n return [\r\n ProductActions.setProductSelfServiceDataLoaded(),\r\n ProductActions.setProducts({ products: reqProducts })\r\n ]\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'product.effects.getProductsSelfService'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n ProductActions.setProductSelfServiceDataError({ message : error.message })\r\n ];\r\n })\r\n ))\r\n}\r\n","import { TypeHost } from \"./\";\r\nimport { ResponseStatus } from \"../../../shared/schema/type\";\r\n\r\nexport class GetBackupsAllResponse {\r\n hostname: String\r\n result: TypeHost[]\r\n responseStatus: ResponseStatus\r\n}\r\n","import { GqlService } from './../../core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport * as DPSActions from './dps.actions';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { GetBackupsAllResponse, TypeHost } from '@app/core/gql/graphql/dps/schema/type';\r\nimport { MetricsService } from '@app/core/_services/metrics.service';\r\nimport * as MetricsActions from '../metrics/metrics.actions';\r\n\r\n@Injectable()\r\nexport class DPSEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService,\r\n private metricsSvc: MetricsService) {}\r\n /*\r\n side effects:\r\n 1. Get list of all Backups\r\n 2. return result to action stream to store the state\r\n */\r\n getBackupsAll$ = createEffect(() => this.actions$.pipe(\r\n ofType(DPSActions.getBackupsAllData),\r\n mergeMap(action => {\r\n\r\n /*** metric stat for data load time dps ***/\r\n let metric = this.metricsSvc.getDataLoadTimeDps();\r\n metric.startTimeDuration = new Date(Date.now());\r\n\r\n return this.gqlService.gql.dps.getBackupsAll(action.getBackupsAll)\r\n .pipe(switchMap(response => {\r\n\r\n /*** metric stat set duration ***/\r\n metric.endTimeDuration = new Date(Date.now());\r\n metric.setTimeDuration();\r\n\r\n let foo = response[\"data\"];\r\n let dat = foo[\"Backups\"];\r\n\r\n if (dat.success) {\r\n let bar = dat[\"backupsAllResponse\"];\r\n if (bar === null) {\r\n bar = new GetBackupsAllResponse();\r\n bar.result = new Array();\r\n }\r\n\r\n return [\r\n MetricsActions.setMetric({ metric: metric, persistToDb: true }),\r\n DPSActions.setBackupsAllDataLoaded(),\r\n DPSActions.setDPSResults({ dpsResults: bar.result })\r\n ]\r\n } else {\r\n let errorContext = 'dps.effects.getBackupsAll'; \r\n this.logger.error(dat.message, errorContext, dat.message);\r\n return [\r\n DPSActions.setBackupsAllDataError({ message : dat.message })\r\n ];\r\n }\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'dps.effects.getBackupsAll'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n DPSActions.setBackupsAllDataError({ message : error.message })\r\n ];\r\n })\r\n ));\r\n\r\n\r\n}\r\n","import { Guid } from 'guid-typescript';\r\n\r\nexport class CompanyIdentifier {\r\n companyIdentifierId: number;\r\n companyId: Guid;\r\n locationId: Guid;\r\n applicationId: Guid;\r\n orgName: string;\r\n orgUserName: string;\r\n orgIdentifier: string;\r\n isRemote: boolean;\r\n applicationName: string;\r\n companyName: string;\r\n location: string;\r\n locationType: string;\r\n datacenterCode: string;\r\n datacenterName: string;\r\n companyNameShort: string;\r\n}","import { CompanyIdentifierInput } from \"./companyIdentifierInput\";\r\nimport { SessionInput } from \"./sessionInput\";\r\n\r\nexport class GetBackupsAllInput {\r\n sessionIds: SessionInput[];\r\n companyIdentifiers: CompanyIdentifierInput[];\r\n}\r\n","import { App, DatacenterLocations } from \"@app/core/gql/graphql/shared/schema/enums\"\r\n\r\nexport class SessionInput {\r\n datacenterLocation: DatacenterLocations \r\n application: App \r\n sessionId: string;\r\n }\r\n ","\r\n\r\nexport class GetBackupClusterInfoInput {\r\n sessionId: string;\r\n datacenterLocation: string;\r\n}","import { Company } from '@app/core/gql/graphql/company/schema/type';\r\nimport { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type/index';\r\nimport { GetBackupsAllInput } from '@app/core/gql/graphql/dps/schema/input';\r\nimport { CompanyIdentifierInput } from '@app/core/gql/graphql/dps/schema/input/companyIdentifierInput';\r\nimport { SessionInput } from '@app/core/gql/graphql/dps/schema/input/sessionInput';\r\nimport { GqlService } from './../../core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as BackupAuthActions from '../backupAuth/backup-auth.actions';\r\nimport * as DPSActions from '../dps/dps.actions';\r\nimport * as BackupClusterActions from '../backupClusterInfo/backup-cluster-info.actions';\r\nimport { GetBackupClusterInfoInput } from '@app/core/gql/graphql/backup/schema/input';\r\nimport { DatacenterLocations } from '@app/core/_models/enums';\r\n\r\n\r\n@Injectable()\r\nexport class BackupAuthEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n /*\r\n side effects:\r\n 1. Get list of ...\r\n 2. return result to action stream to store the state\r\n */\r\n //dispatchGetDPSResults(getBackupsAllInput: GetBackupsAllInput)\r\n setBackupAuthDataLoaded$ = createEffect(() => this.actions$.pipe(\r\n ofType(BackupAuthActions.setBackupAuthDataLoaded),\r\n mergeMap(action => {\r\n let locHelper = new Array();\r\n let sessionsInput = new Array();\r\n let clusters = new Array();\r\n action.sessions.forEach(sess => {\r\n let session = new SessionInput();\r\n\r\n if (sess.sessionId !== null && sess.sessionId !== undefined) {\r\n session.application = sess.application;\r\n session.datacenterLocation = sess.datacenterLocation;\r\n session.sessionId = sess.sessionId;\r\n\r\n locHelper.push(sess.datacenterLocation.toString());\r\n\r\n sessionsInput.push(session);\r\n\r\n // get data for retrieving Backup Cluster info\r\n let cluster = new GetBackupClusterInfoInput();\r\n cluster.datacenterLocation = sess.datacenterLocation.toString();\r\n cluster.sessionId = sess.sessionId;\r\n clusters.push(cluster);\r\n }\r\n })\r\n\r\n let identifiers = new Array();\r\n \r\n if (action.companyIdentifiers !== null ) {\r\n action.companyIdentifiers.forEach(ci => {\r\n if (ci.applicationName === \"Actifio\") {\r\n let newCompanyId = new CompanyIdentifier();\r\n newCompanyId.applicationName = ci.applicationName;\r\n newCompanyId.companyId = ci.companyId;\r\n newCompanyId.companyIdentifierId = ci.companyIdentifierId;\r\n newCompanyId.datacenterCode = ci.location.slice(0, 3).toUpperCase();\r\n newCompanyId.orgUserName = ci.orgUserName;\r\n newCompanyId.orgIdentifier = ci.orgIdentifier;\r\n newCompanyId.isRemote = ci.isRemote;\r\n \r\n let test = locHelper.find(element => element === newCompanyId.datacenterCode);\r\n if (test !== undefined) {\r\n identifiers.push(newCompanyId);\r\n }\r\n }\r\n })\r\n }\r\n\r\n let getBackupsAllInput = new GetBackupsAllInput();\r\n getBackupsAllInput.companyIdentifiers = identifiers;\r\n getBackupsAllInput.sessionIds = sessionsInput;\r\n\r\n return [\r\n DPSActions.getBackupsAllData({ getBackupsAll: getBackupsAllInput }),\r\n BackupClusterActions.getBackupClustersInfoData({ getBackupClustersInfoInput: clusters })\r\n ] \r\n }), catchError(error => {\r\n let errorContext = 'backupAuth.effects.setBackupAuthDataLoaded';\r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n // GQLActions.setGqlAuthUserError({ message : error.message }),\r\n // AuthUserActions.getAuthUsersError({ message : error.message })\r\n ];\r\n }))\r\n )\r\n\r\n}\r\n","import { GetBackupClusterInfoInput } from './../../core/gql/graphql/backup/schema/input/getBackupClusterInfoInput';\r\nimport { GqlService } from '@app/core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { combineLatest, Observable, of } from 'rxjs';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as BackupClusterInfoActions from './backup-cluster-info.actions';\r\nimport { ActifioCluster, GetBackupClusterInfoResponse } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\n@Injectable()\r\nexport class BackupClusterInfoEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n /*\r\n side effects:\r\n 1. Get a Backup Cluster Info\r\n 2. return result to action stream to store the state\r\n */\r\n getBackupClusterInfoData$ = createEffect(() => this.actions$.pipe(\r\n ofType(BackupClusterInfoActions.getBackupClusterInfoData),\r\n mergeMap(action => {\r\n return this.gqlService.gql.backup.getBackupClusterInfo(action.getBackupClusterInfoInput)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let dat = foo[\"BackupClusterInfo\"];\r\n\r\n if (dat.success) {\r\n let bar = dat[\"backupClusterInfo\"];\r\n\r\n return [\r\n BackupClusterInfoActions.setBackupClustersInfoDataLoaded(),\r\n BackupClusterInfoActions.setBackupClusterInfoResults({ backupClusterInfoResults: bar.result })\r\n ]\r\n } else {\r\n let errorContext = 'backup-cluster-info.effects.getBackupClusterInfoAll'; \r\n this.logger.error(dat.message, errorContext, dat.message);\r\n return [\r\n BackupClusterInfoActions.setBackupClusterInfoDataError({ message : dat.message })\r\n ];\r\n }\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'backup-cluster-info.effects.getBackupClusterInfoAll'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n BackupClusterInfoActions.setBackupClusterInfoDataError({ message : error.message })\r\n ];\r\n })\r\n ));\r\n\r\n // function getTransactionByID(transactionId) {\r\n // let count = 0;\r\n // return Rx.Observable.of(transactionId)\r\n // .delay(Math.random() * 4000)\r\n // .map(x => `${x}: ${count++} `)\r\n // .repeat();\r\n // }\r\n \r\n // function getTransactionsByIDs(transactionsIDs){\r\n // return Rx.Observable.combineLatest(transactionsIDs.map(transactionID => getTransactionByID(transactionID)));\r\n // }\r\n \r\n // const transactionsIDs = [1,2,3];\r\n // getTransactionsByIDs(transactionsIDs)\r\n // .take(10)\r\n // .subscribe(x => { console.log(x); });\r\n \r\n getBackupClustersInfoData$ = createEffect(() => this.actions$.pipe(\r\n ofType(BackupClusterInfoActions.getBackupClustersInfoData),\r\n mergeMap(action => {\r\n return this.getBackupClustersHelper(action.getBackupClustersInfoInput)\r\n .pipe(switchMap(response => {\r\n let foo = response;\r\n let bar = foo as Array;\r\n\r\n let clusterResults = new Array();\r\n\r\n bar.forEach(clustGroup => {\r\n clustGroup.forEach(clust => {\r\n clusterResults.push(clust);\r\n })\r\n })\r\n\r\n return [\r\n BackupClusterInfoActions.setBackupClusterInfoResults({ backupClusterInfoResults: clusterResults }),\r\n BackupClusterInfoActions.setBackupClustersInfoDataLoaded(),\r\n ]\r\n }))\r\n })\r\n )) \r\n\r\n\r\n getBackupClusterHelper(getBackupClusterInfoData: GetBackupClusterInfoInput): Observable {\r\n return this.gqlService.gql.backup.getBackupClusterInfo(getBackupClusterInfoData)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let dat = foo[\"BackupClusterInfo\"];\r\n if (dat.success) {\r\n let bar = dat[\"backupClusterInfo\"];\r\n return of(bar);\r\n } else {\r\n return of(new Array());\r\n }\r\n }))\r\n }\r\n\r\n getBackupClustersHelper(getBackupClusterInfoData: GetBackupClusterInfoInput[]): Observable {\r\n return combineLatest(getBackupClusterInfoData.map(backupCluster => this.getBackupClusterHelper(backupCluster)));\r\n }\r\n\r\n}\r\n","import { Company } from '@app/core/gql/graphql/company/schema/type';\r\nimport { CompanyIdentifier } from 'src/app/core/gql/graphql/company/schema/type/index';\r\nimport { GetBackupsAllInput } from '@app/core/gql/graphql/dps/schema/input';\r\nimport { CompanyIdentifierInput } from '@app/core/gql/graphql/dps/schema/input/companyIdentifierInput';\r\nimport { SessionInput } from '@app/core/gql/graphql/dps/schema/input/sessionInput';\r\nimport { GqlService } from './../../core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as BackupActions from '../backup/backup.actions';\r\n\r\n@Injectable()\r\nexport class BackupEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n}\r\n","import { GqlService } from './../../core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as BackupJobActions from '../backupJob/backup-job.actions';\r\n\r\n@Injectable()\r\nexport class BackupJobEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n getBackupJob$ = createEffect(() => this.actions$.pipe (\r\n ofType(BackupJobActions.getBackupJob),\r\n mergeMap(action => {\r\n return this.gqlService.gql.dps.getDPSJobStatus(action.getDPSJobStatusInput, action.pollingInterval)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let bar = foo[\"getDPSJobStatus\"];\r\n\r\n return [\r\n BackupJobActions.setBackupJobDataLoaded(),\r\n BackupJobActions.upsertBackupJobResult({ backupJobResult: bar.dpsJobStatus })\r\n ]\r\n\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'backup-job.effects.getBackupJob';\r\n this.logger.error(error.message, errorContext, error);\r\n return [BackupJobActions.setBackupJobDataError({ message : error.message })];\r\n }))\r\n )\r\n\r\n // getBackupProcessJob$ = createEffect(() => this.actions$.pipe (\r\n // ofType(BackupJobActions.getBackupProcessJob),\r\n // mergeMap(action => {\r\n // return this.gqlService.gql.dps.getProcessJobStatus(action.processJobStatusInput, action.pollingInterval)\r\n // .pipe(switchMap(response => {\r\n // let foo = response[\"data\"];\r\n // let bar = foo[\"getBackupProcessJobStatus\"];\r\n\r\n // return [\r\n // BackupJobActions.setBackupProcessJobDataLoaded(),\r\n // BackupJobActions.upsertBackupProcessJobResult({ backupJobResult: bar.dpsJobStatus })\r\n // ]\r\n\r\n // }))\r\n // }), catchError(error => {\r\n // let errorContext = 'backup-job.effects.getBackupJob';\r\n // this.logger.error(error.message, errorContext, error);\r\n // return [BackupJobActions.setBackupJobDataError({ message : error.message })];\r\n // }))\r\n // )\r\n}\r\n","import { GqlService } from './../../core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as BackupProcessJobActions from '../processJob/process-job.actions';\r\n\r\n@Injectable()\r\nexport class BackupProcessJobEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n\r\n getBackupProcessJob$ = createEffect(() => this.actions$.pipe (\r\n ofType(BackupProcessJobActions.getProcessJob),\r\n mergeMap(action => {\r\n return this.gqlService.gql.dps.getProcessJobStatus(action.getProcessJobStatusInput, action.pollingInterval)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let bar = foo[\"ProcessJobStatus\"];\r\n\r\n return [\r\n BackupProcessJobActions.setProcessJobDataLoaded(),\r\n BackupProcessJobActions.upsertProcessJobResult({ processJobResult: bar.processJobResponse })\r\n ]\r\n\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'process-job.effects.getBackupProcessJob';\r\n this.logger.error(error.message, errorContext, error);\r\n return [BackupProcessJobActions.setProcessJobDataError({ message : error.message })];\r\n }))\r\n )\r\n}\r\n","import { Access, ClientRoles, GroupAttributesRepresentation } from \".\";\r\n\r\nexport class GroupRepresentation {\r\n id: string;\r\n name: string;\r\n path: string;\r\n subGroups: GroupRepresentation[];\r\n realmRoles: string[];\r\n access: Access;\r\n attributes: GroupAttributesRepresentation;\r\n clientRoles: ClientRoles;\r\n}","export class GetGroupByNameInput {\r\n SessionId: string;\r\n GroupName: string;\r\n}","import { UserRepresentation } from \"../type/userRepresentation\";\r\n\r\nexport class UpdateUserInput {\r\n // sessionId: string;\r\n // userId: string;\r\n // user: UserRepresentation;\r\n SessionId: string;\r\n Id: string;\r\n Username: string;\r\n Email: string;\r\n FirstName: string;\r\n LastName: string;\r\n UserId: string;\r\n CompanyId: string;\r\n Groups: string\r\n}","import { TypeCompanyInput } from './index';\r\n\r\nexport class CreateCompanyUserInput {\r\n UseTwoFactorAuth: boolean;\r\n Company: TypeCompanyInput;\r\n Roles: string;\r\n Comment: string;\r\n ModifiedBy: string;\r\n ModifiedOn: string;\r\n CreatedBy: string;\r\n PresharedKey: string;\r\n CreatedOn: string;\r\n CompanyId: string;\r\n IsActive: boolean;\r\n FullName: string;\r\n Email: string;\r\n LastName: string;\r\n FirstName: string;\r\n UserId: string;\r\n CompanyName: string;\r\n Passcode: string;\r\n}\r\n\r\n// newUser: {\r\n// \"FirstName\": \"\",\r\n// \"LastName\": \"\",\r\n// \"Email\": \"\",\r\n// \"Notify\": false,\r\n// \"IsActive\": true,\r\n// \"CompanyId\": $localStorage.UserLogin.companyId,\r\n// \"CreatedBy\": $localStorage.UserLogin.userId,\r\n// \"Comment\": \"Created through N3T Customer Portal\"\r\n// }","\r\n\r\nexport class RolesInput {\r\n id?: string;\r\n roleId?: string;\r\n role: string;\r\n roleDescription?: string;\r\n}","import { GroupRepresentation } from './../../core/gql/graphql/user/schema/type/groupRepresentation';\r\nimport { CompanyService } from './../../core/_services/company.service';\r\nimport { GetGroupByNameInput } from './../../core/gql/graphql/keycloak/schema/input/getGroupByNameInput';\r\nimport { UpdateUserInput } from './../../core/gql/graphql/keycloak/schema/input/updateUserInput';\r\nimport { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\r\nimport { UserService } from '@app/core/_services/user.service';\r\nimport { GetCompanyUsersInput } from '@app/core/gql/graphql/permissions/schema/input/getCompanyUsersInput';\r\nimport { CreateCompanyUserInput } from '@app/core/gql/graphql/permissions/schema/input/createCompanyUserInput';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport * as _ from 'underscore';\r\n\r\nimport * as CompanyUserActions from '../companyUser/company-user.actions';\r\nimport * as CompanyUserMemberships from '../companyUserMemberships/company-user-memberships.actions';\r\nimport { GqlService } from '@app/core/_services';\r\nimport { RolesInput, UpdateRolesByUserInput } from '@app/core/gql/graphql/permissions/schema/input';\r\nimport { TypeUser } from '@app/core/gql/graphql/permissions/schema/type';\r\nimport { App } from '@app/core/gql/graphql/shared/schema/enums';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Injectable()\r\nexport class CompanyUserEffects implements OnDestroy {\r\n private sub = new SubSink();\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService,\r\n private userService: UserService,\r\n private n3tKeycloakService: N3TKeycloakService,\r\n private companyService: CompanyService) {}\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n getCompanyUsers$ = createEffect(() => this.actions$.pipe (\r\n ofType(CompanyUserActions.getCompanyUsers),\r\n mergeMap(action => {\r\n return this.gqlService.gql.permission.getCompanyUsers(action.getCompanyUsers)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let bar = foo[\"getCompanyUsers\"];\r\n let users = new Array();\r\n users = bar.companyUsersResponse.result as Array;\r\n\r\n return [\r\n CompanyUserActions.setCompanyUsersLoaded(),\r\n CompanyUserActions.setCompanyUsers({ companyUsers: users })\r\n ]\r\n\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'company-user.effects.getCompanyUser';\r\n this.logger.error(error.message, errorContext, error);\r\n return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\r\n }))\r\n )\r\n\r\n createCompanyUser$ = createEffect(() => this.actions$.pipe (\r\n ofType(CompanyUserActions.upsertCompanyUser),\r\n mergeMap(action => {\r\n let companyUserInput = new CreateCompanyUserInput();\r\n companyUserInput.Comment = \"Created through N3T Customer Portal\";\r\n companyUserInput.CreatedBy = action.createdBy?.toString();\r\n companyUserInput.CompanyId = action.companyUser.companyId;\r\n companyUserInput.FirstName = action.companyUser.firstName;\r\n companyUserInput.LastName = action.companyUser.lastName;\r\n companyUserInput.Email = action.companyUser.email;\r\n companyUserInput.IsActive = action.companyUser.isActive;\r\n\r\n if (action.companyUser.userId !== null && action.companyUser.userId !== undefined && action.companyUser.userId !== \"\") {\r\n // This user has already been created in Logins, no need to replicate that action\r\n // Add this user to SSO if data is present\r\n if (action.cloudPermissions !== undefined && action.companyNameShort !== undefined && action.rolesPortal !== undefined) {\r\n // Determine if user already exists in Keycloak or if we need to create \r\n return this.n3tKeycloakService.getSSOUser(action.companyUser.email).pipe(switchMap(result => {\r\n if (result[\"data\"][\"getUserByEmail\"].getUser === null || result[\"data\"][\"getUserByEmail\"].getUser === undefined || result[\"data\"][\"getUserByEmail\"].success === false) {\r\n // User does not exist in Keycloak\r\n let ssoInput = this.n3tKeycloakService.createKeycloakUserObject(action.companyUser, action.companyNameShort, action.rolesPortal, action.cloudPermissions );\r\n\r\n return this.gqlService.gql.keycloak.addUser(ssoInput).pipe(switchMap(response => {\r\n if (response.data.addUser.addUser !== \"Success\" || response.data.addUser.success !== true) {\r\n // An error happened, write to Alert service here?\r\n \r\n } else {\r\n // need to send email notification to the new user to confirm/set up account (SSO)\r\n this.n3tKeycloakService.sendSSOUserEmail(action.companyUser.email, action.cloudPermissions);\r\n \r\n // Create default Portal Membership\r\n let inputPortal = this.userService.createDefaultPortalMembership(action.companyUser);\r\n \r\n this.gqlService.gql.permission.createPortalMembership(inputPortal).subscribe(data => {\r\n let huh = data;\r\n let membPortal = huh.data[\"createPortalMembership\"].portalMembership.result;\r\n // need to put this membership info in store now...\r\n CompanyUserMemberships.addCompanyUserMembership(membPortal);\r\n });\r\n \r\n // Create Memberships for Cloud Permissions\r\n action.cloudPermissions?.forEach(permission => {\r\n if (permission.app === App.vCloudDirector) {\r\n let createProviderMembership = this.userService.createProviderMembershipInput(action.companyUser, permission);\r\n \r\n this.sub.sink = this.gqlService.gql.permission.createProviderMembership(createProviderMembership).subscribe(result => {\r\n let foo = result;\r\n // Execute \"createUserMembsership\" here...\r\n let umInput = this.userService.createUserMembershipInput(action.companyUser, permission, createProviderMembership.user.Password);\r\n \r\n this.sub.sink = this.gqlService.gql.permission.createUserMembership(umInput).subscribe(result => {\r\n if (result.data[\"createUserMembership\"].success) {\r\n CompanyUserMemberships.addCompanyUserMembership(result.data[\"createUserMembership\"].message);\r\n } else {\r\n // bubble up the error message\r\n // result.data[\"createUserMembership\"].message\r\n \r\n }\r\n \r\n });\r\n });\r\n }\r\n });\r\n }\r\n \r\n let usersInput = new GetCompanyUsersInput();\r\n usersInput.companyId = action.companyUser.companyId;\r\n \r\n return [\r\n CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput }),\r\n //MembershipActions.addMembership({ membership: membership })\r\n ]\r\n }))\r\n } else {\r\n\r\n //#region Need to fix this...\r\n\r\n // User already exists in Keycloak, so update don't try to create\r\n let updateUserInput = new UpdateUserInput();\r\n updateUserInput.SessionId = this.n3tKeycloakService.keycloakSession.value;\r\n updateUserInput.UserId = result[\"data\"][\"getUserByEmail\"].getUser.attributes.userId[0];\r\n updateUserInput.Id = result[\"data\"][\"getUserByEmail\"].getUser.id;\r\n updateUserInput.Username = result[\"data\"][\"getUserByEmail\"].getUser.username;\r\n updateUserInput.Email = result[\"data\"][\"getUserByEmail\"].getUser.email;\r\n updateUserInput.FirstName = action.companyUser.firstName;\r\n updateUserInput.LastName = action.companyUser.lastName;\r\n updateUserInput.CompanyId = action.companyUser.companyId;\r\n updateUserInput.Groups = this.n3tKeycloakService.createGroupsString(action.companyNameShort, action.rolesPortal, action.cloudPermissions);\r\n\r\n // Have to get a handle on Groups for this Company\r\n let input = new GetGroupByNameInput();\r\n input.GroupName = this.companyService.getCompany().companyNameShort.toLowerCase();\r\n input.SessionId = this.n3tKeycloakService.keycloakSession.value;\r\n this.sub.sink = this.gqlService.gql.keycloak.getGroupByName(input).subscribe(result => {\r\n let groupRepresentation = new GroupRepresentation();\r\n if (result[\"data\"].getGroupByName.success) {\r\n groupRepresentation = result[\"data\"].getGroupByName.getGroup;\r\n let vcdGroups = _.where(groupRepresentation.subGroups, { name: \"VCD\"});\r\n let datacenterGroups = vcdGroups[0]?.subGroups;\r\n\r\n return this.gqlService.gql.keycloak.updateUser(updateUserInput).subscribe(response => {\r\n if (response.data.updateUser.updateUser !== \"Success\" || response.data.updateUser.success !== true) {\r\n // An error happened, write to Alert service here?\r\n } else {\r\n // Need to add any missing Memberships/Groups here....\r\n // Have to make distinct call to add User to Group(s) directly in Keycloak\r\n let groupIDArray = new Array();\r\n action.cloudPermissions.forEach(perm => {\r\n if (perm.app === App.vCloudDirector) {\r\n let locationDatacenter = _.findWhere(datacenterGroups, {\"name\": perm.datacenterLocation});\r\n if (locationDatacenter !== undefined) {\r\n let loc = _.find(locationDatacenter.subGroups, function(l){\r\n return l.path.includes(\"/VCD/\" + perm.datacenterLocation + \"/\" + perm.cloudRole);\r\n });\r\n\r\n if (loc !== undefined) {\r\n groupIDArray.push(loc.id);\r\n \r\n // Create Memberships for Cloud Permissions\r\n let createProviderMembership = this.userService.createProviderMembershipInput(action.companyUser, perm);\r\n \r\n this.sub.sink = this.gqlService.gql.permission.createProviderMembership(createProviderMembership).subscribe(result => {\r\n let foo = result;\r\n // Execute \"createUserMembsership\" here...\r\n let umInput = this.userService.createUserMembershipInput(action.companyUser, perm, createProviderMembership.user.Password);\r\n \r\n this.sub.sink = this.gqlService.gql.permission.createUserMembership(umInput).subscribe(result => {\r\n if (result.data[\"createUserMembership\"].success) {\r\n CompanyUserMemberships.addCompanyUserMembership(result.data[\"createUserMembership\"].message);\r\n } else {\r\n // bubble up the error message\r\n // result.data[\"createUserMembership\"].message\r\n \r\n }\r\n });\r\n });\r\n } \r\n }\r\n } \r\n });\r\n\r\n this.n3tKeycloakService.addUserToGroups(updateUserInput.Id, groupIDArray);\r\n \r\n // // Create Memberships for Cloud Permissions\r\n // action.cloudPermissions?.forEach(permission => {\r\n // if (permission.app === App.vCloudDirector) {\r\n // let createProviderMembership = this.userService.createProviderMembershipInput(action.companyUser, permission);\r\n \r\n // this.sub.sink = this.gqlService.gql.permission.createProviderMembership(createProviderMembership).subscribe(result => {\r\n // let foo = result;\r\n // // Execute \"createUserMembsership\" here...\r\n // let umInput = this.userService.createUserMembershipInput(action.companyUser, permission, createProviderMembership.user.Password);\r\n \r\n // this.sub.sink = this.gqlService.gql.permission.createUserMembership(umInput).subscribe(result => {\r\n // if (result.data[\"createUserMembership\"].success) {\r\n // CompanyUserMemberships.addCompanyUserMembership(result.data[\"createUserMembership\"].message);\r\n // } else {\r\n // // bubble up the error message\r\n // // result.data[\"createUserMembership\"].message\r\n \r\n // }\r\n \r\n // });\r\n // });\r\n // }\r\n // });\r\n }\r\n \r\n let usersInput = new GetCompanyUsersInput();\r\n usersInput.companyId = action.companyUser.companyId;\r\n \r\n return [\r\n CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput }),\r\n //MembershipActions.addMembership({ membership: membership })\r\n ]\r\n });\r\n\r\n\r\n\r\n\r\n\r\n } else {\r\n // There was an issue...\r\n }\r\n \r\n });\r\n\r\n\r\n\r\n }\r\n\r\n //#endregion\r\n }));\r\n }\r\n } else {\r\n return this.gqlService.gql.permission.createCompanyUser(companyUserInput)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let bar = foo[\"createCompanyUser\"].createUserResponse.result;\r\n\r\n let usersInput = new GetCompanyUsersInput();\r\n usersInput.companyId = action.companyUser.companyId;\r\n\r\n // Add this user to SSO if data is present\r\n if (action.cloudPermissions !== undefined && action.companyNameShort !== undefined && action.rolesPortal !== undefined) {\r\n let ssoInput = this.n3tKeycloakService.createKeycloakUserObject(action.companyUser, action.companyNameShort, action.rolesPortal, action.cloudPermissions );\r\n\r\n this.gqlService.gql.keycloak.addUser(ssoInput).subscribe(resp => {\r\n if (resp.data.addUser.success !== true) {\r\n // An error happened\r\n } else {\r\n let inputPortal = this.userService.createDefaultPortalMembership(action.companyUser);\r\n \r\n this.gqlService.gql.permission.createPortalMembership(inputPortal).subscribe(data => {\r\n let huh = data;\r\n });\r\n }\r\n });\r\n }\r\n\r\n return [\r\n CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n ]\r\n }))\r\n }\r\n }), catchError(error => {\r\n let errorContext = 'company-user.effects.createCompanyUser';\r\n this.logger.error(error.message, errorContext, error);\r\n return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\r\n }))\r\n )\r\n\r\n updateCompanyUserRoles$ = createEffect(() => this.actions$.pipe (\r\n ofType(CompanyUserActions.upsertCompanyUserRoles),\r\n mergeMap(action => {\r\n\r\n let updateRolesByUserInput = new UpdateRolesByUserInput();\r\n updateRolesByUserInput.UserId = action.companyUser.userId;\r\n\r\n let rolesInput = new Array();\r\n\r\n action.roles.forEach(role => {\r\n let tmpRole = new RolesInput();\r\n tmpRole.role = role.role;\r\n tmpRole.roleId = role.roleId;\r\n rolesInput.push(tmpRole);\r\n });\r\n \r\n updateRolesByUserInput.roles = rolesInput;\r\n\r\n return this.gqlService.gql.permission.updateRolesByUser(updateRolesByUserInput)\r\n .pipe(switchMap(response => {\r\n\r\n let usersInput = new GetCompanyUsersInput();\r\n usersInput.companyId = action.companyUser.companyId;\r\n\r\n return [\r\n CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n ]\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'company-user.effects.updateCompanyUserRoles';\r\n this.logger.error(error.message, errorContext, error);\r\n return [CompanyUserActions.updateCompanyUserError({ message : error.message })];\r\n }))\r\n )\r\n\r\n deleteCompanyUser$ = createEffect(() => this.actions$.pipe (\r\n ofType(CompanyUserActions.deleteCompanyUser),\r\n mergeMap(action => {\r\n \r\n return this.gqlService.gql.login.deleteUserAndMemberships(action.userId)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n if (foo[\"deleteUserAndMemberships\"]?.success) {\r\n // foo[\"deleteUserAndMemberships\"]?.message;\r\n this.n3tKeycloakService.removeKeycloakUser(action.userEmail);\r\n } else {\r\n return [CompanyUserActions.deleteCompanyUserError({ message : foo[\"deleteUserAndMemberships\"]?.message })];\r\n }\r\n\r\n return [\r\n // CompanyUserActions.setCompanyUsersLoaded(),\r\n // CompanyUserActions.upsertCompanyUsers({ companyUsers: bar.companyUsersResponse.result })\r\n \r\n ]\r\n\r\n }));\r\n }), catchError(error => {\r\n let errorContext = 'company-user.effects.deleteCompanyUser';\r\n this.logger.error(error.message, errorContext, error);\r\n return [CompanyUserActions.deleteCompanyUserError({ message : error.message })];\r\n }))\r\n )\r\n\r\n addCompanyUserToSSO$ = createEffect(() => this.actions$.pipe (\r\n ofType(CompanyUserActions.addCompanyUserToSSO),\r\n mergeMap(action => {\r\n let ssoInput = this.n3tKeycloakService.createKeycloakUserObject(action.companyUser, action.companyNameShort, action.rolesPortal, action.cloudPermissions )\r\n\r\n return this.gqlService.gql.keycloak.addUser(ssoInput)\r\n .pipe(switchMap(response => {\r\n\r\n\r\n let usersInput = new GetCompanyUsersInput();\r\n usersInput.companyId = action.companyUser.companyId;\r\n\r\n return [\r\n CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n ]\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'company-user.effects.addCompanyUsertoSSO';\r\n this.logger.error(error.message, errorContext, error);\r\n return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\r\n }))\r\n )\r\n\r\n}\r\n","import { Membership } from '@app/core/gql/graphql/login/schema/type';\r\nimport { CallState, N3TResult } from '@app/core/_models/n3tResult';\r\nimport { Action, createReducer, on } from '@ngrx/store';\r\nimport { EntityState, EntityAdapter, createEntityAdapter } from '@ngrx/entity';\r\nimport * as CompanyUserMembershipsActions from './company-user-memberships.actions';\r\n\r\nexport const companyUserMembershipsFeatureKey = 'companyUserMemberships';\r\n\r\nexport interface State extends EntityState {\r\n // additional entities state properties\r\n companyUserMembershipsResult: N3TResult\r\n}\r\n\r\nexport const adapter: EntityAdapter = createEntityAdapter({\r\n selectId: companyUserMemberships => companyUserMemberships.membershipId //.userId\r\n});\r\n\r\nexport const initialState: State = adapter.getInitialState({\r\n // additional entity state properties\r\n companyUserMembershipsResult: new N3TResult()\r\n});\r\n\r\nconst companyUserMembershipsReducer = createReducer(\r\n initialState,\r\n on(CompanyUserMembershipsActions.addCompanyUserMembership,\r\n (state, action) => adapter.addOne(action.companyUserMembership, state)\r\n ),\r\n on(CompanyUserMembershipsActions.upsertCompanyUserMembership,\r\n (state, action) => adapter.upsertOne(action.companyUserMembership, state)\r\n ),\r\n on(CompanyUserMembershipsActions.addCompanyUserMemberships,\r\n (state, action) => adapter.addMany(action.companyUserMemberships, state)\r\n ),\r\n on(CompanyUserMembershipsActions.upsertCompanyUserMemberships,\r\n (state, action) => adapter.upsertMany(action.companyUserMemberships, state)\r\n ),\r\n on(CompanyUserMembershipsActions.updateCompanyUserMembership,\r\n (state, action) => adapter.updateOne(action.companyUserMembership, state)\r\n ),\r\n on(CompanyUserMembershipsActions.updateCompanyUserMemberships,\r\n (state, action) => adapter.updateMany(action.companyUserMemberships, state)\r\n ),\r\n on(CompanyUserMembershipsActions.deleteCompanyUserMembership,\r\n (state, action) => adapter.removeOne(action.membershipId, state)\r\n ),\r\n on(CompanyUserMembershipsActions.deleteCompanyUserMemberships,\r\n (state, action) => adapter.removeMany(action.ids, state)\r\n ),\r\n on(CompanyUserMembershipsActions.setCompanyUserMemberships,\r\n (state, action) => adapter.setAll(action.companyUserMemberships, state)\r\n ),\r\n on(CompanyUserMembershipsActions.clearCompanyUserMemberships,\r\n state => adapter.removeAll(state)\r\n ),\r\n on(CompanyUserMembershipsActions.getCompanyUserMemberships, \r\n (state) => ({ ...state, companyUserMembershipsResult: { hasError: false, isLoaded: false, callState: CallState.PENDING, error: '' }})\r\n ), \r\n on(CompanyUserMembershipsActions.getCompanyUserMembershipsError, \r\n (state, prop) => ({ ...state, companyUserMembershipsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(CompanyUserMembershipsActions.setCompanyUserMembershipsLoaded, \r\n (state) => ({ ...state, companyUserMembershipsResult: { hasError: false, isLoaded: true, callState: CallState.COMPLETE, error: '' }})\r\n ),\r\n on(CompanyUserMembershipsActions.setCompanyUserMembershipsReset, \r\n (state) => ({ ...state, companyUserMembershipsResult: { hasError: false, isLoaded: false, callState: CallState.INIT, error: '' }})\r\n ),\r\n on(CompanyUserMembershipsActions.updateCompanyUserMembershipsError, \r\n (state, prop) => ({ ...state, companyUserMembershipsResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n on(CompanyUserMembershipsActions.deleteCompanyUserMembershipsError, \r\n (state, prop) => ({ ...state, companyUserResult: { hasError: true, isLoaded: true, callState: CallState.FAILED, error: prop.message }})\r\n ),\r\n);\r\n\r\nexport function reducer(state: State | undefined, action: Action) {\r\n return companyUserMembershipsReducer(state, action);\r\n}\r\n\r\nexport const {\r\n selectIds,\r\n selectEntities,\r\n selectAll,\r\n selectTotal,\r\n} = adapter.getSelectors();\r\n","import { N3TKeycloakService } from '@app/core/_services/n3tKeycloak.service';\r\nimport { UserService } from '@app/core/_services/user.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\n\r\nimport * as CompanyUserMembershipsActions from '../companyUserMemberships/company-user-memberships.actions';\r\nimport { GqlService } from '@app/core/_services';\r\n\r\n@Injectable()\r\nexport class CompanyUserMembershipsEffects {\r\n\r\n constructor(\r\n private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService,\r\n private userService: UserService,\r\n private n3tKeycloakService: N3TKeycloakService) {}\r\n\r\n// getCompanyUsers$ = createEffect(() => this.actions$.pipe (\r\n// ofType(CompanyUserActions.getCompanyUsers),\r\n// mergeMap(action => {\r\n// return this.gqlService.gql.permission.getCompanyUsers(action.getCompanyUsers)\r\n// .pipe(switchMap(response => {\r\n// //response.data[\"getCompanyUsers\"].companyUsersResponse.result\r\n// let foo = response[\"data\"];\r\n// let bar = foo[\"getCompanyUsers\"];\r\n\r\n// return [\r\n// CompanyUserActions.setCompanyUsersLoaded(),\r\n// CompanyUserActions.upsertCompanyUsers({ companyUsers: bar.companyUsersResponse.result })\r\n// ]\r\n\r\n// }))\r\n// }), catchError(error => {\r\n// let errorContext = 'company-user.effects.getCompanyUser';\r\n// this.logger.error(error.message, errorContext, error);\r\n// return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\r\n// }))\r\n// )\r\n\r\n// createCompanyUser$ = createEffect(() => this.actions$.pipe (\r\n// ofType(CompanyUserActions.upsertCompanyUser),\r\n// mergeMap(action => {\r\n// let companyUserInput = new CreateCompanyUserInput();\r\n// companyUserInput.Comment = \"Created through N3T Customer Portal\";\r\n// companyUserInput.CreatedBy = action.createdBy?.toString();\r\n// companyUserInput.CompanyId = action.companyUser.companyId;\r\n// companyUserInput.FirstName = action.companyUser.firstName;\r\n// companyUserInput.LastName = action.companyUser.lastName;\r\n// companyUserInput.Email = action.companyUser.email;\r\n// companyUserInput.IsActive = action.companyUser.isActive;\r\n\r\n// if (action.companyUser.userId !== null && action.companyUser.userId !== undefined && action.companyUser.userId !== \"\") {\r\n// // This user has already been created in Logins, no need to replicate that action\r\n// // Add this user to SSO if data is present\r\n// if (action.cloudPermissions !== undefined && action.companyNameShort !== undefined && action.rolesPortal !== undefined) {\r\n// let ssoInput = this.n3tKeycloakService.createKeycloakUserObject(action.companyUser, action.companyNameShort, action.rolesPortal, action.cloudPermissions );\r\n\r\n// return this.gqlService.gql.keycloak.addUser(ssoInput).pipe(switchMap(response => {\r\n// if (response.data.addUser.success !== true) {\r\n// // An error happened\r\n// }\r\n \r\n// let usersInput = new GetCompanyUsersInput();\r\n// usersInput.companyId = action.companyUser.companyId;\r\n \r\n// return [\r\n// CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n// ]\r\n// })) \r\n// }\r\n// } else {\r\n// return this.gqlService.gql.permission.createCompanyUser(companyUserInput)\r\n// .pipe(switchMap(response => {\r\n// let foo = response[\"data\"];\r\n// let bar = foo[\"createCompanyUser\"].createUserResponse.result;\r\n\r\n// let usersInput = new GetCompanyUsersInput();\r\n// usersInput.companyId = action.companyUser.companyId;\r\n\r\n// // Add this user to SSO if data is present\r\n// if (action.cloudPermissions !== undefined && action.companyNameShort !== undefined && action.rolesPortal !== undefined) {\r\n// let ssoInput = this.n3tKeycloakService.createKeycloakUserObject(action.companyUser, action.companyNameShort, action.rolesPortal, action.cloudPermissions );\r\n\r\n// this.gqlService.gql.keycloak.addUser(ssoInput).subscribe(resp => {\r\n// if (resp.data.addUser.success !== true) {\r\n// // An error happened\r\n// }\r\n// });\r\n// }\r\n\r\n// return [\r\n// CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n// ]\r\n// }))\r\n// }\r\n// }), catchError(error => {\r\n// let errorContext = 'company-user.effects.createCompanyUser';\r\n// this.logger.error(error.message, errorContext, error);\r\n// return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\r\n// }))\r\n// )\r\n\r\n// updateCompanyUserRoles$ = createEffect(() => this.actions$.pipe (\r\n// ofType(CompanyUserActions.upsertCompanyUserRoles),\r\n// mergeMap(action => {\r\n\r\n// let updateRolesByUserInput = new UpdateRolesByUserInput();\r\n// updateRolesByUserInput.UserId = action.companyUser.userId;\r\n\r\n// let rolesInput = new Array();\r\n\r\n// action.roles.forEach(role => {\r\n// let tmpRole = new RolesInput();\r\n// tmpRole.role = role.role;\r\n// tmpRole.roleId = role.roleId;\r\n// rolesInput.push(tmpRole);\r\n// });\r\n \r\n// updateRolesByUserInput.roles = rolesInput;\r\n\r\n// return this.gqlService.gql.permission.updateRolesByUser(updateRolesByUserInput)\r\n// .pipe(switchMap(response => {\r\n\r\n// let usersInput = new GetCompanyUsersInput();\r\n// usersInput.companyId = action.companyUser.companyId;\r\n\r\n// return [\r\n// CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n// ]\r\n// }))\r\n// }), catchError(error => {\r\n// let errorContext = 'company-user.effects.updateCompanyUserRoles';\r\n// this.logger.error(error.message, errorContext, error);\r\n// return [CompanyUserActions.updateCompanyUserError({ message : error.message })];\r\n// }))\r\n// )\r\n\r\n// deleteCompanyUser$ = createEffect(() => this.actions$.pipe (\r\n// ofType(CompanyUserActions.deleteCompanyUser),\r\n// mergeMap(action => {\r\n \r\n// return this.gqlService.gql.login.deleteUserAndMemberships(action.userId)\r\n// .pipe(switchMap(response => {\r\n// let foo = response[\"data\"];\r\n// if (foo[\"deleteUserAndMemberships\"]?.success) {\r\n// // foo[\"deleteUserAndMemberships\"]?.message;\r\n// } else {\r\n// return [CompanyUserActions.deleteCompanyUserError({ message : foo[\"deleteUserAndMemberships\"]?.message })];\r\n// }\r\n\r\n// return [\r\n// // CompanyUserActions.setCompanyUsersLoaded(),\r\n// // CompanyUserActions.upsertCompanyUsers({ companyUsers: bar.companyUsersResponse.result })\r\n \r\n// ]\r\n\r\n// }));\r\n// }), catchError(error => {\r\n// let errorContext = 'company-user.effects.deleteCompanyUser';\r\n// this.logger.error(error.message, errorContext, error);\r\n// return [CompanyUserActions.deleteCompanyUserError({ message : error.message })];\r\n// }))\r\n// )\r\n\r\n// addCompanyUserToSSO$ = createEffect(() => this.actions$.pipe (\r\n// ofType(CompanyUserActions.addCompanyUserToSSO),\r\n// mergeMap(action => {\r\n// let ssoInput = this.n3tKeycloakService.createKeycloakUserObject(action.companyUser, action.companyNameShort, action.rolesPortal, action.cloudPermissions )\r\n\r\n// return this.gqlService.gql.keycloak.addUser(ssoInput)\r\n// .pipe(switchMap(response => {\r\n\r\n\r\n// let usersInput = new GetCompanyUsersInput();\r\n// usersInput.companyId = action.companyUser.companyId;\r\n\r\n// return [\r\n// CompanyUserActions.getCompanyUsers({ getCompanyUsers: usersInput })\r\n// ]\r\n// }))\r\n// }), catchError(error => {\r\n// let errorContext = 'company-user.effects.addCompanyUsertoSSO';\r\n// this.logger.error(error.message, errorContext, error);\r\n// return [CompanyUserActions.getCompanyUsersError({ message : error.message })];\r\n// }))\r\n// )\r\n\r\n}\r\n","import * as companyUserMemberships from '.';\r\nimport * as fromCompanyUserMemberships from './company-user-memberships.reducer';\r\nimport {createFeatureSelector, createSelector} from '@ngrx/store';\r\n\r\nexport const selectCompanyUserMembershipsState = createFeatureSelector(\"companyUserMemberships\");\r\n\r\nexport const selectCompanyUserMembershipsById = (companyUserId:string) => createSelector(\r\n selectCompanyUserMembershipsState,\r\n companyUserMembershipsState => companyUserMembershipsState.entities[companyUserId]\r\n);\r\n\r\nexport const selectAllCompanyUserMemberships = createSelector(\r\n selectCompanyUserMembershipsState,\r\n fromCompanyUserMemberships.selectAll\r\n);\r\n","import { GetTenantOfferingItemsByEditionInput } from '@app/core/gql/graphql/backup/schema/input';\r\nimport { GqlService } from '@app/core/_services/gql.service';\r\nimport { UUID } from 'angular2-uuid';\r\nimport { Injectable } from '@angular/core';\r\nimport { combineLatest, Observable, of } from 'rxjs';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as TenantOfferingItemsActions from './tenant-offering-items.actions';\r\nimport { GetOfferingItem } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\n@Injectable()\r\nexport class TenantOfferingItemsEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n /*\r\n side effects:\r\n 1. Get Tenant Offering Items By Edition\r\n 2. return result to action stream to store the state\r\n */\r\n getTenantOfferingItemsByEdition$ = createEffect(() => this.actions$.pipe(\r\n ofType(TenantOfferingItemsActions.getTenantOfferingItemsByEdition),\r\n mergeMap(action => {\r\n return this.gqlService.gql.backup.getTenantOfferingItemsByEdition(action.getTenantOfferingItemsByEditionInput)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let dat = foo[\"getTenantOfferingItemsByEdition\"];\r\n\r\n if (dat.success) {\r\n let newItems = new Array();\r\n let bar = dat[\"getOfferingItems\"];\r\n bar.items.forEach((item, index: number) => {\r\n // Have to deal with fact that these objects are initialized as un-writeable but we need to \r\n // manually assign an \"id\" in order that we can insert into Store (objects have no actual key in source)\r\n let newItem = {...item};\r\n newItem.id = index;\r\n newItems.push(newItem);\r\n });\r\n\r\n return [\r\n TenantOfferingItemsActions.setTenantOfferingItemsByEditionDataLoaded(),\r\n TenantOfferingItemsActions.setTenantOfferingItemsByEditionResults({ getTenantOfferingItemsByEditionInput: newItems })\r\n ]\r\n } else {\r\n let errorContext = 'tenant-offering-items.effects.getTenantOfferingItemsByEdition'; \r\n this.logger.error(dat.message, errorContext, dat.message);\r\n return [\r\n TenantOfferingItemsActions.setTenantOfferingItemsByEditionDataError({ message : dat.message })\r\n ];\r\n }\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'tenant-offering-items.effects.getTenantOfferingItemsByEdition'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n TenantOfferingItemsActions.setTenantOfferingItemsByEditionDataError({ message : error.message })\r\n ];\r\n })\r\n ));\r\n\r\n}\r\n","import { GqlService } from '@app/core/_services/gql.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { catchError, map, mergeMap, switchMap } from 'rxjs/operators';\r\nimport { N3TLogger } from '@app/core/_helpers/n3tlogger';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\n\r\nimport * as TenantUsagesActions from './tenant-usages.actions';\r\nimport { TenantResources } from '@app/core/gql/graphql/backup/schema/type';\r\n\r\n\r\n@Injectable()\r\nexport class TenantUsagesEffects {\r\n\r\n constructor(private actions$: Actions,\r\n private logger: N3TLogger,\r\n private gqlService: GqlService) {}\r\n\r\n /*\r\n side effects:\r\n 1. Get Tenant Usagess By Edition\r\n 2. return result to action stream to store the state\r\n */\r\n getTenantUsages$ = createEffect(() => this.actions$.pipe(\r\n ofType(TenantUsagesActions.getTenantUsages),\r\n mergeMap(action => {\r\n return this.gqlService.gql.backup.getTenantUsages(action.getTenantUsagesInput)\r\n .pipe(switchMap(response => {\r\n let foo = response[\"data\"];\r\n let dat = foo[\"getTenantUsages\"] as any;\r\n\r\n if (dat.success === true) {\r\n let newItems = new Array();\r\n let bar = dat[\"getTenantUsages\"].resources;\r\n bar.forEach((item, index: number) => {\r\n // Have to deal with fact that these objects are initialized as un-writeable but we need to \r\n // manually assign an \"id\" in order that we can insert into Store (objects have no actual key in source)\r\n let newItem = {...item};\r\n newItem.id = index;\r\n newItems.push(newItem);\r\n });\r\n\r\n return [\r\n TenantUsagesActions.setTenantUsagesDataLoaded(),\r\n TenantUsagesActions.setTenantUsagesResults({ getTenantUsagesInput: newItems })\r\n ]\r\n } else {\r\n let errorContext = 'tenant-usages.effects.getTenantUsages'; \r\n this.logger.error(dat.message, errorContext, dat.message);\r\n return [\r\n TenantUsagesActions.setTenantUsagesDataError({ message : dat.message })\r\n ];\r\n }\r\n }))\r\n }), catchError(error => {\r\n let errorContext = 'tenant-usages.effects.getTenantUsages'; \r\n this.logger.error(error.message, errorContext, error);\r\n return [\r\n TenantUsagesActions.setTenantUsagesDataError({ message : error.message })\r\n ];\r\n })\r\n ));\r\n\r\n}\r\n","import deepmerge from 'deepmerge';\n\n// Cannot import from the @ngrx/store package due to a module resolution issue.\n// See Issue #206.\nconst INIT_ACTION = '@ngrx/store/init';\nconst UPDATE_ACTION = '@ngrx/store/update-reducers';\nconst detectDate = /(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})/;\n// correctly parse dates from local storage\nconst dateReviver = (_key, value) => {\n if (typeof value === 'string' && detectDate.test(value)) {\n return new Date(value);\n }\n return value;\n};\nconst dummyReviver = (_key, value) => value;\nconst checkIsBrowserEnv = () => {\n return typeof window !== 'undefined';\n};\nconst validateStateKeys = (keys) => {\n return keys.map((key) => {\n let attr = key;\n if (typeof key === 'object') {\n attr = Object.keys(key)[0];\n }\n if (typeof attr !== 'string') {\n throw new TypeError(`localStorageSync Unknown Parameter Type: ` + `Expected type of string, got ${typeof attr}`);\n }\n return key;\n });\n};\nconst rehydrateApplicationState = (keys, storage, storageKeySerializer, restoreDates) => {\n return keys.reduce((acc, curr) => {\n let key = curr;\n let reviver = restoreDates ? dateReviver : dummyReviver;\n let deserialize;\n let decrypt;\n if (typeof key === 'object') {\n key = Object.keys(key)[0];\n // use the custom reviver function\n if (typeof curr[key] === 'function') {\n reviver = curr[key];\n }\n else {\n // use custom reviver function if available\n if (curr[key].reviver) {\n reviver = curr[key].reviver;\n }\n // use custom serialize function if available\n if (curr[key].deserialize) {\n deserialize = curr[key].deserialize;\n }\n }\n // Ensure that encrypt and decrypt functions are both present\n if (curr[key].encrypt && curr[key].decrypt) {\n if (typeof curr[key].encrypt === 'function' && typeof curr[key].decrypt === 'function') {\n decrypt = curr[key].decrypt;\n }\n else {\n console.error(`Either encrypt or decrypt is not a function on '${curr[key]}' key object.`);\n }\n }\n else if (curr[key].encrypt || curr[key].decrypt) {\n // Let know that one of the encryption functions is not provided\n console.error(`Either encrypt or decrypt function is not present on '${curr[key]}' key object.`);\n }\n }\n if (storage !== undefined) {\n let stateSlice = storage.getItem(storageKeySerializer(key));\n if (stateSlice) {\n // Use provided decrypt function\n if (decrypt) {\n stateSlice = decrypt(stateSlice);\n }\n const isObjectRegex = new RegExp('{|\\\\[');\n let raw = stateSlice;\n if (stateSlice === 'null' || stateSlice === 'true' || stateSlice === 'false' || isObjectRegex.test(stateSlice.charAt(0))) {\n raw = JSON.parse(stateSlice, reviver);\n }\n return Object.assign({}, acc, {\n [key]: deserialize ? deserialize(raw) : raw,\n });\n }\n }\n return acc;\n }, {});\n};\n// Recursively traverse all properties of the existing slice as defined by the `filter` argument,\n// and output the new object with extraneous properties removed.\nfunction createStateSlice(existingSlice, filter) {\n return filter.reduce((memo, attr) => {\n if (typeof attr === 'string' || typeof attr === 'number') {\n const value = existingSlice === null || existingSlice === void 0 ? void 0 : existingSlice[attr];\n if (value !== undefined) {\n memo[attr] = value;\n }\n }\n else {\n for (const key in attr) {\n if (Object.prototype.hasOwnProperty.call(attr, key)) {\n const element = attr[key];\n memo[key] = createStateSlice(existingSlice[key], element);\n }\n }\n }\n return memo;\n }, {});\n}\nconst syncStateUpdate = (state, keys, storage, storageKeySerializer, removeOnUndefined, syncCondition) => {\n if (syncCondition) {\n try {\n if (syncCondition(state) !== true) {\n return;\n }\n }\n catch (e) {\n // Treat TypeError as do not sync\n if (e instanceof TypeError) {\n return;\n }\n throw e;\n }\n }\n keys.forEach((key) => {\n let stateSlice = state[key];\n let replacer;\n let space;\n let encrypt;\n if (typeof key === 'object') {\n let name = Object.keys(key)[0];\n stateSlice = state[name];\n if (typeof stateSlice !== 'undefined' && key[name]) {\n // use serialize function if specified.\n if (key[name].serialize) {\n stateSlice = key[name].serialize(stateSlice);\n }\n else {\n // if serialize function is not specified filter on fields if an array has been provided.\n let filter;\n if (key[name].reduce) {\n filter = key[name];\n }\n else if (key[name].filter) {\n filter = key[name].filter;\n }\n if (filter) {\n stateSlice = createStateSlice(stateSlice, filter);\n }\n // Check if encrypt and decrypt are present, also checked at this#rehydrateApplicationState()\n if (key[name].encrypt && key[name].decrypt) {\n if (typeof key[name].encrypt === 'function') {\n encrypt = key[name].encrypt;\n }\n }\n else if (key[name].encrypt || key[name].decrypt) {\n // If one of those is not present, then let know that one is missing\n console.error(`Either encrypt or decrypt function is not present on '${key[name]}' key object.`);\n }\n }\n /*\n Replacer and space arguments to pass to JSON.stringify.\n If these fields don't exist, undefined will be passed.\n */\n replacer = key[name].replacer;\n space = key[name].space;\n }\n key = name;\n }\n if (typeof stateSlice !== 'undefined' && storage !== undefined) {\n try {\n if (encrypt) {\n // ensure that a string message is passed\n stateSlice = encrypt(typeof stateSlice === 'string' ? stateSlice : JSON.stringify(stateSlice, replacer, space));\n }\n storage.setItem(storageKeySerializer(key), typeof stateSlice === 'string' ? stateSlice : JSON.stringify(stateSlice, replacer, space));\n }\n catch (e) {\n console.warn('Unable to save state to localStorage:', e);\n }\n }\n else if (typeof stateSlice === 'undefined' && removeOnUndefined && storage !== undefined) {\n try {\n storage.removeItem(storageKeySerializer(key));\n }\n catch (e) {\n console.warn(`Exception on removing/cleaning undefined '${key}' state`, e);\n }\n }\n });\n};\n// Default merge strategy is a full deep merge.\nconst defaultMergeReducer = (state, rehydratedState, action) => {\n if ((action.type === INIT_ACTION || action.type === UPDATE_ACTION) && rehydratedState) {\n const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray;\n const options = {\n arrayMerge: overwriteMerge,\n };\n state = deepmerge(state, rehydratedState, options);\n }\n return state;\n};\nconst localStorageSync = (config) => (reducer) => {\n if ((config.storage === undefined && !config.checkStorageAvailability) ||\n (config.checkStorageAvailability && checkIsBrowserEnv())) {\n config.storage = localStorage || window.localStorage;\n }\n if (config.storageKeySerializer === undefined) {\n config.storageKeySerializer = (key) => key;\n }\n if (config.restoreDates === undefined) {\n config.restoreDates = true;\n }\n // Use default merge reducer.\n let mergeReducer = config.mergeReducer;\n if (mergeReducer === undefined || typeof mergeReducer !== 'function') {\n mergeReducer = defaultMergeReducer;\n }\n const stateKeys = validateStateKeys(config.keys);\n const rehydratedState = config.rehydrate\n ? rehydrateApplicationState(stateKeys, config.storage, config.storageKeySerializer, config.restoreDates)\n : undefined;\n return function (state, action) {\n let nextState;\n // If state arrives undefined, we need to let it through the supplied reducer\n // in order to get a complete state as defined by user\n if (action.type === INIT_ACTION && !state) {\n nextState = reducer(state, action);\n }\n else {\n nextState = Object.assign({}, state);\n }\n // Merge the store state with the rehydrated state using\n // either a user-defined reducer or the default.\n nextState = mergeReducer(nextState, rehydratedState, action);\n nextState = reducer(nextState, action);\n if (action.type !== INIT_ACTION) {\n syncStateUpdate(nextState, stateKeys, config.storage, config.storageKeySerializer, config.removeOnUndefined, config.syncCondition);\n }\n return nextState;\n };\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { dateReviver, defaultMergeReducer, localStorageSync, rehydrateApplicationState, syncStateUpdate };\n","import {\r\n ActionReducerMap,\r\n MetaReducer,\r\n ActionReducer, StoreModule\r\n} from '@ngrx/store';\r\nimport { RouterReducerState } from '@ngrx/router-store';\r\nimport { environment } from '../../environments/environment';\r\nimport { localStorageSync } from 'ngrx-store-localstorage';\r\nimport * as settings from './settings';\r\nimport * as navigation from './navigation';\r\nimport * as router from './router';\r\n\r\nexport interface AppState {\r\n settings: settings.SettingsState;\r\n navigation: navigation.NavigationState;\r\n router: RouterReducerState;\r\n}\r\n\r\nexport const reducers: ActionReducerMap = {\r\n settings: settings.reducer,\r\n navigation: navigation.reducer,\r\n router: router.reducer\r\n};\r\n\r\n// this will save part of redux store into localstorage\r\n// and restore this part on app init\r\nexport function localStorageSyncReducer(reducer: ActionReducer): ActionReducer {\r\n return localStorageSync({\r\n keys: ['settings'],\r\n rehydrate: true,\r\n })(reducer);\r\n}\r\n\r\nexport const metaReducers: MetaReducer[] = [\r\n localStorageSyncReducer,\r\n settings.settingsMetaReducer\r\n];\r\n\r\nexport const effects = [\r\n navigation.NavigationEffects\r\n];\r\n\r\n\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\n\r\nexport function customValidator(control: AbstractControl): ValidationErrors | null {\r\n const hasError = control.value ? (control.value as string).startsWith(\"abc\") : false;\r\n\r\n return hasError ? {customValidator: true} : null;\r\n}\r\n\r\nexport function customDateRangeValidator(control: AbstractControl): ValidationErrors | null {\r\n const dateArrival = control.get(\"arrivalDate\")?.value as Date;\r\n const dateDeparture = control.get(\"departureDate\")?.value as Date;\r\n\r\n let hasError = false;\r\n\r\n if (dateArrival && dateDeparture) {\r\n hasError = dateArrival >= dateDeparture || dateDeparture <= dateArrival;\r\n }\r\n\r\n return hasError ? {customDateRangeValidator: true} : null;\r\n}\r\n\r\nexport function customForbiddenValidator(forbiddenValue: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n if (control && control.value === forbiddenValue) {\r\n return {forbidden: true};\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\nexport function customAsyncValidator(_control: AbstractControl): Promise {\r\n return new Promise((resolve, _reject) => {\r\n setTimeout(() => resolve({customAsyncValidator: true}), 2000);\r\n });\r\n}\r\n","import { LoggerModule } from 'ngx-logger';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { CoreModule } from './core/core.module';\r\nimport { HttpClientJsonpModule, HttpClientModule } from '@angular/common/http';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { CustomSerializer } from './store/router';\r\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { environment } from '../environments/environment';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport { AuthenticationService } from './core/_services';\r\nimport { N3TStore } from './core/_services/n3tStore.service';\r\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\nimport { ErrorHandlerModule } from './core/error/error-handler-module';\r\nimport { N3TKeycloakService } from './core/_services/n3tKeycloak.service';\r\nimport { KeycloakAngularModule, KeycloakService } from 'keycloak-angular';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { ProgressBarModule } from \"angular-progress-bar\";\r\nimport { MaterialModule } from './shared/material/material.module';\r\n\r\nimport * as app from './store/app';\r\nimport * as adminUser from './store/adminUser';\r\nimport * as authUser from './store/authUser';\r\nimport * as metrics from './store/metrics';\r\nimport * as brsLink from './store/brsLink';\r\nimport * as channelCompany from './store/channelCompany';\r\nimport * as company from './store/company';\r\nimport * as companyIdentifier from './store/companyIdentifier';\r\nimport * as gql from './store/gql';\r\nimport * as membership from './store/membership';\r\nimport * as network from './store/network';\r\nimport * as org from './store/org';\r\nimport * as providerToken from './store/providerToken';\r\nimport * as role from './store/role';\r\nimport * as task from './store/task';\r\nimport * as userLogin from './store/userLogin';\r\nimport * as vdc from './store/vdc';\r\nimport * as vmFlat from './store/vmFlat';\r\nimport * as snapshot from './store/snapshot';\r\nimport * as templates from './store/templates';\r\nimport * as selectedTemplates from './store/selectedTemplates';\r\nimport * as product from './store/product'; \r\nimport * as dps from './store/dps';\r\nimport * as backupAuth from './store/backupAuth';\r\nimport * as backupClusterInfo from './store/backupClusterInfo';\r\nimport * as backup from './store/backup';\r\nimport * as backupJob from './store/backupJob';\r\nimport * as backupProcessJob from './store/processJob';\r\nimport * as companyUser from './store/companyUser';\r\nimport * as companyUserMemberships from './store/companyUserMemberships';\r\nimport * as tenantOfferingItems from './store/tenantOfferingItems';\r\nimport * as tenantUsages from './store/tenantUsages';\r\n\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { reducers, metaReducers, effects } from './store';\r\nimport { StoreRouterConnectingModule, RouterStateSerializer } from '@ngrx/router-store';\r\nimport { NG_ASYNC_VALIDATORS, NG_VALIDATORS, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n DYNAMIC_VALIDATORS,\r\n DynamicFormsCoreModule,\r\n Validator,\r\n ValidatorFactory,\r\n DYNAMIC_MATCHER_PROVIDERS\r\n} from \"@ng-dynamic-forms/core\";\r\nimport { DynamicFormsNGxBootstrapUIModule } from '@ng-dynamic-forms/ui-ngx-bootstrap';\r\nimport { NgxMaskModule, IConfig } from 'ngx-mask'\r\nimport {\r\n customAsyncValidator,\r\n customDateRangeValidator,\r\n customForbiddenValidator,\r\n customValidator\r\n} from \"./app.validators\";\r\nimport { LocationStrategy, PathLocationStrategy } from '@angular/common';\r\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\r\n\r\nexport const options: Partial | (() => Partial) = null;\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ],\r\n imports: [\r\n // ngrx modules\r\n StoreModule.forRoot(reducers, {\r\n metaReducers,\r\n runtimeChecks: {\r\n strictStateImmutability: false,\r\n strictActionImmutability: false,\r\n strictStateSerializability: false,\r\n strictActionSerializability: false,\r\n },\r\n }),\r\n\r\n // store / n3t application state \r\n StoreModule.forFeature(app.appFeatureKey, app.reducer),\r\n EffectsModule.forFeature([app.AppEffects]),\r\n\r\n StoreModule.forFeature(adminUser.adminUsersFeatureKey, adminUser.reducer),\r\n EffectsModule.forFeature([adminUser.AdminUserEffects]),\r\n\r\n StoreModule.forFeature(authUser.authUsersFeatureKey, authUser.reducer),\r\n EffectsModule.forFeature([authUser.AuthUserEffects]),\r\n\r\n StoreModule.forFeature(metrics.metricsFeatureKey, metrics.reducer),\r\n EffectsModule.forFeature([metrics.MetricsEffects]),\r\n\r\n StoreModule.forFeature(brsLink.brsLinksFeatureKey, brsLink.reducer),\r\n EffectsModule.forFeature([brsLink.BrsLinkEffects]),\r\n\r\n StoreModule.forFeature(channelCompany.channelCompaniesFeatureKey, channelCompany.reducer),\r\n EffectsModule.forFeature([channelCompany.ChannelCompanyEffects]),\r\n\r\n StoreModule.forFeature(company.companiesFeatureKey, company.reducer),\r\n EffectsModule.forFeature([company.CompanyEffects]),\r\n\r\n StoreModule.forFeature(companyIdentifier.companyIdentifiersFeatureKey, companyIdentifier.reducer),\r\n EffectsModule.forFeature([companyIdentifier.CompanyIdentifierEffects]),\r\n\r\n StoreModule.forFeature(gql.gqlFeatureKey, gql.reducer),\r\n EffectsModule.forFeature([gql.GqlEffects]),\r\n\r\n StoreModule.forFeature(membership.membershipsFeatureKey, membership.reducer),\r\n EffectsModule.forFeature([membership.MembershipEffects]),\r\n\r\n StoreModule.forFeature(network.networksFeatureKey, network.reducer),\r\n EffectsModule.forFeature([network.NetworkEffects]),\r\n\r\n StoreModule.forFeature(org.orgsFeatureKey, org.reducer),\r\n EffectsModule.forFeature([org.OrgEffects]),\r\n\r\n StoreModule.forFeature(providerToken.providerTokensFeatureKey, providerToken.reducer),\r\n EffectsModule.forFeature([providerToken.ProviderTokenEffects]),\r\n\r\n StoreModule.forFeature(role.rolesFeatureKey, role.reducer),\r\n EffectsModule.forFeature([role.RoleEffects]),\r\n\r\n StoreModule.forFeature(task.tasksFeatureKey, task.reducer),\r\n EffectsModule.forFeature([task.TaskEffects]),\r\n\r\n StoreModule.forFeature(userLogin.userLoginsFeatureKey, userLogin.reducer),\r\n EffectsModule.forFeature([userLogin.UserLoginEffects]),\r\n\r\n StoreModule.forFeature(vdc.vdcsFeatureKey, vdc.reducer),\r\n EffectsModule.forFeature([vdc.VdcEffects]),\r\n\r\n StoreModule.forFeature(vmFlat.vmFlatsFeatureKey, vmFlat.reducer),\r\n EffectsModule.forFeature([vmFlat.VmFlatEffects]),\r\n\r\n StoreModule.forFeature(snapshot.snapshotsFeatureKey, snapshot.reducer),\r\n EffectsModule.forFeature([snapshot.SnapshotEffects]),\r\n\r\n StoreModule.forFeature(templates.templatesFeatureKey, templates.reducer),\r\n EffectsModule.forFeature([templates.TemplatesEffects]),\r\n\r\n StoreModule.forFeature(selectedTemplates.selectedTemplatesFeatureKey, selectedTemplates.reducer),\r\n EffectsModule.forFeature([selectedTemplates.SelectedTemplatesEffects]),\r\n\r\n StoreModule.forFeature(product.productFeatureKey, product.reducer),\r\n EffectsModule.forFeature([product.ProductEffects]),\r\n\r\n StoreModule.forFeature(dps.dpsFeatureKey, dps.reducer),\r\n EffectsModule.forFeature([dps.DPSEffects]),\r\n\r\n StoreModule.forFeature(backupAuth.backupAuthFeatureKey, backupAuth.reducer),\r\n EffectsModule.forFeature([backupAuth.BackupAuthEffects]),\r\n\r\n StoreModule.forFeature(backupClusterInfo.backupClusterInfoFeatureKey, backupClusterInfo.reducer),\r\n EffectsModule.forFeature([backupClusterInfo.BackupClusterInfoEffects]),\r\n\r\n StoreModule.forFeature(backup.backupFeatureKey, backup.reducer),\r\n EffectsModule.forFeature([backup.BackupEffects]),\r\n\r\n StoreModule.forFeature(backupJob.backupJobFeatureKey, backupJob.reducer),\r\n EffectsModule.forFeature([backupJob.BackupJobEffects]),\r\n\r\n StoreModule.forFeature(backupProcessJob.backupProcessJobFeatureKey, backupProcessJob.reducer),\r\n EffectsModule.forFeature([backupProcessJob.BackupProcessJobEffects]),\r\n\r\n StoreModule.forFeature(companyUser.companyUsersFeatureKey, companyUser.reducer),\r\n EffectsModule.forFeature([companyUser.CompanyUserEffects]),\r\n\r\n StoreModule.forFeature(companyUserMemberships.companyUserMembershipsFeatureKey, companyUserMemberships.reducer),\r\n EffectsModule.forFeature([companyUserMemberships.CompanyUserMembershipsEffects]),\r\n\r\n StoreModule.forFeature(tenantOfferingItems.offeringItemsReducerFeatureKey, tenantOfferingItems.reducer),\r\n EffectsModule.forFeature([tenantOfferingItems.TenantOfferingItemsEffects]),\r\n\r\n StoreModule.forFeature(tenantUsages.tenantUsagesReducerFeatureKey, tenantUsages.reducer),\r\n EffectsModule.forFeature([tenantUsages.TenantUsagesEffects]),\r\n\r\n EffectsModule.forRoot([...effects]),\r\n StoreDevtoolsModule.instrument({\r\n maxAge: 25,\r\n actionsBlocklist: ['@ngrx/router*']\r\n }),\r\n\r\n StoreRouterConnectingModule.forRoot({\r\n serializer: CustomSerializer\r\n }\r\n ),\r\n\r\n\r\n BrowserModule,\r\n AppRoutingModule,\r\n KeycloakAngularModule,\r\n CoreModule,\r\n HttpClientModule,\r\n HttpClientJsonpModule,\r\n ErrorHandlerModule,\r\n NgMultiSelectDropDownModule.forRoot(),\r\n //ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),\r\n LoggerModule.forRoot({\r\n serverLoggingUrl: environment.loggerConfig.serverLoggingUrl,\r\n level: environment.loggerConfig.level,\r\n serverLogLevel: environment.loggerConfig.serverLogLevel,\r\n disableConsoleLogging: environment.loggerConfig.disableConsoleLogging,\r\n enableSourceMaps: environment.loggerConfig.enableSourceMaps,\r\n colorScheme: ['purple', 'green', 'gray', 'gray', 'red', 'red', 'red']\r\n }),\r\n ReactiveFormsModule,\r\n DynamicFormsNGxBootstrapUIModule,\r\n NgxMaskModule.forRoot(),\r\n NgSelectModule,\r\n ProgressBarModule,\r\n MaterialModule,\r\n NgxSliderModule,\r\n ],\r\n \r\n // keycloak provider. app_initializer is how the application is automatically directed to the keycloak login screen for authentication\r\n providers: [ \r\n // use custom serializer to strip redundant router data\r\n { provide: RouterStateSerializer, useClass: CustomSerializer },\r\n { provide: LocationStrategy, useClass: PathLocationStrategy },\r\n { provide: APP_INITIALIZER, useFactory: N3TKeycloakService.initializeKeycloak, multi: true, deps: [KeycloakService, AuthenticationService] },\r\n { provide: NG_VALIDATORS, useValue: customValidator, multi: true },\r\n { provide: NG_VALIDATORS, useValue: customDateRangeValidator, multi: true },\r\n { provide: NG_ASYNC_VALIDATORS, useValue: customAsyncValidator, multi: true },\r\n { provide: DYNAMIC_VALIDATORS, \r\n useValue: new Map([\r\n [\"customValidator\", customValidator],\r\n [\"customDateRangeValidator\", customDateRangeValidator],\r\n [\"customForbiddenValidator\", customForbiddenValidator],\r\n [\"customAsyncValidator\", customAsyncValidator]\r\n ])\r\n },\r\n \r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export function identity(x) {\n return x;\n}\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export class Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\nScheduler.now = () => Date.now();\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n });\n this.actions = [];\n this.active = false;\n this.scheduled = undefined;\n }\n schedule(work, delay = 0, state) {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return super.schedule(work, delay, state);\n }\n }\n flush(action) {\n const { actions } = this;\n if (this.active) {\n actions.push(action);\n return;\n }\n let error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","import { Action } from './Action';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, delay) {\n let errored = false;\n let errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n","import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport const defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nexport function throttle(durationSelector, config = defaultThrottleConfig) {\n return (source) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\nclass ThrottleOperator {\n constructor(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n }\n}\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n constructor(destination, durationSelector, _leading, _trailing) {\n super(destination);\n this.destination = destination;\n this.durationSelector = durationSelector;\n this._leading = _leading;\n this._trailing = _trailing;\n this._hasValue = false;\n }\n _next(value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n }\n send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n throttle(value) {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n tryDurationSelector(value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n if (_trailing) {\n this.send();\n }\n }\n notifyNext() {\n this.throttlingDone();\n }\n notifyComplete() {\n this.throttlingDone();\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from './throttle';\nexport function throttleTime(duration, scheduler = async, config = defaultThrottleConfig) {\n return (source) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\nclass ThrottleTimeOperator {\n constructor(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n }\n}\nclass ThrottleTimeSubscriber extends Subscriber {\n constructor(destination, duration, scheduler, leading, trailing) {\n super(destination);\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n this._hasTrailingValue = false;\n this._trailingValue = null;\n }\n _next(value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n }\n else {\n this.destination.complete();\n }\n }\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\nfunction dispatchNext(arg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","export function noop() { }\n","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nclass DoOperator {\n constructor(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n call(subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\nclass TapSubscriber extends Subscriber {\n constructor(destination, observerOrNext, error, complete) {\n super(destination);\n this._tapNext = noop;\n this._tapError = noop;\n this._tapComplete = noop;\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n _next(value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n _error(err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n _complete() {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return (source) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\nclass DistinctUntilChangedOperator {\n constructor(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n call(subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\nclass DistinctUntilChangedSubscriber extends Subscriber {\n constructor(destination, compare, keySelector) {\n super(destination);\n this.keySelector = keySelector;\n this.hasKey = false;\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n compare(x, y) {\n return x === y;\n }\n _next(value) {\n let key;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","// so it doesn't throw if no window or matchMedia\r\nvar w = typeof window !== 'undefined' ? window : { screen: {}, navigator: {} };\r\nvar matchMedia = (w.matchMedia || (function () { return ({ matches: false }); })).bind(w);\r\n// passive events test\r\n// adapted from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\nvar passiveOptionAccessed = false;\r\nvar options = {\r\n get passive() {\r\n return (passiveOptionAccessed = true);\r\n },\r\n};\r\n// have to set and remove a no-op listener instead of null\r\n// (which was used previously), because Edge v15 throws an error\r\n// when providing a null callback.\r\n// https://github.com/rafgraph/detect-passive-events/pull/3\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nvar noop = function () { };\r\nw.addEventListener && w.addEventListener('p', noop, options);\r\nw.removeEventListener && w.removeEventListener('p', noop, false);\r\nvar supportsPassiveEvents = passiveOptionAccessed;\r\nvar supportsPointerEvents = 'PointerEvent' in w;\r\nvar onTouchStartInWindow = 'ontouchstart' in w;\r\nvar touchEventInWindow = 'TouchEvent' in w;\r\n// onTouchStartInWindow is the old-old-legacy way to determine a touch device\r\n// and many websites interpreted it to mean that the device is a touch only phone,\r\n// so today browsers on a desktop/laptop computer with a touch screen (primary input mouse)\r\n// have onTouchStartInWindow as false (to prevent from being confused with a\r\n// touchOnly phone) even though they support the TouchEvents API, so need to check\r\n// both onTouchStartInWindow and touchEventInWindow for TouchEvent support,\r\n// however, some browsers (chromium) support the TouchEvents API even when running on\r\n// a mouse only device (touchEventInWindow true, but onTouchStartInWindow false)\r\n// so the touchEventInWindow check needs to include an coarse pointer media query\r\nvar supportsTouchEvents = onTouchStartInWindow ||\r\n (touchEventInWindow && matchMedia('(any-pointer: coarse)').matches);\r\nvar hasTouch = (w.navigator.maxTouchPoints || 0) > 0 || supportsTouchEvents;\r\n// userAgent is used as a backup to correct for known device/browser bugs\r\n// and when the browser doesn't support interaction media queries (pointer and hover)\r\n// see https://caniuse.com/css-media-interaction\r\nvar userAgent = w.navigator.userAgent || '';\r\n// iPads now support a mouse that can hover, however the media query interaction\r\n// feature results always say iPads only have a coarse pointer that can't hover\r\n// even when a mouse is connected (anyFine and anyHover are always false),\r\n// this unfortunately indicates a touch only device but iPads should\r\n// be classified as a hybrid device, so determine if it is an iPad\r\n// to indicate it should be treated as a hybrid device with anyHover true\r\nvar isIPad = matchMedia('(pointer: coarse)').matches &&\r\n // both iPad and iPhone can \"request desktop site\", which sets the userAgent to Macintosh\r\n // so need to check both userAgents to determine if it is an iOS device\r\n // and screen size to separate iPad from iPhone\r\n /iPad|Macintosh/.test(userAgent) &&\r\n Math.min(w.screen.width || 0, w.screen.height || 0) >= 768;\r\nvar hasCoarsePrimaryPointer = (matchMedia('(pointer: coarse)').matches ||\r\n // if the pointer is not coarse and not fine then the browser doesn't support\r\n // interaction media queries (see https://caniuse.com/css-media-interaction)\r\n // so if it has onTouchStartInWindow assume it has a coarse primary pointer\r\n (!matchMedia('(pointer: fine)').matches && onTouchStartInWindow)) &&\r\n // bug in firefox (as of v81) on hybrid windows devices where the interaction media queries\r\n // always indicate a touch only device (only has a coarse pointer that can't hover)\r\n // so assume that the primary pointer is not coarse for firefox windows\r\n !/Windows.*Firefox/.test(userAgent);\r\nvar hasAnyHoverOrAnyFinePointer = matchMedia('(any-pointer: fine)').matches ||\r\n matchMedia('(any-hover: hover)').matches ||\r\n // iPads might have an input device that can hover, so assume it has anyHover\r\n isIPad ||\r\n // if no onTouchStartInWindow then the browser is indicating that it is not a touch only device\r\n // see above note for supportsTouchEvents\r\n !onTouchStartInWindow;\r\n// a hybrid device is one that both hasTouch and\r\n// any input can hover or has a fine pointer, or the primary pointer is not coarse\r\n// if it's not a hybrid, then if it hasTouch it's touchOnly, otherwise it's mouseOnly\r\nvar deviceType = hasTouch && (hasAnyHoverOrAnyFinePointer || !hasCoarsePrimaryPointer)\r\n ? 'hybrid'\r\n : hasTouch\r\n ? 'touchOnly'\r\n : 'mouseOnly';\r\nvar primaryInput = deviceType === 'mouseOnly'\r\n ? 'mouse'\r\n : deviceType === 'touchOnly'\r\n ? 'touch'\r\n : // if the device is a hybrid, then if the primary pointer is coarse\r\n // assume the primaryInput is touch, otherwise assume it's mouse\r\n hasCoarsePrimaryPointer\r\n ? 'touch'\r\n : 'mouse';\n\nexport { deviceType, primaryInput, supportsPassiveEvents, supportsPointerEvents, supportsTouchEvents };\n","import { Subject } from 'rxjs';\nimport { throttleTime, tap, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { supportsPassiveEvents } from 'detect-passive-events';\nimport { Directive, ElementRef, Renderer2, HostBinding, ChangeDetectorRef, Component, ViewChild, HostListener, Input, EventEmitter, Output, ContentChild, forwardRef, NgZone, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"tooltipTemplate\"];\nconst _c1 = [\"leftOuterSelectionBar\"];\nconst _c2 = [\"rightOuterSelectionBar\"];\nconst _c3 = [\"fullBar\"];\nconst _c4 = [\"selectionBar\"];\nconst _c5 = [\"minHandle\"];\nconst _c6 = [\"maxHandle\"];\nconst _c7 = [\"floorLabel\"];\nconst _c8 = [\"ceilLabel\"];\nconst _c9 = [\"minHandleLabel\"];\nconst _c10 = [\"maxHandleLabel\"];\nconst _c11 = [\"combinedLabel\"];\nconst _c12 = [\"ticksElement\"];\nfunction SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngx-slider-tooltip-wrapper\", 31);\n} if (rf & 2) {\n const t_r13 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"template\", ctx_r14.tooltipTemplate)(\"tooltip\", t_r13.valueTooltip)(\"placement\", t_r13.valueTooltipPlacement)(\"content\", t_r13.value);\n} }\nfunction SliderComponent_span_28_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 32);\n} if (rf & 2) {\n const t_r13 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"innerHTML\", t_r13.legend, ɵngcc0.ɵɵsanitizeHtml);\n} }\nconst _c13 = function (a0) { return { \"ngx-slider-selected\": a0 }; };\nfunction SliderComponent_span_28_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 27);\n ɵngcc0.ɵɵelement(1, \"ngx-slider-tooltip-wrapper\", 28);\n ɵngcc0.ɵɵtemplate(2, SliderComponent_span_28_ngx_slider_tooltip_wrapper_2_Template, 1, 4, \"ngx-slider-tooltip-wrapper\", 29);\n ɵngcc0.ɵɵtemplate(3, SliderComponent_span_28_span_3_Template, 1, 1, \"span\", 30);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const t_r13 = ctx.$implicit;\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(7, _c13, t_r13.selected))(\"ngStyle\", t_r13.style);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"template\", ctx_r12.tooltipTemplate)(\"tooltip\", t_r13.tooltip)(\"placement\", t_r13.tooltipPlacement);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", t_r13.value != null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", t_r13.legend != null);\n} }\nfunction TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template(rf, ctx) { }\nfunction TooltipWrapperComponent_ng_container_0_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipWrapperComponent_ng_container_0_1_ng_template_0_Template, 0, 0, \"ng-template\");\n} }\nconst _c14 = function (a0, a1, a2) { return { tooltip: a0, placement: a1, content: a2 }; };\nfunction TooltipWrapperComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, TooltipWrapperComponent_ng_container_0_1_Template, 1, 0, null, 1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c14, ctx_r0.tooltip, ctx_r0.placement, ctx_r0.content));\n} }\nfunction TooltipWrapperComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 2);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"title\", ctx_r1.tooltip)(\"data-tooltip-placement\", ctx_r1.placement);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.content, \" \");\n} }\nconst LabelType = {\n /** Label above low pointer */\n Low: 0,\n /** Label above high pointer */\n High: 1,\n /** Label for minimum slider value */\n Floor: 2,\n /** Label for maximum slider value */\n Ceil: 3,\n /** Label below legend tick */\n TickValue: 4,\n};\nLabelType[LabelType.Low] = 'Low';\nLabelType[LabelType.High] = 'High';\nLabelType[LabelType.Floor] = 'Floor';\nLabelType[LabelType.Ceil] = 'Ceil';\nLabelType[LabelType.TickValue] = 'TickValue';\n/**\n * Slider options\n */\nclass Options {\n constructor() {\n /**\n * Minimum value for a slider.\n * Not applicable when using stepsArray.\n */\n this.floor = 0;\n /**\n * Maximum value for a slider.\n * Not applicable when using stepsArray.\n */\n this.ceil = null;\n /**\n * Step between each value.\n * Not applicable when using stepsArray.\n */\n this.step = 1;\n /**\n * The minimum range authorized on the slider.\n * Applies to range slider only.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.minRange = null;\n /**\n * The maximum range authorized on the slider.\n * Applies to range slider only.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.maxRange = null;\n /**\n * Set to true to have a push behavior. When the min handle goes above the max,\n * the max is moved as well (and vice-versa). The range between min and max is\n * defined by the step option (defaults to 1) and can also be overriden by\n * the minRange option. Applies to range slider only.\n */\n this.pushRange = false;\n /**\n * The minimum value authorized on the slider.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.minLimit = null;\n /**\n * The maximum value authorized on the slider.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.maxLimit = null;\n /**\n * Custom translate function. Use this if you want to translate values displayed\n * on the slider.\n */\n this.translate = null;\n /**\n * Custom function for combining overlapping labels in range slider.\n * It takes the min and max values (already translated with translate fuction)\n * and should return how these two values should be combined.\n * If not provided, the default function will join the two values with\n * ' - ' as separator.\n */\n this.combineLabels = null;\n /**\n * Use to display legend under ticks (thus, it needs to be used along with\n * showTicks or showTicksValues). The function will be called with each tick\n * value and returned content will be displayed under the tick as a legend.\n * If the returned value is null, then no legend is displayed under\n * the corresponding tick.You can also directly provide the legend values\n * in the stepsArray option.\n */\n this.getLegend = null;\n /**\n * Use to display a custom legend of a stepItem from stepsArray.\n * It will be the same as getLegend but for stepsArray.\n */\n this.getStepLegend = null;\n /**\n * If you want to display a slider with non linear/number steps.\n * Just pass an array with each slider value and that's it; the floor, ceil and step settings\n * of the slider will be computed automatically.\n * By default, the value model and valueHigh model values will be the value of the selected item\n * in the stepsArray.\n * They can also be bound to the index of the selected item by setting the bindIndexForStepsArray\n * option to true.\n */\n this.stepsArray = null;\n /**\n * Set to true to bind the index of the selected item to value model and valueHigh model.\n */\n this.bindIndexForStepsArray = false;\n /**\n * When set to true and using a range slider, the range can be dragged by the selection bar.\n * Applies to range slider only.\n */\n this.draggableRange = false;\n /**\n * Same as draggableRange but the slider range can't be changed.\n * Applies to range slider only.\n */\n this.draggableRangeOnly = false;\n /**\n * Set to true to always show the selection bar before the slider handle.\n */\n this.showSelectionBar = false;\n /**\n * Set to true to always show the selection bar after the slider handle.\n */\n this.showSelectionBarEnd = false;\n /**\n * Set a number to draw the selection bar between this value and the slider handle.\n * When using stepsArray, expressed as index into stepsArray.\n */\n this.showSelectionBarFromValue = null;\n /**\n * Only for range slider. Set to true to visualize in different colour the areas\n * on the left/right (top/bottom for vertical range slider) of selection bar between the handles.\n */\n this.showOuterSelectionBars = false;\n /**\n * Set to true to hide pointer labels\n */\n this.hidePointerLabels = false;\n /**\n * Set to true to hide min / max labels\n */\n this.hideLimitLabels = false;\n /**\n * Set to false to disable the auto-hiding behavior of the limit labels.\n */\n this.autoHideLimitLabels = true;\n /**\n * Set to true to make the slider read-only.\n */\n this.readOnly = false;\n /**\n * Set to true to disable the slider.\n */\n this.disabled = false;\n /**\n * Set to true to display a tick for each step of the slider.\n */\n this.showTicks = false;\n /**\n * Set to true to display a tick and the step value for each step of the slider..\n */\n this.showTicksValues = false;\n /* The step between each tick to display. If not set, the step value is used.\n Not used when ticksArray is specified. */\n this.tickStep = null;\n /* The step between displaying each tick step value.\n If not set, then tickStep or step is used, depending on which one is set. */\n this.tickValueStep = null;\n /**\n * Use to display ticks at specific positions.\n * The array contains the index of the ticks that should be displayed.\n * For example, [0, 1, 5] will display a tick for the first, second and sixth values.\n */\n this.ticksArray = null;\n /**\n * Used to display a tooltip when a tick is hovered.\n * Set to a function that returns the tooltip content for a given value.\n */\n this.ticksTooltip = null;\n /**\n * Same as ticksTooltip but for ticks values.\n */\n this.ticksValuesTooltip = null;\n /**\n * Set to true to display the slider vertically.\n * The slider will take the full height of its parent.\n * Changing this value at runtime is not currently supported.\n */\n this.vertical = false;\n /**\n * Function that returns the current color of the selection bar.\n * If your color won't change, don't use this option but set it through CSS.\n * If the returned color depends on a model value (either value or valueHigh),\n * you should use the argument passed to the function.\n * Indeed, when the function is called, there is no certainty that the model\n * has already been updated.\n */\n this.getSelectionBarColor = null;\n /**\n * Function that returns the color of a tick. showTicks must be enabled.\n */\n this.getTickColor = null;\n /**\n * Function that returns the current color of a pointer.\n * If your color won't change, don't use this option but set it through CSS.\n * If the returned color depends on a model value (either value or valueHigh),\n * you should use the argument passed to the function.\n * Indeed, when the function is called, there is no certainty that the model has already been updated.\n * To handle range slider pointers independently, you should evaluate pointerType within the given\n * function where \"min\" stands for value model and \"max\" for valueHigh model values.\n */\n this.getPointerColor = null;\n /**\n * Handles are focusable (on click or with tab) and can be modified using the following keyboard controls:\n * Left/bottom arrows: -1\n * Right/top arrows: +1\n * Page-down: -10%\n * Page-up: +10%\n * Home: minimum value\n * End: maximum value\n */\n this.keyboardSupport = true;\n /**\n * If you display the slider in an element that uses transform: scale(0.5), set the scale value to 2\n * so that the slider is rendered properly and the events are handled correctly.\n */\n this.scale = 1;\n /**\n * If you display the slider in an element that uses transform: rotate(90deg), set the rotate value to 90\n * so that the slider is rendered properly and the events are handled correctly. Value is in degrees.\n */\n this.rotate = 0;\n /**\n * Set to true to force the value(s) to be rounded to the step, even when modified from the outside.\n * When set to false, if the model values are modified from outside the slider, they are not rounded\n * and can be between two steps.\n */\n this.enforceStep = true;\n /**\n * Set to true to force the value(s) to be normalised to allowed range (floor to ceil), even when modified from the outside.\n * When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n * the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation.\n */\n this.enforceRange = true;\n /**\n * Set to true to force the value(s) to be rounded to the nearest step value, even when modified from the outside.\n * When set to false, if the model values are modified from outside the slider, and they are outside allowed range,\n * the slider may be rendered incorrectly. However, setting this to false may be useful if you want to perform custom normalisation.\n */\n this.enforceStepsArray = true;\n /**\n * Set to true to prevent to user from switching the min and max handles. Applies to range slider only.\n */\n this.noSwitching = false;\n /**\n * Set to true to only bind events on slider handles.\n */\n this.onlyBindHandles = false;\n /**\n * Set to true to show graphs right to left.\n * If vertical is true it will be from top to bottom and left / right arrow functions reversed.\n */\n this.rightToLeft = false;\n /**\n * Set to true to reverse keyboard navigation:\n * Right/top arrows: -1\n * Left/bottom arrows: +1\n * Page-up: -10%\n * Page-down: +10%\n * End: minimum value\n * Home: maximum value\n */\n this.reversedControls = false;\n /**\n * Set to true to keep the slider labels inside the slider bounds.\n */\n this.boundPointerLabels = true;\n /**\n * Set to true to use a logarithmic scale to display the slider.\n */\n this.logScale = false;\n /**\n * Function that returns the position on the slider for a given value.\n * The position must be a percentage between 0 and 1.\n * The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly.\n */\n this.customValueToPosition = null;\n /**\n * Function that returns the value for a given position on the slider.\n * The position is a percentage between 0 and 1.\n * The function should be monotonically increasing or decreasing; otherwise the slider may behave incorrectly.\n */\n this.customPositionToValue = null;\n /**\n * Precision limit for calculated values.\n * Values used in calculations will be rounded to this number of significant digits\n * to prevent accumulating small floating-point errors.\n */\n this.precisionLimit = 12;\n /**\n * Use to display the selection bar as a gradient.\n * The given object must contain from and to properties which are colors.\n */\n this.selectionBarGradient = null;\n /**\n * Use to add a label directly to the slider for accessibility. Adds the aria-label attribute.\n */\n this.ariaLabel = 'ngx-slider';\n /**\n * Use instead of ariaLabel to reference the id of an element which will be used to label the slider.\n * Adds the aria-labelledby attribute.\n */\n this.ariaLabelledBy = null;\n /**\n * Use to add a label directly to the slider range for accessibility. Adds the aria-label attribute.\n */\n this.ariaLabelHigh = 'ngx-slider-max';\n /**\n * Use instead of ariaLabelHigh to reference the id of an element which will be used to label the slider range.\n * Adds the aria-labelledby attribute.\n */\n this.ariaLabelledByHigh = null;\n /**\n * Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the handle\n */\n this.handleDimension = null;\n /**\n * Use to increase rendering performance. If the value is not provided, the slider calculates the with/height of the bar\n */\n this.barDimension = null;\n /**\n * Enable/disable CSS animations\n */\n this.animate = true;\n /**\n * Enable/disable CSS animations while moving the slider\n */\n this.animateOnMove = false;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @enum {number} */\nconst PointerType = {\n /** Low pointer */\n Min: 0,\n /** High pointer */\n Max: 1,\n};\nPointerType[PointerType.Min] = 'Min';\nPointerType[PointerType.Max] = 'Max';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass ChangeContext {\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Collection of functions to handle conversions/lookups of values\n */\nclass ValueHelper {\n /**\n * @param {?} value\n * @return {?}\n */\n static isNullOrUndefined(value) {\n return value === undefined || value === null;\n }\n /**\n * @param {?} array1\n * @param {?} array2\n * @return {?}\n */\n static areArraysEqual(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n /**\n * @param {?} val\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static linearValueToPosition(val, minVal, maxVal) {\n /** @type {?} */\n const range = maxVal - minVal;\n return (val - minVal) / range;\n }\n /**\n * @param {?} val\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static logValueToPosition(val, minVal, maxVal) {\n val = Math.log(val);\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n /** @type {?} */\n const range = maxVal - minVal;\n return (val - minVal) / range;\n }\n /**\n * @param {?} percent\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static linearPositionToValue(percent, minVal, maxVal) {\n return percent * (maxVal - minVal) + minVal;\n }\n /**\n * @param {?} percent\n * @param {?} minVal\n * @param {?} maxVal\n * @return {?}\n */\n static logPositionToValue(percent, minVal, maxVal) {\n minVal = Math.log(minVal);\n maxVal = Math.log(maxVal);\n /** @type {?} */\n const value = percent * (maxVal - minVal) + minVal;\n return Math.exp(value);\n }\n /**\n * @param {?} modelValue\n * @param {?} stepsArray\n * @return {?}\n */\n static findStepIndex(modelValue, stepsArray) {\n /** @type {?} */\n const differences = stepsArray.map((step) => Math.abs(modelValue - step.value));\n /** @type {?} */\n let minDifferenceIndex = 0;\n for (let index = 0; index < stepsArray.length; index++) {\n if (differences[index] !== differences[minDifferenceIndex] && differences[index] < differences[minDifferenceIndex]) {\n minDifferenceIndex = index;\n }\n }\n return minDifferenceIndex;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Helper with compatibility functions to support different browsers\n */\nclass CompatibilityHelper {\n /**\n * Workaround for TouchEvent constructor sadly not being available on all browsers (e.g. Firefox, Safari)\n * @param {?} event\n * @return {?}\n */\n static isTouchEvent(event) {\n if ((/** @type {?} */ (window)).TouchEvent !== undefined) {\n return event instanceof TouchEvent;\n }\n return event.touches !== undefined;\n }\n /**\n * Detect presence of ResizeObserver API\n * @return {?}\n */\n static isResizeObserverAvailable() {\n return (/** @type {?} */ (window)).ResizeObserver !== undefined;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Helper with mathematical functions\n */\nclass MathHelper {\n /**\n * @param {?} value\n * @param {?} precisionLimit\n * @return {?}\n */\n static roundToPrecisionLimit(value, precisionLimit) {\n return +(value.toPrecision(precisionLimit));\n }\n /**\n * @param {?} value\n * @param {?} modulo\n * @param {?} precisionLimit\n * @return {?}\n */\n static isModuloWithinPrecisionLimit(value, modulo, precisionLimit) {\n /** @type {?} */\n const limit = Math.pow(10, -precisionLimit);\n return Math.abs(value % modulo) <= limit || Math.abs(Math.abs(value % modulo) - modulo) <= limit;\n }\n /**\n * @param {?} value\n * @param {?} floor\n * @param {?} ceil\n * @return {?}\n */\n static clampToRange(value, floor, ceil) {\n return Math.min(Math.max(value, floor), ceil);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass EventListener {\n constructor() {\n this.eventName = null;\n this.events = null;\n this.eventsSubscription = null;\n this.teardownCallback = null;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Helper class to attach event listeners to DOM elements with debounce support using rxjs\n */\nclass EventListenerHelper {\n /**\n * @param {?} renderer\n */\n constructor(renderer) {\n this.renderer = renderer;\n }\n /**\n * @param {?} nativeElement\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} throttleInterval\n * @return {?}\n */\n attachPassiveEventListener(nativeElement, eventName, callback, throttleInterval) {\n // Only use passive event listeners if the browser supports it\n if (supportsPassiveEvents !== true) {\n return this.attachEventListener(nativeElement, eventName, callback, throttleInterval);\n }\n /** @type {?} */\n const listener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject();\n /** @type {?} */\n const observerCallback = (event) => {\n listener.events.next(event);\n };\n nativeElement.addEventListener(eventName, observerCallback, { passive: true, capture: false });\n listener.teardownCallback = () => {\n nativeElement.removeEventListener(eventName, observerCallback, { passive: true, capture: false });\n };\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval, undefined, { leading: true, trailing: true })\n : tap(() => { }) // no-op\n )\n .subscribe((event) => {\n callback(event);\n });\n return listener;\n }\n /**\n * @param {?} eventListener\n * @return {?}\n */\n detachEventListener(eventListener) {\n if (!ValueHelper.isNullOrUndefined(eventListener.eventsSubscription)) {\n eventListener.eventsSubscription.unsubscribe();\n eventListener.eventsSubscription = null;\n }\n if (!ValueHelper.isNullOrUndefined(eventListener.events)) {\n eventListener.events.complete();\n eventListener.events = null;\n }\n if (!ValueHelper.isNullOrUndefined(eventListener.teardownCallback)) {\n eventListener.teardownCallback();\n eventListener.teardownCallback = null;\n }\n }\n /**\n * @param {?} nativeElement\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} throttleInterval\n * @return {?}\n */\n attachEventListener(nativeElement, eventName, callback, throttleInterval) {\n /** @type {?} */\n const listener = new EventListener();\n listener.eventName = eventName;\n listener.events = new Subject();\n /** @type {?} */\n const observerCallback = (event) => {\n listener.events.next(event);\n };\n listener.teardownCallback = this.renderer.listen(nativeElement, eventName, observerCallback);\n listener.eventsSubscription = listener.events\n .pipe((!ValueHelper.isNullOrUndefined(throttleInterval))\n ? throttleTime(throttleInterval, undefined, { leading: true, trailing: true })\n : tap(() => { }) // no-op\n )\n .subscribe((event) => { callback(event); });\n return listener;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass SliderElementDirective {\n /**\n * @param {?} elemRef\n * @param {?} renderer\n * @param {?} changeDetectionRef\n */\n constructor(elemRef, renderer, changeDetectionRef) {\n this.elemRef = elemRef;\n this.renderer = renderer;\n this.changeDetectionRef = changeDetectionRef;\n this._position = 0;\n this._dimension = 0;\n this._alwaysHide = false;\n this._vertical = false;\n this._scale = 1;\n this._rotate = 0;\n this.opacity = 1;\n this.visibility = 'visible';\n this.left = '';\n this.bottom = '';\n this.height = '';\n this.width = '';\n this.transform = '';\n this.eventListeners = [];\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n /**\n * @return {?}\n */\n get position() {\n return this._position;\n }\n /**\n * @return {?}\n */\n get dimension() {\n return this._dimension;\n }\n /**\n * @return {?}\n */\n get alwaysHide() {\n return this._alwaysHide;\n }\n /**\n * @return {?}\n */\n get vertical() {\n return this._vertical;\n }\n /**\n * @return {?}\n */\n get scale() {\n return this._scale;\n }\n /**\n * @return {?}\n */\n get rotate() {\n return this._rotate;\n }\n /**\n * @param {?} hide\n * @return {?}\n */\n setAlwaysHide(hide) {\n this._alwaysHide = hide;\n if (hide) {\n this.visibility = 'hidden';\n }\n else {\n this.visibility = 'visible';\n }\n }\n /**\n * @return {?}\n */\n hide() {\n this.opacity = 0;\n }\n /**\n * @return {?}\n */\n show() {\n if (this.alwaysHide) {\n return;\n }\n this.opacity = 1;\n }\n /**\n * @return {?}\n */\n isVisible() {\n if (this.alwaysHide) {\n return false;\n }\n return this.opacity !== 0;\n }\n /**\n * @param {?} vertical\n * @return {?}\n */\n setVertical(vertical) {\n this._vertical = vertical;\n if (this._vertical) {\n this.left = '';\n this.width = '';\n }\n else {\n this.bottom = '';\n this.height = '';\n }\n }\n /**\n * @param {?} scale\n * @return {?}\n */\n setScale(scale) {\n this._scale = scale;\n }\n /**\n * @param {?} rotate\n * @return {?}\n */\n setRotate(rotate) {\n this._rotate = rotate;\n this.transform = 'rotate(' + rotate + 'deg)';\n }\n /**\n * @return {?}\n */\n getRotate() {\n return this._rotate;\n }\n /**\n * @param {?} pos\n * @return {?}\n */\n setPosition(pos) {\n if (this._position !== pos && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n this._position = pos;\n if (this._vertical) {\n this.bottom = Math.round(pos) + 'px';\n }\n else {\n this.left = Math.round(pos) + 'px';\n }\n }\n /**\n * @return {?}\n */\n calculateDimension() {\n /** @type {?} */\n const val = this.getBoundingClientRect();\n if (this.vertical) {\n this._dimension = (val.bottom - val.top) * this.scale;\n }\n else {\n this._dimension = (val.right - val.left) * this.scale;\n }\n }\n /**\n * @param {?} dim\n * @return {?}\n */\n setDimension(dim) {\n if (this._dimension !== dim && !this.isRefDestroyed()) {\n this.changeDetectionRef.markForCheck();\n }\n this._dimension = dim;\n if (this._vertical) {\n this.height = Math.round(dim) + 'px';\n }\n else {\n this.width = Math.round(dim) + 'px';\n }\n }\n /**\n * @return {?}\n */\n getBoundingClientRect() {\n return this.elemRef.nativeElement.getBoundingClientRect();\n }\n /**\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} debounceInterval\n * @return {?}\n */\n on(eventName, callback, debounceInterval) {\n /** @type {?} */\n const listener = this.eventListenerHelper.attachEventListener(this.elemRef.nativeElement, eventName, callback, debounceInterval);\n this.eventListeners.push(listener);\n }\n /**\n * @param {?} eventName\n * @param {?} callback\n * @param {?=} debounceInterval\n * @return {?}\n */\n onPassive(eventName, callback, debounceInterval) {\n /** @type {?} */\n const listener = this.eventListenerHelper.attachPassiveEventListener(this.elemRef.nativeElement, eventName, callback, debounceInterval);\n this.eventListeners.push(listener);\n }\n /**\n * @param {?=} eventName\n * @return {?}\n */\n off(eventName) {\n /** @type {?} */\n let listenersToKeep;\n /** @type {?} */\n let listenersToRemove;\n if (!ValueHelper.isNullOrUndefined(eventName)) {\n listenersToKeep = this.eventListeners.filter((event) => event.eventName !== eventName);\n listenersToRemove = this.eventListeners.filter((event) => event.eventName === eventName);\n }\n else {\n listenersToKeep = [];\n listenersToRemove = this.eventListeners;\n }\n for (const listener of listenersToRemove) {\n this.eventListenerHelper.detachEventListener(listener);\n }\n this.eventListeners = listenersToKeep;\n }\n /**\n * @return {?}\n */\n isRefDestroyed() {\n return ValueHelper.isNullOrUndefined(this.changeDetectionRef) || this.changeDetectionRef['destroyed'];\n }\n}\nSliderElementDirective.ɵfac = function SliderElementDirective_Factory(t) { return new (t || SliderElementDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSliderElementDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderElementDirective, selectors: [[\"\", \"ngxSliderElement\", \"\"]], hostVars: 14, hostBindings: function SliderElementDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.opacity)(\"visibility\", ctx.visibility)(\"left\", ctx.left)(\"bottom\", ctx.bottom)(\"height\", ctx.height)(\"width\", ctx.width)(\"transform\", ctx.transform);\n } } });\n/** @nocollapse */\nSliderElementDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\nSliderElementDirective.propDecorators = {\n opacity: [{ type: HostBinding, args: ['style.opacity',] }],\n visibility: [{ type: HostBinding, args: ['style.visibility',] }],\n left: [{ type: HostBinding, args: ['style.left',] }],\n bottom: [{ type: HostBinding, args: ['style.bottom',] }],\n height: [{ type: HostBinding, args: ['style.height',] }],\n width: [{ type: HostBinding, args: ['style.width',] }],\n transform: [{ type: HostBinding, args: ['style.transform',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderElementDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxSliderElement]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { opacity: [{\n type: HostBinding,\n args: ['style.opacity']\n }], visibility: [{\n type: HostBinding,\n args: ['style.visibility']\n }], left: [{\n type: HostBinding,\n args: ['style.left']\n }], bottom: [{\n type: HostBinding,\n args: ['style.bottom']\n }], height: [{\n type: HostBinding,\n args: ['style.height']\n }], width: [{\n type: HostBinding,\n args: ['style.width']\n }], transform: [{\n type: HostBinding,\n args: ['style.transform']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass SliderHandleDirective extends SliderElementDirective {\n /**\n * @param {?} elemRef\n * @param {?} renderer\n * @param {?} changeDetectionRef\n */\n constructor(elemRef, renderer, changeDetectionRef) {\n super(elemRef, renderer, changeDetectionRef);\n this.active = false;\n this.role = '';\n this.tabindex = '';\n this.ariaOrientation = '';\n this.ariaLabel = '';\n this.ariaLabelledBy = '';\n this.ariaValueNow = '';\n this.ariaValueText = '';\n this.ariaValueMin = '';\n this.ariaValueMax = '';\n }\n /**\n * @return {?}\n */\n focus() {\n this.elemRef.nativeElement.focus();\n }\n}\nSliderHandleDirective.ɵfac = function SliderHandleDirective_Factory(t) { return new (t || SliderHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSliderHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderHandleDirective, selectors: [[\"\", \"ngxSliderHandle\", \"\"]], hostVars: 11, hostBindings: function SliderHandleDirective_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx.tabindex)(\"aria-orientation\", ctx.ariaOrientation)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-valuenow\", ctx.ariaValueNow)(\"aria-valuetext\", ctx.ariaValueText)(\"aria-valuemin\", ctx.ariaValueMin)(\"aria-valuemax\", ctx.ariaValueMax);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-active\", ctx.active);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nSliderHandleDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\nSliderHandleDirective.propDecorators = {\n active: [{ type: HostBinding, args: ['class.ngx-slider-active',] }],\n role: [{ type: HostBinding, args: ['attr.role',] }],\n tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],\n ariaOrientation: [{ type: HostBinding, args: ['attr.aria-orientation',] }],\n ariaLabel: [{ type: HostBinding, args: ['attr.aria-label',] }],\n ariaLabelledBy: [{ type: HostBinding, args: ['attr.aria-labelledby',] }],\n ariaValueNow: [{ type: HostBinding, args: ['attr.aria-valuenow',] }],\n ariaValueText: [{ type: HostBinding, args: ['attr.aria-valuetext',] }],\n ariaValueMin: [{ type: HostBinding, args: ['attr.aria-valuemin',] }],\n ariaValueMax: [{ type: HostBinding, args: ['attr.aria-valuemax',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxSliderHandle]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { active: [{\n type: HostBinding,\n args: ['class.ngx-slider-active']\n }], role: [{\n type: HostBinding,\n args: ['attr.role']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], ariaOrientation: [{\n type: HostBinding,\n args: ['attr.aria-orientation']\n }], ariaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], ariaLabelledBy: [{\n type: HostBinding,\n args: ['attr.aria-labelledby']\n }], ariaValueNow: [{\n type: HostBinding,\n args: ['attr.aria-valuenow']\n }], ariaValueText: [{\n type: HostBinding,\n args: ['attr.aria-valuetext']\n }], ariaValueMin: [{\n type: HostBinding,\n args: ['attr.aria-valuemin']\n }], ariaValueMax: [{\n type: HostBinding,\n args: ['attr.aria-valuemax']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass SliderLabelDirective extends SliderElementDirective {\n /**\n * @param {?} elemRef\n * @param {?} renderer\n * @param {?} changeDetectionRef\n */\n constructor(elemRef, renderer, changeDetectionRef) {\n super(elemRef, renderer, changeDetectionRef);\n this._value = null;\n }\n /**\n * @return {?}\n */\n get value() {\n return this._value;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n setValue(value) {\n /** @type {?} */\n let recalculateDimension = false;\n if (!this.alwaysHide &&\n (ValueHelper.isNullOrUndefined(this.value) ||\n this.value.length !== value.length ||\n (this.value.length > 0 && this.dimension === 0))) {\n recalculateDimension = true;\n }\n this._value = value;\n this.elemRef.nativeElement.innerHTML = value;\n // Update dimension only when length of the label have changed\n if (recalculateDimension) {\n this.calculateDimension();\n }\n }\n}\nSliderLabelDirective.ɵfac = function SliderLabelDirective_Factory(t) { return new (t || SliderLabelDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nSliderLabelDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SliderLabelDirective, selectors: [[\"\", \"ngxSliderLabel\", \"\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nSliderLabelDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderLabelDirective, [{\n type: Directive,\n args: [{\n selector: '[ngxSliderLabel]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass Tick {\n constructor() {\n this.selected = false;\n this.style = {};\n this.tooltip = null;\n this.tooltipPlacement = null;\n this.value = null;\n this.valueTooltip = null;\n this.valueTooltipPlacement = null;\n this.legend = null;\n }\n}\nclass Dragging {\n constructor() {\n this.active = false;\n this.value = 0;\n this.difference = 0;\n this.position = 0;\n this.lowLimit = 0;\n this.highLimit = 0;\n }\n}\nclass ModelValues {\n /**\n * @param {?=} x\n * @param {?=} y\n * @return {?}\n */\n static compare(x, y) {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x.value === y.value && x.highValue === y.highValue;\n }\n}\nclass ModelChange extends ModelValues {\n /**\n * @param {?=} x\n * @param {?=} y\n * @return {?}\n */\n static compare(x, y) {\n if (ValueHelper.isNullOrUndefined(x) && ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n if (ValueHelper.isNullOrUndefined(x) !== ValueHelper.isNullOrUndefined(y)) {\n return false;\n }\n return x.value === y.value &&\n x.highValue === y.highValue &&\n x.forceChange === y.forceChange;\n }\n}\n/** @type {?} */\nconst NGX_SLIDER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n};\nclass SliderComponent {\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} changeDetectionRef\n * @param {?} zone\n */\n constructor(renderer, elementRef, changeDetectionRef, zone) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.changeDetectionRef = changeDetectionRef;\n this.zone = zone;\n // Model for low value of slider. For simple slider, this is the only input. For range slider, this is the low value.\n this.value = null;\n // Output for low value slider to support two-way bindings\n this.valueChange = new EventEmitter();\n // Model for high value of slider. Not used in simple slider. For range slider, this is the high value.\n this.highValue = null;\n // Output for high value slider to support two-way bindings\n this.highValueChange = new EventEmitter();\n // An object with all the other options of the slider.\n // Each option can be updated at runtime and the slider will automatically be re-rendered.\n this.options = new Options();\n // Event emitted when user starts interaction with the slider\n this.userChangeStart = new EventEmitter();\n // Event emitted on each change coming from user interaction\n this.userChange = new EventEmitter();\n // Event emitted when user finishes interaction with the slider\n this.userChangeEnd = new EventEmitter();\n this.initHasRun = false;\n this.inputModelChangeSubject = new Subject();\n this.inputModelChangeSubscription = null;\n this.outputModelChangeSubject = new Subject();\n this.outputModelChangeSubscription = null;\n this.viewLowValue = null;\n this.viewHighValue = null;\n this.viewOptions = new Options();\n this.handleHalfDimension = 0;\n this.maxHandlePosition = 0;\n this.currentTrackingPointer = null;\n this.currentFocusPointer = null;\n this.firstKeyDown = false;\n this.touchId = null;\n this.dragging = new Dragging();\n // Host element class bindings\n this.sliderElementVerticalClass = false;\n this.sliderElementAnimateClass = false;\n this.sliderElementWithLegendClass = false;\n this.sliderElementDisabledAttr = null;\n this.sliderElementAriaLabel = 'ngx-slider';\n this.barStyle = {};\n this.minPointerStyle = {};\n this.maxPointerStyle = {};\n this.fullBarTransparentClass = false;\n this.selectionBarDraggableClass = false;\n this.ticksUnderValuesClass = false;\n this.intermediateTicks = false;\n this.ticks = [];\n this.eventListenerHelper = null;\n this.onMoveEventListener = null;\n this.onEndEventListener = null;\n this.moving = false;\n this.resizeObserver = null;\n this.onTouchedCallback = null;\n this.onChangeCallback = null;\n this.eventListenerHelper = new EventListenerHelper(this.renderer);\n }\n /**\n * @param {?} manualRefresh\n * @return {?}\n */\n set manualRefresh(manualRefresh) {\n this.unsubscribeManualRefresh();\n this.manualRefreshSubscription = manualRefresh.subscribe(() => {\n setTimeout(() => this.calculateViewDimensionsAndDetectChanges());\n });\n }\n /**\n * @param {?} triggerFocus\n * @return {?}\n */\n set triggerFocus(triggerFocus) {\n this.unsubscribeTriggerFocus();\n this.triggerFocusSubscription = triggerFocus.subscribe((pointerType) => {\n this.focusPointer(pointerType);\n });\n }\n /**\n * @return {?}\n */\n get range() {\n return !ValueHelper.isNullOrUndefined(this.value) && !ValueHelper.isNullOrUndefined(this.highValue);\n }\n /**\n * @return {?}\n */\n get showTicks() {\n return this.viewOptions.showTicks;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n // We need to run these two things first, before the rest of the init in ngAfterViewInit(),\n // because these two settings are set through @HostBinding and Angular change detection\n // mechanism doesn't like them changing in ngAfterViewInit()\n this.updateDisabledState();\n this.updateVerticalState();\n this.updateAriaLabel();\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this.applyOptions();\n this.subscribeInputModelChangeSubject();\n this.subscribeOutputModelChangeSubject();\n // Once we apply options, we need to normalise model values for the first time\n this.renormaliseModelValues();\n this.viewLowValue = this.modelValueToViewValue(this.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue);\n }\n else {\n this.viewHighValue = null;\n }\n this.updateVerticalState(); // need to run this again to cover changes to slider elements\n this.manageElementsStyle();\n this.updateDisabledState();\n this.calculateViewDimensions();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n this.initHandles();\n this.manageEventsBindings();\n this.updateAriaLabel();\n this.subscribeResizeObserver();\n this.initHasRun = true;\n // Run change detection manually to resolve some issues when init procedure changes values used in the view\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n // Always apply options first\n if (!ValueHelper.isNullOrUndefined(changes[\"options\"]) &&\n JSON.stringify(changes[\"options\"].previousValue) !== JSON.stringify(changes[\"options\"].currentValue)) {\n this.onChangeOptions();\n }\n // Then value changes\n if (!ValueHelper.isNullOrUndefined(changes[\"value\"]) ||\n !ValueHelper.isNullOrUndefined(changes[\"highValue\"])) {\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.unbindEvents();\n this.unsubscribeResizeObserver();\n this.unsubscribeInputModelChangeSubject();\n this.unsubscribeOutputModelChangeSubject();\n this.unsubscribeManualRefresh();\n this.unsubscribeTriggerFocus();\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n writeValue(obj) {\n if (obj instanceof Array) {\n this.value = obj[0];\n this.highValue = obj[1];\n }\n else {\n this.value = obj;\n }\n // ngOnChanges() is not called in this instance, so we need to communicate the change manually\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: false\n });\n }\n /**\n * @param {?} onChangeCallback\n * @return {?}\n */\n registerOnChange(onChangeCallback) {\n this.onChangeCallback = onChangeCallback;\n }\n /**\n * @param {?} onTouchedCallback\n * @return {?}\n */\n registerOnTouched(onTouchedCallback) {\n this.onTouchedCallback = onTouchedCallback;\n }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this.viewOptions.disabled = isDisabled;\n this.updateDisabledState();\n }\n /**\n * @param {?} ariaLabel\n * @return {?}\n */\n setAriaLabel(ariaLabel) {\n this.viewOptions.ariaLabel = ariaLabel;\n this.updateAriaLabel();\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onResize(event) {\n this.calculateViewDimensionsAndDetectChanges();\n }\n /**\n * @return {?}\n */\n subscribeInputModelChangeSubject() {\n this.inputModelChangeSubscription = this.inputModelChangeSubject\n .pipe(distinctUntilChanged(ModelChange.compare), \n // Hack to reset the status of the distinctUntilChanged() - if a \"fake\" event comes through with forceChange=true,\n // we forcefully by-pass distinctUntilChanged(), but otherwise drop the event\n filter((modelChange) => !modelChange.forceChange && !modelChange.internalChange))\n .subscribe((modelChange) => this.applyInputModelChange(modelChange));\n }\n /**\n * @return {?}\n */\n subscribeOutputModelChangeSubject() {\n this.outputModelChangeSubscription = this.outputModelChangeSubject\n .pipe(distinctUntilChanged(ModelChange.compare))\n .subscribe((modelChange) => this.publishOutputModelChange(modelChange));\n }\n /**\n * @return {?}\n */\n subscribeResizeObserver() {\n if (CompatibilityHelper.isResizeObserverAvailable()) {\n this.resizeObserver = new ResizeObserver(() => this.calculateViewDimensionsAndDetectChanges());\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n /**\n * @return {?}\n */\n unsubscribeResizeObserver() {\n if (CompatibilityHelper.isResizeObserverAvailable() && this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeOnMove() {\n if (!ValueHelper.isNullOrUndefined(this.onMoveEventListener)) {\n this.eventListenerHelper.detachEventListener(this.onMoveEventListener);\n this.onMoveEventListener = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeOnEnd() {\n if (!ValueHelper.isNullOrUndefined(this.onEndEventListener)) {\n this.eventListenerHelper.detachEventListener(this.onEndEventListener);\n this.onEndEventListener = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeInputModelChangeSubject() {\n if (!ValueHelper.isNullOrUndefined(this.inputModelChangeSubscription)) {\n this.inputModelChangeSubscription.unsubscribe();\n this.inputModelChangeSubscription = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeOutputModelChangeSubject() {\n if (!ValueHelper.isNullOrUndefined(this.outputModelChangeSubscription)) {\n this.outputModelChangeSubscription.unsubscribe();\n this.outputModelChangeSubscription = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeManualRefresh() {\n if (!ValueHelper.isNullOrUndefined(this.manualRefreshSubscription)) {\n this.manualRefreshSubscription.unsubscribe();\n this.manualRefreshSubscription = null;\n }\n }\n /**\n * @return {?}\n */\n unsubscribeTriggerFocus() {\n if (!ValueHelper.isNullOrUndefined(this.triggerFocusSubscription)) {\n this.triggerFocusSubscription.unsubscribe();\n this.triggerFocusSubscription = null;\n }\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n getPointerElement(pointerType) {\n if (pointerType === PointerType.Min) {\n return this.minHandleElement;\n }\n else if (pointerType === PointerType.Max) {\n return this.maxHandleElement;\n }\n return null;\n }\n /**\n * @return {?}\n */\n getCurrentTrackingValue() {\n if (this.currentTrackingPointer === PointerType.Min) {\n return this.viewLowValue;\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n return this.viewHighValue;\n }\n return null;\n }\n /**\n * @param {?} modelValue\n * @return {?}\n */\n modelValueToViewValue(modelValue) {\n if (ValueHelper.isNullOrUndefined(modelValue)) {\n return NaN;\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return ValueHelper.findStepIndex(+modelValue, this.viewOptions.stepsArray);\n }\n return +modelValue;\n }\n /**\n * @param {?} viewValue\n * @return {?}\n */\n viewValueToModelValue(viewValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n return this.getStepValue(viewValue);\n }\n return viewValue;\n }\n /**\n * @param {?} sliderValue\n * @return {?}\n */\n getStepValue(sliderValue) {\n /** @type {?} */\n const step = this.viewOptions.stepsArray[sliderValue];\n return (!ValueHelper.isNullOrUndefined(step)) ? step.value : NaN;\n }\n /**\n * @return {?}\n */\n applyViewChange() {\n this.value = this.viewValueToModelValue(this.viewLowValue);\n if (this.range) {\n this.highValue = this.viewValueToModelValue(this.viewHighValue);\n }\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n userEventInitiated: true,\n forceChange: false\n });\n // At this point all changes are applied and outputs are emitted, so we should be done.\n // However, input changes are communicated in different stream and we need to be ready to\n // act on the next input change even if it is exactly the same as last input change.\n // Therefore, we send a special event to reset the stream.\n this.inputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: false,\n internalChange: true\n });\n }\n /**\n * @param {?} modelChange\n * @return {?}\n */\n applyInputModelChange(modelChange) {\n /** @type {?} */\n const normalisedModelChange = this.normaliseModelValues(modelChange);\n /** @type {?} */\n const normalisationChange = !ModelValues.compare(modelChange, normalisedModelChange);\n if (normalisationChange) {\n this.value = normalisedModelChange.value;\n this.highValue = normalisedModelChange.highValue;\n }\n this.viewLowValue = this.modelValueToViewValue(normalisedModelChange.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(normalisedModelChange.highValue);\n }\n else {\n this.viewHighValue = null;\n }\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue));\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n this.updateAriaAttributes();\n if (this.range) {\n this.updateCombinedLabel();\n }\n // At the end, we need to communicate the model change to the outputs as well\n // Normalisation changes are also always forced out to ensure that subscribers always end up in correct state\n this.outputModelChangeSubject.next({\n value: normalisedModelChange.value,\n highValue: normalisedModelChange.highValue,\n forceChange: normalisationChange,\n userEventInitiated: false\n });\n }\n /**\n * @param {?} modelChange\n * @return {?}\n */\n publishOutputModelChange(modelChange) {\n /** @type {?} */\n const emitOutputs = () => {\n this.valueChange.emit(modelChange.value);\n if (this.range) {\n this.highValueChange.emit(modelChange.highValue);\n }\n if (!ValueHelper.isNullOrUndefined(this.onChangeCallback)) {\n if (this.range) {\n this.onChangeCallback([modelChange.value, modelChange.highValue]);\n }\n else {\n this.onChangeCallback(modelChange.value);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.onTouchedCallback)) {\n if (this.range) {\n this.onTouchedCallback([modelChange.value, modelChange.highValue]);\n }\n else {\n this.onTouchedCallback(modelChange.value);\n }\n }\n };\n if (modelChange.userEventInitiated) {\n // If this change was initiated by a user event, we can emit outputs in the same tick\n emitOutputs();\n this.userChange.emit(this.getChangeContext());\n }\n else {\n // But, if the change was initated by something else like a change in input bindings,\n // we need to wait until next tick to emit the outputs to keep Angular change detection happy\n setTimeout(() => { emitOutputs(); });\n }\n }\n /**\n * @param {?} input\n * @return {?}\n */\n normaliseModelValues(input) {\n /** @type {?} */\n const normalisedInput = new ModelValues();\n normalisedInput.value = input.value;\n normalisedInput.highValue = input.highValue;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n // When using steps array, only round to nearest step in the array\n // No other enforcement can be done, as the step array may be out of order, and that is perfectly fine\n if (this.viewOptions.enforceStepsArray) {\n /** @type {?} */\n const valueIndex = ValueHelper.findStepIndex(normalisedInput.value, this.viewOptions.stepsArray);\n normalisedInput.value = this.viewOptions.stepsArray[valueIndex].value;\n if (this.range) {\n /** @type {?} */\n const highValueIndex = ValueHelper.findStepIndex(normalisedInput.highValue, this.viewOptions.stepsArray);\n normalisedInput.highValue = this.viewOptions.stepsArray[highValueIndex].value;\n }\n }\n return normalisedInput;\n }\n if (this.viewOptions.enforceStep) {\n normalisedInput.value = this.roundStep(normalisedInput.value);\n if (this.range) {\n normalisedInput.highValue = this.roundStep(normalisedInput.highValue);\n }\n }\n if (this.viewOptions.enforceRange) {\n normalisedInput.value = MathHelper.clampToRange(normalisedInput.value, this.viewOptions.floor, this.viewOptions.ceil);\n if (this.range) {\n normalisedInput.highValue = MathHelper.clampToRange(normalisedInput.highValue, this.viewOptions.floor, this.viewOptions.ceil);\n }\n // Make sure that range slider invariant (value <= highValue) is always satisfied\n if (this.range && input.value > input.highValue) {\n // We know that both values are now clamped correctly, they may just be in the wrong order\n // So the easy solution is to swap them... except swapping is sometimes disabled in options, so we make the two values the same\n if (this.viewOptions.noSwitching) {\n normalisedInput.value = normalisedInput.highValue;\n }\n else {\n /** @type {?} */\n const tempValue = input.value;\n normalisedInput.value = input.highValue;\n normalisedInput.highValue = tempValue;\n }\n }\n }\n return normalisedInput;\n }\n /**\n * @return {?}\n */\n renormaliseModelValues() {\n /** @type {?} */\n const previousModelValues = {\n value: this.value,\n highValue: this.highValue\n };\n /** @type {?} */\n const normalisedModelValues = this.normaliseModelValues(previousModelValues);\n if (!ModelValues.compare(normalisedModelValues, previousModelValues)) {\n this.value = normalisedModelValues.value;\n this.highValue = normalisedModelValues.highValue;\n this.outputModelChangeSubject.next({\n value: this.value,\n highValue: this.highValue,\n forceChange: true,\n userEventInitiated: false\n });\n }\n }\n /**\n * @return {?}\n */\n onChangeOptions() {\n if (!this.initHasRun) {\n return;\n }\n /** @type {?} */\n const previousOptionsInfluencingEventBindings = this.getOptionsInfluencingEventBindings(this.viewOptions);\n this.applyOptions();\n /** @type {?} */\n const newOptionsInfluencingEventBindings = this.getOptionsInfluencingEventBindings(this.viewOptions);\n /** @type {?} */\n const rebindEvents = !ValueHelper.areArraysEqual(previousOptionsInfluencingEventBindings, newOptionsInfluencingEventBindings);\n // With new options, we need to re-normalise model values if necessary\n this.renormaliseModelValues();\n this.viewLowValue = this.modelValueToViewValue(this.value);\n if (this.range) {\n this.viewHighValue = this.modelValueToViewValue(this.highValue);\n }\n else {\n this.viewHighValue = null;\n }\n this.resetSlider(rebindEvents);\n }\n /**\n * @return {?}\n */\n applyOptions() {\n this.viewOptions = new Options();\n Object.assign(this.viewOptions, this.options);\n this.viewOptions.draggableRange = this.range && this.viewOptions.draggableRange;\n this.viewOptions.draggableRangeOnly = this.range && this.viewOptions.draggableRangeOnly;\n if (this.viewOptions.draggableRangeOnly) {\n this.viewOptions.draggableRange = true;\n }\n this.viewOptions.showTicks = this.viewOptions.showTicks ||\n this.viewOptions.showTicksValues ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray);\n if (this.viewOptions.showTicks &&\n (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) || !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray))) {\n this.intermediateTicks = true;\n }\n this.viewOptions.showSelectionBar = this.viewOptions.showSelectionBar ||\n this.viewOptions.showSelectionBarEnd ||\n !ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n this.applyStepsArrayOptions();\n }\n else {\n this.applyFloorCeilOptions();\n }\n if (ValueHelper.isNullOrUndefined(this.viewOptions.combineLabels)) {\n this.viewOptions.combineLabels = (minValue, maxValue) => {\n return minValue + ' - ' + maxValue;\n };\n }\n if (this.viewOptions.logScale && this.viewOptions.floor === 0) {\n throw Error('Can\\'t use floor=0 with logarithmic scale');\n }\n }\n /**\n * @return {?}\n */\n applyStepsArrayOptions() {\n this.viewOptions.floor = 0;\n this.viewOptions.ceil = this.viewOptions.stepsArray.length - 1;\n this.viewOptions.step = 1;\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (modelValue) => {\n if (this.viewOptions.bindIndexForStepsArray) {\n return String(this.getStepValue(modelValue));\n }\n return String(modelValue);\n };\n }\n }\n /**\n * @return {?}\n */\n applyFloorCeilOptions() {\n if (ValueHelper.isNullOrUndefined(this.viewOptions.step)) {\n this.viewOptions.step = 1;\n }\n else {\n this.viewOptions.step = +this.viewOptions.step;\n if (this.viewOptions.step <= 0) {\n this.viewOptions.step = 1;\n }\n }\n if (ValueHelper.isNullOrUndefined(this.viewOptions.ceil) ||\n ValueHelper.isNullOrUndefined(this.viewOptions.floor)) {\n throw Error('floor and ceil options must be supplied');\n }\n this.viewOptions.ceil = +this.viewOptions.ceil;\n this.viewOptions.floor = +this.viewOptions.floor;\n if (ValueHelper.isNullOrUndefined(this.viewOptions.translate)) {\n this.viewOptions.translate = (value) => String(value);\n }\n }\n /**\n * @param {?=} rebindEvents\n * @return {?}\n */\n resetSlider(rebindEvents = true) {\n this.manageElementsStyle();\n this.addAccessibility();\n this.updateCeilLabel();\n this.updateFloorLabel();\n if (rebindEvents) {\n this.unbindEvents();\n this.manageEventsBindings();\n }\n this.updateDisabledState();\n this.updateAriaLabel();\n this.calculateViewDimensions();\n this.refocusPointerIfNeeded();\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n focusPointer(pointerType) {\n // If not supplied, use min pointer as default\n if (pointerType !== PointerType.Min && pointerType !== PointerType.Max) {\n pointerType = PointerType.Min;\n }\n if (pointerType === PointerType.Min) {\n this.minHandleElement.focus();\n }\n else if (this.range && pointerType === PointerType.Max) {\n this.maxHandleElement.focus();\n }\n }\n /**\n * @return {?}\n */\n refocusPointerIfNeeded() {\n if (!ValueHelper.isNullOrUndefined(this.currentFocusPointer)) {\n this.onPointerFocus(this.currentFocusPointer);\n /** @type {?} */\n const element = this.getPointerElement(this.currentFocusPointer);\n element.focus();\n }\n }\n /**\n * @return {?}\n */\n manageElementsStyle() {\n this.updateScale();\n this.floorLabelElement.setAlwaysHide(this.viewOptions.showTicksValues || this.viewOptions.hideLimitLabels);\n this.ceilLabelElement.setAlwaysHide(this.viewOptions.showTicksValues || this.viewOptions.hideLimitLabels);\n /** @type {?} */\n const hideLabelsForTicks = this.viewOptions.showTicksValues && !this.intermediateTicks;\n this.minHandleLabelElement.setAlwaysHide(hideLabelsForTicks || this.viewOptions.hidePointerLabels);\n this.maxHandleLabelElement.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels);\n this.combinedLabelElement.setAlwaysHide(hideLabelsForTicks || !this.range || this.viewOptions.hidePointerLabels);\n this.selectionBarElement.setAlwaysHide(!this.range && !this.viewOptions.showSelectionBar);\n this.leftOuterSelectionBarElement.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n this.rightOuterSelectionBarElement.setAlwaysHide(!this.range || !this.viewOptions.showOuterSelectionBars);\n this.fullBarTransparentClass = this.range && this.viewOptions.showOuterSelectionBars;\n this.selectionBarDraggableClass = this.viewOptions.draggableRange && !this.viewOptions.onlyBindHandles;\n this.ticksUnderValuesClass = this.intermediateTicks && this.options.showTicksValues;\n if (this.sliderElementVerticalClass !== this.viewOptions.vertical) {\n this.updateVerticalState();\n // The above change in host component class will not be applied until the end of this cycle\n // However, functions calculating the slider position expect the slider to be already styled as vertical\n // So as a workaround, we need to reset the slider once again to compute the correct values\n setTimeout(() => { this.resetSlider(); });\n }\n // Changing animate class may interfere with slider reset/initialisation, so we should set it separately,\n // after all is properly set up\n if (this.sliderElementAnimateClass !== this.viewOptions.animate) {\n setTimeout(() => { this.sliderElementAnimateClass = this.viewOptions.animate; });\n }\n this.updateRotate();\n }\n /**\n * @return {?}\n */\n manageEventsBindings() {\n if (this.viewOptions.disabled || this.viewOptions.readOnly) {\n this.unbindEvents();\n }\n else {\n this.bindEvents();\n }\n }\n /**\n * @return {?}\n */\n updateDisabledState() {\n this.sliderElementDisabledAttr = this.viewOptions.disabled ? 'disabled' : null;\n }\n /**\n * @return {?}\n */\n updateAriaLabel() {\n this.sliderElementAriaLabel = this.viewOptions.ariaLabel || 'nxg-slider';\n }\n /**\n * @return {?}\n */\n updateVerticalState() {\n this.sliderElementVerticalClass = this.viewOptions.vertical;\n for (const element of this.getAllSliderElements()) {\n // This is also called before ngAfterInit, so need to check that view child bindings work\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.setVertical(this.viewOptions.vertical);\n }\n }\n }\n /**\n * @return {?}\n */\n updateScale() {\n for (const element of this.getAllSliderElements()) {\n element.setScale(this.viewOptions.scale);\n }\n }\n /**\n * @return {?}\n */\n updateRotate() {\n for (const element of this.getAllSliderElements()) {\n element.setRotate(this.viewOptions.rotate);\n }\n }\n /**\n * @return {?}\n */\n getAllSliderElements() {\n return [this.leftOuterSelectionBarElement,\n this.rightOuterSelectionBarElement,\n this.fullBarElement,\n this.selectionBarElement,\n this.minHandleElement,\n this.maxHandleElement,\n this.floorLabelElement,\n this.ceilLabelElement,\n this.minHandleLabelElement,\n this.maxHandleLabelElement,\n this.combinedLabelElement,\n this.ticksElement\n ];\n }\n /**\n * @return {?}\n */\n initHandles() {\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n /*\n the order here is important since the selection bar should be\n updated after the high handle but before the combined label\n */\n if (this.range) {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue));\n }\n this.updateSelectionBar();\n if (this.range) {\n this.updateCombinedLabel();\n }\n this.updateTicksScale();\n }\n /**\n * @return {?}\n */\n addAccessibility() {\n this.updateAriaAttributes();\n this.minHandleElement.role = 'slider';\n if (this.viewOptions.keyboardSupport &&\n !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.minHandleElement.tabindex = '0';\n }\n else {\n this.minHandleElement.tabindex = '';\n }\n this.minHandleElement.ariaOrientation = (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? 'vertical' : 'horizontal';\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabel)) {\n this.minHandleElement.ariaLabel = this.viewOptions.ariaLabel;\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledBy)) {\n this.minHandleElement.ariaLabelledBy = this.viewOptions.ariaLabelledBy;\n }\n if (this.range) {\n this.maxHandleElement.role = 'slider';\n if (this.viewOptions.keyboardSupport &&\n !(this.viewOptions.readOnly || this.viewOptions.disabled)) {\n this.maxHandleElement.tabindex = '0';\n }\n else {\n this.maxHandleElement.tabindex = '';\n }\n this.maxHandleElement.ariaOrientation = (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? 'vertical' : 'horizontal';\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelHigh)) {\n this.maxHandleElement.ariaLabel = this.viewOptions.ariaLabelHigh;\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.ariaLabelledByHigh)) {\n this.maxHandleElement.ariaLabelledBy = this.viewOptions.ariaLabelledByHigh;\n }\n }\n }\n /**\n * @return {?}\n */\n updateAriaAttributes() {\n this.minHandleElement.ariaValueNow = (+this.value).toString();\n this.minHandleElement.ariaValueText = this.viewOptions.translate(+this.value, LabelType.Low);\n this.minHandleElement.ariaValueMin = this.viewOptions.floor.toString();\n this.minHandleElement.ariaValueMax = this.viewOptions.ceil.toString();\n if (this.range) {\n this.maxHandleElement.ariaValueNow = (+this.highValue).toString();\n this.maxHandleElement.ariaValueText = this.viewOptions.translate(+this.highValue, LabelType.High);\n this.maxHandleElement.ariaValueMin = this.viewOptions.floor.toString();\n this.maxHandleElement.ariaValueMax = this.viewOptions.ceil.toString();\n }\n }\n /**\n * @return {?}\n */\n calculateViewDimensions() {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.handleDimension)) {\n this.minHandleElement.setDimension(this.viewOptions.handleDimension);\n }\n else {\n this.minHandleElement.calculateDimension();\n }\n /** @type {?} */\n const handleWidth = this.minHandleElement.dimension;\n this.handleHalfDimension = handleWidth / 2;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.barDimension)) {\n this.fullBarElement.setDimension(this.viewOptions.barDimension);\n }\n else {\n this.fullBarElement.calculateDimension();\n }\n this.maxHandlePosition = this.fullBarElement.dimension - handleWidth;\n if (this.initHasRun) {\n this.updateFloorLabel();\n this.updateCeilLabel();\n this.initHandles();\n }\n }\n /**\n * @return {?}\n */\n calculateViewDimensionsAndDetectChanges() {\n this.calculateViewDimensions();\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * If the slider reference is already destroyed\n * @return {?} boolean - true if ref is destroyed\n */\n isRefDestroyed() {\n return this.changeDetectionRef['destroyed'];\n }\n /**\n * @return {?}\n */\n updateTicksScale() {\n if (!this.viewOptions.showTicks) {\n setTimeout(() => { this.sliderElementWithLegendClass = false; });\n return;\n }\n /** @type {?} */\n const ticksArray = !ValueHelper.isNullOrUndefined(this.viewOptions.ticksArray)\n ? this.viewOptions.ticksArray\n : this.getTicksArray();\n /** @type {?} */\n const translate = this.viewOptions.vertical ? 'translateY' : 'translateX';\n if (this.viewOptions.rightToLeft) {\n ticksArray.reverse();\n }\n /** @type {?} */\n const tickValueStep = !ValueHelper.isNullOrUndefined(this.viewOptions.tickValueStep) ? this.viewOptions.tickValueStep :\n (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep) ? this.viewOptions.tickStep : this.viewOptions.step);\n /** @type {?} */\n let hasAtLeastOneLegend = false;\n /** @type {?} */\n const newTicks = ticksArray.map((value) => {\n /** @type {?} */\n let position = this.valueToPosition(value);\n if (this.viewOptions.vertical) {\n position = this.maxHandlePosition - position;\n }\n /** @type {?} */\n const translation = translate + '(' + Math.round(position) + 'px)';\n /** @type {?} */\n const tick = new Tick();\n tick.selected = this.isTickSelected(value);\n tick.style = {\n '-webkit-transform': translation,\n '-moz-transform': translation,\n '-o-transform': translation,\n '-ms-transform': translation,\n transform: translation,\n };\n if (tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n tick.style['background-color'] = this.getSelectionBarColor();\n }\n if (!tick.selected && !ValueHelper.isNullOrUndefined(this.viewOptions.getTickColor)) {\n tick.style['background-color'] = this.getTickColor(value);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksTooltip)) {\n tick.tooltip = this.viewOptions.ticksTooltip(value);\n tick.tooltipPlacement = this.viewOptions.vertical ? 'right' : 'top';\n }\n if (this.viewOptions.showTicksValues && !ValueHelper.isNullOrUndefined(tickValueStep) &&\n MathHelper.isModuloWithinPrecisionLimit(value, tickValueStep, this.viewOptions.precisionLimit)) {\n tick.value = this.getDisplayValue(value, LabelType.TickValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.ticksValuesTooltip)) {\n tick.valueTooltip = this.viewOptions.ticksValuesTooltip(value);\n tick.valueTooltipPlacement = this.viewOptions.vertical\n ? 'right'\n : 'top';\n }\n }\n /** @type {?} */\n let legend = null;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray)) {\n /** @type {?} */\n const step = this.viewOptions.stepsArray[value];\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getStepLegend)) {\n legend = this.viewOptions.getStepLegend(step);\n }\n else if (!ValueHelper.isNullOrUndefined(step)) {\n legend = step.legend;\n }\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.getLegend)) {\n legend = this.viewOptions.getLegend(value);\n }\n if (!ValueHelper.isNullOrUndefined(legend)) {\n tick.legend = legend;\n hasAtLeastOneLegend = true;\n }\n return tick;\n });\n setTimeout(() => { this.sliderElementWithLegendClass = hasAtLeastOneLegend; });\n // We should avoid re-creating the ticks array if possible\n // This both improves performance and makes CSS animations work correctly\n if (!ValueHelper.isNullOrUndefined(this.ticks) && this.ticks.length === newTicks.length) {\n for (let i = 0; i < newTicks.length; ++i) {\n Object.assign(this.ticks[i], newTicks[i]);\n }\n }\n else {\n this.ticks = newTicks;\n }\n if (!this.isRefDestroyed()) {\n this.changeDetectionRef.detectChanges();\n }\n }\n /**\n * @return {?}\n */\n getTicksArray() {\n /** @type {?} */\n const step = (!ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)) ? this.viewOptions.tickStep : this.viewOptions.step;\n /** @type {?} */\n const ticksArray = [];\n /** @type {?} */\n const numberOfValues = 1 + Math.floor(MathHelper.roundToPrecisionLimit(Math.abs(this.viewOptions.ceil - this.viewOptions.floor) / step, this.viewOptions.precisionLimit));\n for (let index = 0; index < numberOfValues; ++index) {\n ticksArray.push(MathHelper.roundToPrecisionLimit(this.viewOptions.floor + step * index, this.viewOptions.precisionLimit));\n }\n return ticksArray;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n isTickSelected(value) {\n if (!this.range) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n /** @type {?} */\n const center = this.viewOptions.showSelectionBarFromValue;\n if (this.viewLowValue > center &&\n value >= center &&\n value <= this.viewLowValue) {\n return true;\n }\n else if (this.viewLowValue < center &&\n value <= center &&\n value >= this.viewLowValue) {\n return true;\n }\n }\n else if (this.viewOptions.showSelectionBarEnd) {\n if (value >= this.viewLowValue) {\n return true;\n }\n }\n else if (this.viewOptions.showSelectionBar && value <= this.viewLowValue) {\n return true;\n }\n }\n if (this.range && value >= this.viewLowValue && value <= this.viewHighValue) {\n return true;\n }\n return false;\n }\n /**\n * @return {?}\n */\n updateFloorLabel() {\n if (!this.floorLabelElement.alwaysHide) {\n this.floorLabelElement.setValue(this.getDisplayValue(this.viewOptions.floor, LabelType.Floor));\n this.floorLabelElement.calculateDimension();\n /** @type {?} */\n const position = this.viewOptions.rightToLeft\n ? this.fullBarElement.dimension - this.floorLabelElement.dimension\n : 0;\n this.floorLabelElement.setPosition(position);\n }\n }\n /**\n * @return {?}\n */\n updateCeilLabel() {\n if (!this.ceilLabelElement.alwaysHide) {\n this.ceilLabelElement.setValue(this.getDisplayValue(this.viewOptions.ceil, LabelType.Ceil));\n this.ceilLabelElement.calculateDimension();\n /** @type {?} */\n const position = this.viewOptions.rightToLeft\n ? 0\n : this.fullBarElement.dimension - this.ceilLabelElement.dimension;\n this.ceilLabelElement.setPosition(position);\n }\n }\n /**\n * @param {?} which\n * @param {?} newPos\n * @return {?}\n */\n updateHandles(which, newPos) {\n if (which === PointerType.Min) {\n this.updateLowHandle(newPos);\n }\n else if (which === PointerType.Max) {\n this.updateHighHandle(newPos);\n }\n this.updateSelectionBar();\n this.updateTicksScale();\n if (this.range) {\n this.updateCombinedLabel();\n }\n }\n /**\n * @param {?} labelType\n * @param {?} newPos\n * @return {?}\n */\n getHandleLabelPos(labelType, newPos) {\n /** @type {?} */\n const labelDimension = (labelType === PointerType.Min)\n ? this.minHandleLabelElement.dimension\n : this.maxHandleLabelElement.dimension;\n /** @type {?} */\n const nearHandlePos = newPos - labelDimension / 2 + this.handleHalfDimension;\n /** @type {?} */\n const endOfBarPos = this.fullBarElement.dimension - labelDimension;\n if (!this.viewOptions.boundPointerLabels) {\n return nearHandlePos;\n }\n if ((this.viewOptions.rightToLeft && labelType === PointerType.Min) ||\n (!this.viewOptions.rightToLeft && labelType === PointerType.Max)) {\n return Math.min(nearHandlePos, endOfBarPos);\n }\n else {\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\n }\n }\n /**\n * @param {?} newPos\n * @return {?}\n */\n updateLowHandle(newPos) {\n this.minHandleElement.setPosition(newPos);\n this.minHandleLabelElement.setValue(this.getDisplayValue(this.viewLowValue, LabelType.Low));\n this.minHandleLabelElement.setPosition(this.getHandleLabelPos(PointerType.Min, newPos));\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.minPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Min),\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n /**\n * @param {?} newPos\n * @return {?}\n */\n updateHighHandle(newPos) {\n this.maxHandleElement.setPosition(newPos);\n this.maxHandleLabelElement.setValue(this.getDisplayValue(this.viewHighValue, LabelType.High));\n this.maxHandleLabelElement.setPosition(this.getHandleLabelPos(PointerType.Max, newPos));\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getPointerColor)) {\n this.maxPointerStyle = {\n backgroundColor: this.getPointerColor(PointerType.Max),\n };\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n /**\n * @return {?}\n */\n updateFloorAndCeilLabelsVisibility() {\n // Show based only on hideLimitLabels if pointer labels are hidden\n if (this.viewOptions.hidePointerLabels) {\n return;\n }\n /** @type {?} */\n let floorLabelHidden = false;\n /** @type {?} */\n let ceilLabelHidden = false;\n /** @type {?} */\n const isMinLabelAtFloor = this.isLabelBelowFloorLabel(this.minHandleLabelElement);\n /** @type {?} */\n const isMinLabelAtCeil = this.isLabelAboveCeilLabel(this.minHandleLabelElement);\n /** @type {?} */\n const isMaxLabelAtCeil = this.isLabelAboveCeilLabel(this.maxHandleLabelElement);\n /** @type {?} */\n const isCombinedLabelAtFloor = this.isLabelBelowFloorLabel(this.combinedLabelElement);\n /** @type {?} */\n const isCombinedLabelAtCeil = this.isLabelAboveCeilLabel(this.combinedLabelElement);\n if (isMinLabelAtFloor) {\n floorLabelHidden = true;\n this.floorLabelElement.hide();\n }\n else {\n floorLabelHidden = false;\n this.floorLabelElement.show();\n }\n if (isMinLabelAtCeil) {\n ceilLabelHidden = true;\n this.ceilLabelElement.hide();\n }\n else {\n ceilLabelHidden = false;\n this.ceilLabelElement.show();\n }\n if (this.range) {\n /** @type {?} */\n const hideCeil = this.combinedLabelElement.isVisible() ? isCombinedLabelAtCeil : isMaxLabelAtCeil;\n /** @type {?} */\n const hideFloor = this.combinedLabelElement.isVisible() ? isCombinedLabelAtFloor : isMinLabelAtFloor;\n if (hideCeil) {\n this.ceilLabelElement.hide();\n }\n else if (!ceilLabelHidden) {\n this.ceilLabelElement.show();\n }\n // Hide or show floor label\n if (hideFloor) {\n this.floorLabelElement.hide();\n }\n else if (!floorLabelHidden) {\n this.floorLabelElement.show();\n }\n }\n }\n /**\n * @param {?} label\n * @return {?}\n */\n isLabelBelowFloorLabel(label) {\n /** @type {?} */\n const pos = label.position;\n /** @type {?} */\n const dim = label.dimension;\n /** @type {?} */\n const floorPos = this.floorLabelElement.position;\n /** @type {?} */\n const floorDim = this.floorLabelElement.dimension;\n return this.viewOptions.rightToLeft\n ? pos + dim >= floorPos - 2\n : pos <= floorPos + floorDim + 2;\n }\n /**\n * @param {?} label\n * @return {?}\n */\n isLabelAboveCeilLabel(label) {\n /** @type {?} */\n const pos = label.position;\n /** @type {?} */\n const dim = label.dimension;\n /** @type {?} */\n const ceilPos = this.ceilLabelElement.position;\n /** @type {?} */\n const ceilDim = this.ceilLabelElement.dimension;\n return this.viewOptions.rightToLeft\n ? pos <= ceilPos + ceilDim + 2\n : pos + dim >= ceilPos - 2;\n }\n /**\n * @return {?}\n */\n updateSelectionBar() {\n /** @type {?} */\n let position = 0;\n /** @type {?} */\n let dimension = 0;\n /** @type {?} */\n const isSelectionBarFromRight = this.viewOptions.rightToLeft\n ? !this.viewOptions.showSelectionBarEnd\n : this.viewOptions.showSelectionBarEnd;\n /** @type {?} */\n const positionForRange = this.viewOptions.rightToLeft\n ? this.maxHandleElement.position + this.handleHalfDimension\n : this.minHandleElement.position + this.handleHalfDimension;\n if (this.range) {\n dimension = Math.abs(this.maxHandleElement.position - this.minHandleElement.position);\n position = positionForRange;\n }\n else {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue)) {\n /** @type {?} */\n const center = this.viewOptions.showSelectionBarFromValue;\n /** @type {?} */\n const centerPosition = this.valueToPosition(center);\n /** @type {?} */\n const isModelGreaterThanCenter = this.viewOptions.rightToLeft\n ? this.viewLowValue <= center\n : this.viewLowValue > center;\n if (isModelGreaterThanCenter) {\n dimension = this.minHandleElement.position - centerPosition;\n position = centerPosition + this.handleHalfDimension;\n }\n else {\n dimension = centerPosition - this.minHandleElement.position;\n position = this.minHandleElement.position + this.handleHalfDimension;\n }\n }\n else if (isSelectionBarFromRight) {\n dimension = Math.ceil(Math.abs(this.maxHandlePosition - this.minHandleElement.position) + this.handleHalfDimension);\n position = Math.floor(this.minHandleElement.position + this.handleHalfDimension);\n }\n else {\n dimension = this.minHandleElement.position + this.handleHalfDimension;\n position = 0;\n }\n }\n this.selectionBarElement.setDimension(dimension);\n this.selectionBarElement.setPosition(position);\n if (this.range && this.viewOptions.showOuterSelectionBars) {\n if (this.viewOptions.rightToLeft) {\n this.rightOuterSelectionBarElement.setDimension(position);\n this.rightOuterSelectionBarElement.setPosition(0);\n this.fullBarElement.calculateDimension();\n this.leftOuterSelectionBarElement.setDimension(this.fullBarElement.dimension - (position + dimension));\n this.leftOuterSelectionBarElement.setPosition(position + dimension);\n }\n else {\n this.leftOuterSelectionBarElement.setDimension(position);\n this.leftOuterSelectionBarElement.setPosition(0);\n this.fullBarElement.calculateDimension();\n this.rightOuterSelectionBarElement.setDimension(this.fullBarElement.dimension - (position + dimension));\n this.rightOuterSelectionBarElement.setPosition(position + dimension);\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.getSelectionBarColor)) {\n /** @type {?} */\n const color = this.getSelectionBarColor();\n this.barStyle = {\n backgroundColor: color,\n };\n }\n else if (!ValueHelper.isNullOrUndefined(this.viewOptions.selectionBarGradient)) {\n /** @type {?} */\n const offset = (!ValueHelper.isNullOrUndefined(this.viewOptions.showSelectionBarFromValue))\n ? this.valueToPosition(this.viewOptions.showSelectionBarFromValue)\n : 0;\n /** @type {?} */\n const reversed = (offset - position > 0 && !isSelectionBarFromRight) || (offset - position <= 0 && isSelectionBarFromRight);\n /** @type {?} */\n const direction = this.viewOptions.vertical\n ? reversed ? 'bottom' : 'top'\n : reversed ? 'left' : 'right';\n this.barStyle = {\n backgroundImage: 'linear-gradient(to ' +\n direction +\n ', ' +\n this.viewOptions.selectionBarGradient.from +\n ' 0%,' +\n this.viewOptions.selectionBarGradient.to +\n ' 100%)',\n };\n if (this.viewOptions.vertical) {\n this.barStyle.backgroundPosition =\n 'center ' +\n (offset +\n dimension +\n position +\n (reversed ? -this.handleHalfDimension : 0)) +\n 'px';\n this.barStyle.backgroundSize =\n '100% ' + (this.fullBarElement.dimension - this.handleHalfDimension) + 'px';\n }\n else {\n this.barStyle.backgroundPosition =\n offset -\n position +\n (reversed ? this.handleHalfDimension : 0) +\n 'px center';\n this.barStyle.backgroundSize =\n this.fullBarElement.dimension - this.handleHalfDimension + 'px 100%';\n }\n }\n }\n /**\n * @return {?}\n */\n getSelectionBarColor() {\n if (this.range) {\n return this.viewOptions.getSelectionBarColor(this.value, this.highValue);\n }\n return this.viewOptions.getSelectionBarColor(this.value);\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n getPointerColor(pointerType) {\n if (pointerType === PointerType.Max) {\n return this.viewOptions.getPointerColor(this.highValue, pointerType);\n }\n return this.viewOptions.getPointerColor(this.value, pointerType);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n getTickColor(value) {\n return this.viewOptions.getTickColor(value);\n }\n /**\n * @return {?}\n */\n updateCombinedLabel() {\n /** @type {?} */\n let isLabelOverlap = null;\n if (this.viewOptions.rightToLeft) {\n isLabelOverlap =\n this.minHandleLabelElement.position - this.minHandleLabelElement.dimension - 10 <= this.maxHandleLabelElement.position;\n }\n else {\n isLabelOverlap =\n this.minHandleLabelElement.position + this.minHandleLabelElement.dimension + 10 >= this.maxHandleLabelElement.position;\n }\n if (isLabelOverlap) {\n /** @type {?} */\n const lowDisplayValue = this.getDisplayValue(this.viewLowValue, LabelType.Low);\n /** @type {?} */\n const highDisplayValue = this.getDisplayValue(this.viewHighValue, LabelType.High);\n /** @type {?} */\n const combinedLabelValue = this.viewOptions.rightToLeft\n ? this.viewOptions.combineLabels(highDisplayValue, lowDisplayValue)\n : this.viewOptions.combineLabels(lowDisplayValue, highDisplayValue);\n this.combinedLabelElement.setValue(combinedLabelValue);\n /** @type {?} */\n const pos = this.viewOptions.boundPointerLabels\n ? Math.min(Math.max(this.selectionBarElement.position +\n this.selectionBarElement.dimension / 2 -\n this.combinedLabelElement.dimension / 2, 0), this.fullBarElement.dimension - this.combinedLabelElement.dimension)\n : this.selectionBarElement.position + this.selectionBarElement.dimension / 2 - this.combinedLabelElement.dimension / 2;\n this.combinedLabelElement.setPosition(pos);\n this.minHandleLabelElement.hide();\n this.maxHandleLabelElement.hide();\n this.combinedLabelElement.show();\n }\n else {\n this.updateHighHandle(this.valueToPosition(this.viewHighValue));\n this.updateLowHandle(this.valueToPosition(this.viewLowValue));\n this.maxHandleLabelElement.show();\n this.minHandleLabelElement.show();\n this.combinedLabelElement.hide();\n }\n if (this.viewOptions.autoHideLimitLabels) {\n this.updateFloorAndCeilLabelsVisibility();\n }\n }\n /**\n * @param {?} value\n * @param {?} which\n * @return {?}\n */\n getDisplayValue(value, which) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.stepsArray) && !this.viewOptions.bindIndexForStepsArray) {\n value = this.getStepValue(value);\n }\n return this.viewOptions.translate(value, which);\n }\n /**\n * @param {?} value\n * @param {?=} customStep\n * @return {?}\n */\n roundStep(value, customStep) {\n /** @type {?} */\n const step = !ValueHelper.isNullOrUndefined(customStep) ? customStep : this.viewOptions.step;\n /** @type {?} */\n let steppedDifference = MathHelper.roundToPrecisionLimit((value - this.viewOptions.floor) / step, this.viewOptions.precisionLimit);\n steppedDifference = Math.round(steppedDifference) * step;\n return MathHelper.roundToPrecisionLimit(this.viewOptions.floor + steppedDifference, this.viewOptions.precisionLimit);\n }\n /**\n * @param {?} val\n * @return {?}\n */\n valueToPosition(val) {\n /** @type {?} */\n let fn = ValueHelper.linearValueToPosition;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customValueToPosition)) {\n fn = this.viewOptions.customValueToPosition;\n }\n else if (this.viewOptions.logScale) {\n fn = ValueHelper.logValueToPosition;\n }\n val = MathHelper.clampToRange(val, this.viewOptions.floor, this.viewOptions.ceil);\n /** @type {?} */\n let percent = fn(val, this.viewOptions.floor, this.viewOptions.ceil);\n if (ValueHelper.isNullOrUndefined(percent)) {\n percent = 0;\n }\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n return percent * this.maxHandlePosition;\n }\n /**\n * @param {?} position\n * @return {?}\n */\n positionToValue(position) {\n /** @type {?} */\n let percent = position / this.maxHandlePosition;\n if (this.viewOptions.rightToLeft) {\n percent = 1 - percent;\n }\n /** @type {?} */\n let fn = ValueHelper.linearPositionToValue;\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.customPositionToValue)) {\n fn = this.viewOptions.customPositionToValue;\n }\n else if (this.viewOptions.logScale) {\n fn = ValueHelper.logPositionToValue;\n }\n /** @type {?} */\n const value = fn(percent, this.viewOptions.floor, this.viewOptions.ceil);\n return !ValueHelper.isNullOrUndefined(value) ? value : 0;\n }\n /**\n * @param {?} event\n * @param {?=} targetTouchId\n * @return {?}\n */\n getEventXY(event, targetTouchId) {\n if (event instanceof MouseEvent) {\n return (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? event.clientY : event.clientX;\n }\n /** @type {?} */\n let touchIndex = 0;\n /** @type {?} */\n const touches = event.touches;\n if (!ValueHelper.isNullOrUndefined(targetTouchId)) {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === targetTouchId) {\n touchIndex = i;\n break;\n }\n }\n }\n // Return the target touch or if the target touch was not found in the event\n // returns the coordinates of the first touch\n return (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ? touches[touchIndex].clientY : touches[touchIndex].clientX;\n }\n /**\n * @param {?} event\n * @param {?=} targetTouchId\n * @return {?}\n */\n getEventPosition(event, targetTouchId) {\n /** @type {?} */\n const sliderElementBoundingRect = this.elementRef.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const sliderPos = (this.viewOptions.vertical || this.viewOptions.rotate !== 0) ?\n sliderElementBoundingRect.bottom : sliderElementBoundingRect.left;\n /** @type {?} */\n let eventPos = 0;\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n eventPos = -this.getEventXY(event, targetTouchId) + sliderPos;\n }\n else {\n eventPos = this.getEventXY(event, targetTouchId) - sliderPos;\n }\n return eventPos * this.viewOptions.scale - this.handleHalfDimension;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n getNearestHandle(event) {\n if (!this.range) {\n return PointerType.Min;\n }\n /** @type {?} */\n const position = this.getEventPosition(event);\n /** @type {?} */\n const distanceMin = Math.abs(position - this.minHandleElement.position);\n /** @type {?} */\n const distanceMax = Math.abs(position - this.maxHandleElement.position);\n if (distanceMin < distanceMax) {\n return PointerType.Min;\n }\n else if (distanceMin > distanceMax) {\n return PointerType.Max;\n }\n else if (!this.viewOptions.rightToLeft) {\n // if event is at the same distance from min/max then if it's at left of minH, we return minH else maxH\n return position < this.minHandleElement.position ? PointerType.Min : PointerType.Max;\n }\n // reverse in rtl\n return position > this.minHandleElement.position ? PointerType.Min : PointerType.Max;\n }\n /**\n * @return {?}\n */\n bindEvents() {\n /** @type {?} */\n const draggableRange = this.viewOptions.draggableRange;\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement.on('mousedown', (event) => this.onBarStart(null, draggableRange, event, true, true, true));\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement.on('mousedown', (event) => this.onBarStart(PointerType.Min, draggableRange, event, true, true));\n this.maxHandleElement.on('mousedown', (event) => this.onBarStart(PointerType.Max, draggableRange, event, true, true));\n }\n else {\n this.minHandleElement.on('mousedown', (event) => this.onStart(PointerType.Min, event, true, true));\n if (this.range) {\n this.maxHandleElement.on('mousedown', (event) => this.onStart(PointerType.Max, event, true, true));\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement.on('mousedown', (event) => this.onStart(null, event, true, true, true));\n this.ticksElement.on('mousedown', (event) => this.onStart(null, event, true, true, true, true));\n }\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.selectionBarElement.onPassive('touchstart', (event) => this.onBarStart(null, draggableRange, event, true, true, true));\n }\n if (this.viewOptions.draggableRangeOnly) {\n this.minHandleElement.onPassive('touchstart', (event) => this.onBarStart(PointerType.Min, draggableRange, event, true, true));\n this.maxHandleElement.onPassive('touchstart', (event) => this.onBarStart(PointerType.Max, draggableRange, event, true, true));\n }\n else {\n this.minHandleElement.onPassive('touchstart', (event) => this.onStart(PointerType.Min, event, true, true));\n if (this.range) {\n this.maxHandleElement.onPassive('touchstart', (event) => this.onStart(PointerType.Max, event, true, true));\n }\n if (!this.viewOptions.onlyBindHandles) {\n this.fullBarElement.onPassive('touchstart', (event) => this.onStart(null, event, true, true, true));\n this.ticksElement.onPassive('touchstart', (event) => this.onStart(null, event, false, false, true, true));\n }\n }\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement.on('focus', () => this.onPointerFocus(PointerType.Min));\n if (this.range) {\n this.maxHandleElement.on('focus', () => this.onPointerFocus(PointerType.Max));\n }\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n getOptionsInfluencingEventBindings(options) {\n return [\n options.disabled,\n options.readOnly,\n options.draggableRange,\n options.draggableRangeOnly,\n options.onlyBindHandles,\n options.keyboardSupport\n ];\n }\n /**\n * @return {?}\n */\n unbindEvents() {\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n for (const element of this.getAllSliderElements()) {\n if (!ValueHelper.isNullOrUndefined(element)) {\n element.off();\n }\n }\n }\n /**\n * @param {?} pointerType\n * @param {?} draggableRange\n * @param {?} event\n * @param {?} bindMove\n * @param {?} bindEnd\n * @param {?=} simulateImmediateMove\n * @param {?=} simulateImmediateEnd\n * @return {?}\n */\n onBarStart(pointerType, draggableRange, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd) {\n if (draggableRange) {\n this.onDragStart(pointerType, event, bindMove, bindEnd);\n }\n else {\n this.onStart(pointerType, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd);\n }\n }\n /**\n * @param {?} pointerType\n * @param {?} event\n * @param {?} bindMove\n * @param {?} bindEnd\n * @param {?=} simulateImmediateMove\n * @param {?=} simulateImmediateEnd\n * @return {?}\n */\n onStart(pointerType, event, bindMove, bindEnd, simulateImmediateMove, simulateImmediateEnd) {\n event.stopPropagation();\n // Only call preventDefault() when handling non-passive events (passive events don't need it)\n if (!CompatibilityHelper.isTouchEvent(event) && !supportsPassiveEvents) {\n event.preventDefault();\n }\n this.moving = false;\n // We have to do this in case the HTML where the sliders are on\n // have been animated into view.\n this.calculateViewDimensions();\n if (ValueHelper.isNullOrUndefined(pointerType)) {\n pointerType = this.getNearestHandle(event);\n }\n this.currentTrackingPointer = pointerType;\n /** @type {?} */\n const pointerElement = this.getPointerElement(pointerType);\n pointerElement.active = true;\n if (this.viewOptions.keyboardSupport) {\n pointerElement.focus();\n }\n if (bindMove) {\n this.unsubscribeOnMove();\n /** @type {?} */\n const onMoveCallback = (e) => this.dragging.active ? this.onDragMove(e) : this.onMove(e);\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onMoveEventListener = this.eventListenerHelper.attachPassiveEventListener(document, 'touchmove', onMoveCallback);\n }\n else {\n this.onMoveEventListener = this.eventListenerHelper.attachEventListener(document, 'mousemove', onMoveCallback);\n }\n }\n if (bindEnd) {\n this.unsubscribeOnEnd();\n /** @type {?} */\n const onEndCallback = (e) => this.onEnd(e);\n if (CompatibilityHelper.isTouchEvent(event)) {\n this.onEndEventListener = this.eventListenerHelper.attachPassiveEventListener(document, 'touchend', onEndCallback);\n }\n else {\n this.onEndEventListener = this.eventListenerHelper.attachEventListener(document, 'mouseup', onEndCallback);\n }\n }\n this.userChangeStart.emit(this.getChangeContext());\n if (CompatibilityHelper.isTouchEvent(event) && !ValueHelper.isNullOrUndefined((/** @type {?} */ (event)).changedTouches)) {\n // Store the touch identifier\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.touchId = (/** @type {?} */ (event)).changedTouches[0].identifier;\n }\n }\n // Click events, either with mouse or touch gesture are weird. Sometimes they result in full\n // start, move, end sequence, and sometimes, they don't - they only invoke mousedown\n // As a workaround, we simulate the first move event and the end event if it's necessary\n if (simulateImmediateMove) {\n this.onMove(event, true);\n }\n if (simulateImmediateEnd) {\n this.onEnd(event);\n }\n }\n /**\n * @param {?} event\n * @param {?=} fromTick\n * @return {?}\n */\n onMove(event, fromTick) {\n /** @type {?} */\n let touchForThisSlider = null;\n if (CompatibilityHelper.isTouchEvent(event)) {\n /** @type {?} */\n const changedTouches = (/** @type {?} */ (event)).changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n if (changedTouches[i].identifier === this.touchId) {\n touchForThisSlider = changedTouches[i];\n break;\n }\n }\n if (ValueHelper.isNullOrUndefined(touchForThisSlider)) {\n return;\n }\n }\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n this.moving = true;\n /** @type {?} */\n const newPos = !ValueHelper.isNullOrUndefined(touchForThisSlider)\n ? this.getEventPosition(event, touchForThisSlider.identifier)\n : this.getEventPosition(event);\n /** @type {?} */\n let newValue;\n /** @type {?} */\n const ceilValue = this.viewOptions.rightToLeft\n ? this.viewOptions.floor\n : this.viewOptions.ceil;\n /** @type {?} */\n const floorValue = this.viewOptions.rightToLeft ? this.viewOptions.ceil : this.viewOptions.floor;\n if (newPos <= 0) {\n newValue = floorValue;\n }\n else if (newPos >= this.maxHandlePosition) {\n newValue = ceilValue;\n }\n else {\n newValue = this.positionToValue(newPos);\n if (fromTick && !ValueHelper.isNullOrUndefined(this.viewOptions.tickStep)) {\n newValue = this.roundStep(newValue, this.viewOptions.tickStep);\n }\n else {\n newValue = this.roundStep(newValue);\n }\n }\n this.positionTrackingHandle(newValue);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onEnd(event) {\n if (CompatibilityHelper.isTouchEvent(event)) {\n /** @type {?} */\n const changedTouches = (/** @type {?} */ (event)).changedTouches;\n if (changedTouches[0].identifier !== this.touchId) {\n return;\n }\n }\n this.moving = false;\n if (this.viewOptions.animate) {\n this.sliderElementAnimateClass = true;\n }\n this.touchId = null;\n if (!this.viewOptions.keyboardSupport) {\n this.minHandleElement.active = false;\n this.maxHandleElement.active = false;\n this.currentTrackingPointer = null;\n }\n this.dragging.active = false;\n this.unsubscribeOnMove();\n this.unsubscribeOnEnd();\n this.userChangeEnd.emit(this.getChangeContext());\n }\n /**\n * @param {?} pointerType\n * @return {?}\n */\n onPointerFocus(pointerType) {\n /** @type {?} */\n const pointerElement = this.getPointerElement(pointerType);\n pointerElement.on('blur', () => this.onPointerBlur(pointerElement));\n pointerElement.on('keydown', (event) => this.onKeyboardEvent(event));\n pointerElement.on('keyup', () => this.onKeyUp());\n pointerElement.active = true;\n this.currentTrackingPointer = pointerType;\n this.currentFocusPointer = pointerType;\n this.firstKeyDown = true;\n }\n /**\n * @return {?}\n */\n onKeyUp() {\n this.firstKeyDown = true;\n this.userChangeEnd.emit(this.getChangeContext());\n }\n /**\n * @param {?} pointer\n * @return {?}\n */\n onPointerBlur(pointer) {\n pointer.off('blur');\n pointer.off('keydown');\n pointer.off('keyup');\n pointer.active = false;\n if (ValueHelper.isNullOrUndefined(this.touchId)) {\n this.currentTrackingPointer = null;\n this.currentFocusPointer = null;\n }\n }\n /**\n * @param {?} currentValue\n * @return {?}\n */\n getKeyActions(currentValue) {\n /** @type {?} */\n const valueRange = this.viewOptions.ceil - this.viewOptions.floor;\n /** @type {?} */\n let increaseStep = currentValue + this.viewOptions.step;\n /** @type {?} */\n let decreaseStep = currentValue - this.viewOptions.step;\n /** @type {?} */\n let increasePage = currentValue + valueRange / 10;\n /** @type {?} */\n let decreasePage = currentValue - valueRange / 10;\n if (this.viewOptions.reversedControls) {\n increaseStep = currentValue - this.viewOptions.step;\n decreaseStep = currentValue + this.viewOptions.step;\n increasePage = currentValue - valueRange / 10;\n decreasePage = currentValue + valueRange / 10;\n }\n /** @type {?} */\n const actions = {\n UP: increaseStep,\n DOWN: decreaseStep,\n LEFT: decreaseStep,\n RIGHT: increaseStep,\n PAGEUP: increasePage,\n PAGEDOWN: decreasePage,\n HOME: this.viewOptions.reversedControls ? this.viewOptions.ceil : this.viewOptions.floor,\n END: this.viewOptions.reversedControls ? this.viewOptions.floor : this.viewOptions.ceil,\n };\n // right to left means swapping right and left arrows\n if (this.viewOptions.rightToLeft) {\n actions[\"LEFT\"] = increaseStep;\n actions[\"RIGHT\"] = decreaseStep;\n // right to left and vertical means we also swap up and down\n if (this.viewOptions.vertical || this.viewOptions.rotate !== 0) {\n actions[\"UP\"] = decreaseStep;\n actions[\"DOWN\"] = increaseStep;\n }\n }\n return actions;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onKeyboardEvent(event) {\n /** @type {?} */\n const currentValue = this.getCurrentTrackingValue();\n /** @type {?} */\n const keyCode = !ValueHelper.isNullOrUndefined(event.keyCode)\n ? event.keyCode\n : event.which;\n /** @type {?} */\n const keys = {\n 38: 'UP',\n 40: 'DOWN',\n 37: 'LEFT',\n 39: 'RIGHT',\n 33: 'PAGEUP',\n 34: 'PAGEDOWN',\n 36: 'HOME',\n 35: 'END',\n };\n /** @type {?} */\n const actions = this.getKeyActions(currentValue);\n /** @type {?} */\n const key = keys[keyCode];\n /** @type {?} */\n const action = actions[key];\n if (ValueHelper.isNullOrUndefined(action) || ValueHelper.isNullOrUndefined(this.currentTrackingPointer)) {\n return;\n }\n event.preventDefault();\n if (this.firstKeyDown) {\n this.firstKeyDown = false;\n this.userChangeStart.emit(this.getChangeContext());\n }\n /** @type {?} */\n const actionValue = MathHelper.clampToRange(action, this.viewOptions.floor, this.viewOptions.ceil);\n /** @type {?} */\n const newValue = this.roundStep(actionValue);\n if (!this.viewOptions.draggableRangeOnly) {\n this.positionTrackingHandle(newValue);\n }\n else {\n /** @type {?} */\n const difference = this.viewHighValue - this.viewLowValue;\n /** @type {?} */\n let newMinValue;\n /** @type {?} */\n let newMaxValue;\n if (this.currentTrackingPointer === PointerType.Min) {\n newMinValue = newValue;\n newMaxValue = newValue + difference;\n if (newMaxValue > this.viewOptions.ceil) {\n newMaxValue = this.viewOptions.ceil;\n newMinValue = newMaxValue - difference;\n }\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n newMaxValue = newValue;\n newMinValue = newValue - difference;\n if (newMinValue < this.viewOptions.floor) {\n newMinValue = this.viewOptions.floor;\n newMaxValue = newMinValue + difference;\n }\n }\n this.positionTrackingBar(newMinValue, newMaxValue);\n }\n }\n /**\n * @param {?} pointerType\n * @param {?} event\n * @param {?} bindMove\n * @param {?} bindEnd\n * @return {?}\n */\n onDragStart(pointerType, event, bindMove, bindEnd) {\n /** @type {?} */\n const position = this.getEventPosition(event);\n this.dragging = new Dragging();\n this.dragging.active = true;\n this.dragging.value = this.positionToValue(position);\n this.dragging.difference = this.viewHighValue - this.viewLowValue;\n this.dragging.lowLimit = this.viewOptions.rightToLeft\n ? this.minHandleElement.position - position\n : position - this.minHandleElement.position;\n this.dragging.highLimit = this.viewOptions.rightToLeft\n ? position - this.maxHandleElement.position\n : this.maxHandleElement.position - position;\n this.onStart(pointerType, event, bindMove, bindEnd);\n }\n /**\n * Get min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft\n * @param {?} newPos\n * @param {?} outOfBounds\n * @param {?} isAbove\n * @return {?}\n */\n getMinValue(newPos, outOfBounds, isAbove) {\n /** @type {?} */\n const isRTL = this.viewOptions.rightToLeft;\n /** @type {?} */\n let value = null;\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL\n ? this.viewOptions.floor\n : this.viewOptions.ceil - this.dragging.difference;\n }\n else {\n value = isRTL\n ? this.viewOptions.ceil - this.dragging.difference\n : this.viewOptions.floor;\n }\n }\n else {\n value = isRTL\n ? this.positionToValue(newPos + this.dragging.lowLimit)\n : this.positionToValue(newPos - this.dragging.lowLimit);\n }\n return this.roundStep(value);\n }\n /**\n * Get max value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft\n * @param {?} newPos\n * @param {?} outOfBounds\n * @param {?} isAbove\n * @return {?}\n */\n getMaxValue(newPos, outOfBounds, isAbove) {\n /** @type {?} */\n const isRTL = this.viewOptions.rightToLeft;\n /** @type {?} */\n let value = null;\n if (outOfBounds) {\n if (isAbove) {\n value = isRTL\n ? this.viewOptions.floor + this.dragging.difference\n : this.viewOptions.ceil;\n }\n else {\n value = isRTL\n ? this.viewOptions.ceil\n : this.viewOptions.floor + this.dragging.difference;\n }\n }\n else {\n if (isRTL) {\n value =\n this.positionToValue(newPos + this.dragging.lowLimit) +\n this.dragging.difference;\n }\n else {\n value =\n this.positionToValue(newPos - this.dragging.lowLimit) +\n this.dragging.difference;\n }\n }\n return this.roundStep(value);\n }\n /**\n * @param {?=} event\n * @return {?}\n */\n onDragMove(event) {\n /** @type {?} */\n const newPos = this.getEventPosition(event);\n if (this.viewOptions.animate && !this.viewOptions.animateOnMove) {\n if (this.moving) {\n this.sliderElementAnimateClass = false;\n }\n }\n this.moving = true;\n /** @type {?} */\n let ceilLimit;\n /** @type {?} */\n let floorLimit;\n /** @type {?} */\n let floorHandleElement;\n /** @type {?} */\n let ceilHandleElement;\n if (this.viewOptions.rightToLeft) {\n ceilLimit = this.dragging.lowLimit;\n floorLimit = this.dragging.highLimit;\n floorHandleElement = this.maxHandleElement;\n ceilHandleElement = this.minHandleElement;\n }\n else {\n ceilLimit = this.dragging.highLimit;\n floorLimit = this.dragging.lowLimit;\n floorHandleElement = this.minHandleElement;\n ceilHandleElement = this.maxHandleElement;\n }\n /** @type {?} */\n const isUnderFloorLimit = (newPos <= floorLimit);\n /** @type {?} */\n const isOverCeilLimit = (newPos >= this.maxHandlePosition - ceilLimit);\n /** @type {?} */\n let newMinValue;\n /** @type {?} */\n let newMaxValue;\n if (isUnderFloorLimit) {\n if (floorHandleElement.position === 0) {\n return;\n }\n newMinValue = this.getMinValue(newPos, true, false);\n newMaxValue = this.getMaxValue(newPos, true, false);\n }\n else if (isOverCeilLimit) {\n if (ceilHandleElement.position === this.maxHandlePosition) {\n return;\n }\n newMaxValue = this.getMaxValue(newPos, true, true);\n newMinValue = this.getMinValue(newPos, true, true);\n }\n else {\n newMinValue = this.getMinValue(newPos, false, false);\n newMaxValue = this.getMaxValue(newPos, false, false);\n }\n this.positionTrackingBar(newMinValue, newMaxValue);\n }\n /**\n * @param {?} newMinValue\n * @param {?} newMaxValue\n * @return {?}\n */\n positionTrackingBar(newMinValue, newMaxValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) &&\n newMinValue < this.viewOptions.minLimit) {\n newMinValue = this.viewOptions.minLimit;\n newMaxValue = MathHelper.roundToPrecisionLimit(newMinValue + this.dragging.difference, this.viewOptions.precisionLimit);\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) &&\n newMaxValue > this.viewOptions.maxLimit) {\n newMaxValue = this.viewOptions.maxLimit;\n newMinValue = MathHelper.roundToPrecisionLimit(newMaxValue - this.dragging.difference, this.viewOptions.precisionLimit);\n }\n this.viewLowValue = newMinValue;\n this.viewHighValue = newMaxValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(newMinValue));\n this.updateHandles(PointerType.Max, this.valueToPosition(newMaxValue));\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n positionTrackingHandle(newValue) {\n newValue = this.applyMinMaxLimit(newValue);\n if (this.range) {\n if (this.viewOptions.pushRange) {\n newValue = this.applyPushRange(newValue);\n }\n else {\n if (this.viewOptions.noSwitching) {\n if (this.currentTrackingPointer === PointerType.Min &&\n newValue > this.viewHighValue) {\n newValue = this.applyMinMaxRange(this.viewHighValue);\n }\n else if (this.currentTrackingPointer === PointerType.Max &&\n newValue < this.viewLowValue) {\n newValue = this.applyMinMaxRange(this.viewLowValue);\n }\n }\n newValue = this.applyMinMaxRange(newValue);\n /* This is to check if we need to switch the min and max handles */\n if (this.currentTrackingPointer === PointerType.Min && newValue > this.viewHighValue) {\n this.viewLowValue = this.viewHighValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.maxHandleElement.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Max;\n this.minHandleElement.active = false;\n this.maxHandleElement.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.maxHandleElement.focus();\n }\n }\n else if (this.currentTrackingPointer === PointerType.Max &&\n newValue < this.viewLowValue) {\n this.viewHighValue = this.viewLowValue;\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.minHandleElement.position);\n this.updateAriaAttributes();\n this.currentTrackingPointer = PointerType.Min;\n this.maxHandleElement.active = false;\n this.minHandleElement.active = true;\n if (this.viewOptions.keyboardSupport) {\n this.minHandleElement.focus();\n }\n }\n }\n }\n if (this.getCurrentTrackingValue() !== newValue) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewLowValue = newValue;\n this.applyViewChange();\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewHighValue = newValue;\n this.applyViewChange();\n }\n this.updateHandles(this.currentTrackingPointer, this.valueToPosition(newValue));\n this.updateAriaAttributes();\n }\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n applyMinMaxLimit(newValue) {\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minLimit) && newValue < this.viewOptions.minLimit) {\n return this.viewOptions.minLimit;\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxLimit) && newValue > this.viewOptions.maxLimit) {\n return this.viewOptions.maxLimit;\n }\n return newValue;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n applyMinMaxRange(newValue) {\n /** @type {?} */\n const oppositeValue = (this.currentTrackingPointer === PointerType.Min)\n ? this.viewHighValue\n : this.viewLowValue;\n /** @type {?} */\n const difference = Math.abs(newValue - oppositeValue);\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.minRange)) {\n if (difference < this.viewOptions.minRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(this.viewHighValue - this.viewOptions.minRange, this.viewOptions.precisionLimit);\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(this.viewLowValue + this.viewOptions.minRange, this.viewOptions.precisionLimit);\n }\n }\n }\n if (!ValueHelper.isNullOrUndefined(this.viewOptions.maxRange)) {\n if (difference > this.viewOptions.maxRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n return MathHelper.roundToPrecisionLimit(this.viewHighValue - this.viewOptions.maxRange, this.viewOptions.precisionLimit);\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n return MathHelper.roundToPrecisionLimit(this.viewLowValue + this.viewOptions.maxRange, this.viewOptions.precisionLimit);\n }\n }\n }\n return newValue;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n applyPushRange(newValue) {\n /** @type {?} */\n const difference = (this.currentTrackingPointer === PointerType.Min)\n ? this.viewHighValue - newValue\n : newValue - this.viewLowValue;\n /** @type {?} */\n const minRange = (!ValueHelper.isNullOrUndefined(this.viewOptions.minRange))\n ? this.viewOptions.minRange\n : this.viewOptions.step;\n /** @type {?} */\n const maxRange = this.viewOptions.maxRange;\n // if smaller than minRange\n if (difference < minRange) {\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(Math.min(newValue + minRange, this.viewOptions.ceil), this.viewOptions.precisionLimit);\n newValue = MathHelper.roundToPrecisionLimit(this.viewHighValue - minRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(Math.max(newValue - minRange, this.viewOptions.floor), this.viewOptions.precisionLimit);\n newValue = MathHelper.roundToPrecisionLimit(this.viewLowValue + minRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n }\n else if (!ValueHelper.isNullOrUndefined(maxRange) && difference > maxRange) {\n // if greater than maxRange\n if (this.currentTrackingPointer === PointerType.Min) {\n this.viewHighValue = MathHelper.roundToPrecisionLimit(newValue + maxRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Max, this.valueToPosition(this.viewHighValue));\n }\n else if (this.currentTrackingPointer === PointerType.Max) {\n this.viewLowValue = MathHelper.roundToPrecisionLimit(newValue - maxRange, this.viewOptions.precisionLimit);\n this.applyViewChange();\n this.updateHandles(PointerType.Min, this.valueToPosition(this.viewLowValue));\n }\n this.updateAriaAttributes();\n }\n return newValue;\n }\n /**\n * @return {?}\n */\n getChangeContext() {\n /** @type {?} */\n const changeContext = new ChangeContext();\n changeContext.pointerType = this.currentTrackingPointer;\n changeContext.value = +this.value;\n if (this.range) {\n changeContext.highValue = +this.highValue;\n }\n return changeContext;\n }\n}\nSliderComponent.ɵfac = function SliderComponent_Factory(t) { return new (t || SliderComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nSliderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SliderComponent, selectors: [[\"ngx-slider\"]], contentQueries: function SliderComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, viewQuery: function SliderComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c1, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c2, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c3, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c4, 5, SliderElementDirective);\n ɵngcc0.ɵɵviewQuery(_c5, 5, SliderHandleDirective);\n ɵngcc0.ɵɵviewQuery(_c6, 5, SliderHandleDirective);\n ɵngcc0.ɵɵviewQuery(_c7, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c8, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c9, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c10, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c11, 5, SliderLabelDirective);\n ɵngcc0.ɵɵviewQuery(_c12, 5, SliderElementDirective);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.leftOuterSelectionBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.rightOuterSelectionBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fullBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.selectionBarElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.minHandleElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.maxHandleElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.floorLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ceilLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.minHandleLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.maxHandleLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.combinedLabelElement = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n } }, hostAttrs: [1, \"ngx-slider\"], hostVars: 8, hostBindings: function SliderComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"resize\", function SliderComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, ɵngcc0.ɵɵresolveWindow);\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"disabled\", ctx.sliderElementDisabledAttr)(\"aria-label\", ctx.sliderElementAriaLabel);\n ɵngcc0.ɵɵclassProp(\"vertical\", ctx.sliderElementVerticalClass)(\"animate\", ctx.sliderElementAnimateClass)(\"with-legend\", ctx.sliderElementWithLegendClass);\n } }, inputs: { value: \"value\", highValue: \"highValue\", options: \"options\", manualRefresh: \"manualRefresh\", triggerFocus: \"triggerFocus\" }, outputs: { valueChange: \"valueChange\", highValueChange: \"highValueChange\", userChangeStart: \"userChangeStart\", userChange: \"userChange\", userChangeEnd: \"userChangeEnd\" }, features: [ɵngcc0.ɵɵProvidersFeature([NGX_SLIDER_CONTROL_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 29, vars: 13, consts: [[\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-left-out-selection\"], [\"leftOuterSelectionBar\", \"\"], [1, \"ngx-slider-span\", \"ngx-slider-bar\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-right-out-selection\"], [\"rightOuterSelectionBar\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-full-bar\"], [\"fullBar\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bar-wrapper\", \"ngx-slider-selection-bar\"], [\"selectionBar\", \"\"], [1, \"ngx-slider-span\", \"ngx-slider-bar\", \"ngx-slider-selection\", 3, \"ngStyle\"], [\"ngxSliderHandle\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-pointer\", \"ngx-slider-pointer-min\", 3, \"ngStyle\"], [\"minHandle\", \"\"], [\"ngxSliderHandle\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-pointer\", \"ngx-slider-pointer-max\", 3, \"ngStyle\"], [\"maxHandle\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-limit\", \"ngx-slider-floor\"], [\"floorLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-limit\", \"ngx-slider-ceil\"], [\"ceilLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-model-value\"], [\"minHandleLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-model-high\"], [\"maxHandleLabel\", \"\"], [\"ngxSliderLabel\", \"\", 1, \"ngx-slider-span\", \"ngx-slider-bubble\", \"ngx-slider-combined\"], [\"combinedLabel\", \"\"], [\"ngxSliderElement\", \"\", 1, \"ngx-slider-ticks\", 3, \"hidden\"], [\"ticksElement\", \"\"], [\"class\", \"ngx-slider-tick\", 3, \"ngClass\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngx-slider-tick\", 3, \"ngClass\", \"ngStyle\"], [3, \"template\", \"tooltip\", \"placement\"], [\"class\", \"ngx-slider-span ngx-slider-tick-value\", 3, \"template\", \"tooltip\", \"placement\", \"content\", 4, \"ngIf\"], [\"class\", \"ngx-slider-span ngx-slider-tick-legend\", 3, \"innerHTML\", 4, \"ngIf\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-value\", 3, \"template\", \"tooltip\", \"placement\", \"content\"], [1, \"ngx-slider-span\", \"ngx-slider-tick-legend\", 3, \"innerHTML\"]], template: function SliderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0, 1);\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 3, 4);\n ɵngcc0.ɵɵelement(5, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"span\", 5, 6);\n ɵngcc0.ɵɵelement(8, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"span\", 7, 8);\n ɵngcc0.ɵɵelement(11, \"span\", 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(12, \"span\", 10, 11)(14, \"span\", 12, 13)(16, \"span\", 14, 15)(18, \"span\", 16, 17)(20, \"span\", 18, 19)(22, \"span\", 20, 21)(24, \"span\", 22, 23);\n ɵngcc0.ɵɵelementStart(26, \"span\", 24, 25);\n ɵngcc0.ɵɵtemplate(28, SliderComponent_span_28_Template, 4, 9, \"span\", 26);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(6);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-transparent\", ctx.fullBarTransparentClass);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-draggable\", ctx.selectionBarDraggableClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.barStyle);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.minPointerStyle);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.range ? \"inherit\" : \"none\");\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.maxPointerStyle);\n ɵngcc0.ɵɵadvance(12);\n ɵngcc0.ɵɵclassProp(\"ngx-slider-ticks-values-under\", ctx.ticksUnderValuesClass);\n ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showTicks);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n } }, directives: function () { return [SliderElementDirective, ɵngcc1.NgStyle, SliderHandleDirective, SliderLabelDirective, ɵngcc1.NgForOf, ɵngcc1.NgClass, TooltipWrapperComponent, ɵngcc1.NgIf]; }, styles: [\".ngx-slider{display:inline-block;position:relative;height:4px;width:100%;margin:35px 0 15px;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:pan-y} .ngx-slider.with-legend{margin-bottom:40px} .ngx-slider[disabled]{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-pointer{cursor:not-allowed;background-color:#d8e0f3} .ngx-slider[disabled] .ngx-slider-draggable{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-selection{background:#8b91a2} .ngx-slider[disabled] .ngx-slider-tick{cursor:not-allowed} .ngx-slider[disabled] .ngx-slider-tick.ngx-slider-selected{background:#8b91a2} .ngx-slider .ngx-slider-span{white-space:nowrap;position:absolute;display:inline-block} .ngx-slider .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider .ngx-slider-bar-wrapper{left:0;box-sizing:border-box;margin-top:-16px;padding-top:16px;width:100%;height:32px;z-index:1} .ngx-slider .ngx-slider-draggable{cursor:move} .ngx-slider .ngx-slider-bar{left:0;width:100%;height:4px;z-index:1;background:#d8e0f3;border-radius:2px} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-transparent .ngx-slider-bar{background:0 0} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-left-out-selection .ngx-slider-bar{background:#df002d} .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-right-out-selection .ngx-slider-bar{background:#03a688} .ngx-slider .ngx-slider-selection{z-index:2;background:#0db9f0;border-radius:2px} .ngx-slider .ngx-slider-pointer{cursor:pointer;width:32px;height:32px;top:-14px;background-color:#0db9f0;z-index:3;border-radius:16px} .ngx-slider .ngx-slider-pointer:after{content:'';width:8px;height:8px;position:absolute;top:12px;left:12px;border-radius:4px;background:#fff} .ngx-slider .ngx-slider-pointer:hover:after{background-color:#fff} .ngx-slider .ngx-slider-pointer.ngx-slider-active{z-index:4} .ngx-slider .ngx-slider-pointer.ngx-slider-active:after{background-color:#451aff} .ngx-slider .ngx-slider-bubble{cursor:default;bottom:16px;padding:1px 3px;color:#55637d;font-size:16px} .ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:#55637d} .ngx-slider .ngx-slider-ticks{box-sizing:border-box;width:100%;height:0;position:absolute;left:0;top:-3px;margin:0;z-index:1;list-style:none} .ngx-slider .ngx-slider-ticks-values-under .ngx-slider-tick-value{top:auto;bottom:-36px} .ngx-slider .ngx-slider-tick{text-align:center;cursor:pointer;width:10px;height:10px;background:#d8e0f3;border-radius:50%;position:absolute;top:0;left:0;margin-left:11px} .ngx-slider .ngx-slider-tick.ngx-slider-selected{background:#0db9f0} .ngx-slider .ngx-slider-tick-value{position:absolute;top:-34px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)} .ngx-slider .ngx-slider-tick-legend{position:absolute;top:24px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);max-width:50px;white-space:normal} .ngx-slider.vertical{position:relative;width:4px;height:100%;margin:0 20px;padding:0;vertical-align:baseline;touch-action:pan-x} .ngx-slider.vertical .ngx-slider-base{width:100%;height:100%;padding:0} .ngx-slider.vertical .ngx-slider-bar-wrapper{top:auto;left:0;margin:0 0 0 -16px;padding:0 0 0 16px;height:100%;width:32px} .ngx-slider.vertical .ngx-slider-bar{bottom:0;left:auto;width:4px;height:100%} .ngx-slider.vertical .ngx-slider-pointer{left:-14px!important;top:auto;bottom:0} .ngx-slider.vertical .ngx-slider-bubble{left:16px!important;bottom:0} .ngx-slider.vertical .ngx-slider-ticks{height:100%;width:0;left:-3px;top:0;z-index:1} .ngx-slider.vertical .ngx-slider-tick{vertical-align:middle;margin-left:auto;margin-top:11px} .ngx-slider.vertical .ngx-slider-tick-value{left:24px;top:auto;-webkit-transform:translate(0,-28%);transform:translate(0,-28%)} .ngx-slider.vertical .ngx-slider-tick-legend{top:auto;right:24px;-webkit-transform:translate(0,-28%);transform:translate(0,-28%);max-width:none;white-space:nowrap} .ngx-slider.vertical .ngx-slider-ticks-values-under .ngx-slider-tick-value{bottom:auto;left:auto;right:24px} .ngx-slider *{transition:none} .ngx-slider.animate .ngx-slider-bar-wrapper{transition:.3s linear} .ngx-slider.animate .ngx-slider-selection{transition:background-color .3s linear} .ngx-slider.animate .ngx-slider-pointer{transition:.3s linear} .ngx-slider.animate .ngx-slider-pointer:after{transition:.3s linear} .ngx-slider.animate .ngx-slider-bubble{transition:.3s linear} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-limit{transition:opacity .3s linear} .ngx-slider.animate .ngx-slider-bubble.ngx-slider-combined{transition:opacity .3s linear} .ngx-slider.animate .ngx-slider-tick{transition:background-color .3s linear}\"] });\n/** @nocollapse */\nSliderComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: NgZone }\n];\nSliderComponent.propDecorators = {\n value: [{ type: Input }],\n valueChange: [{ type: Output }],\n highValue: [{ type: Input }],\n highValueChange: [{ type: Output }],\n options: [{ type: Input }],\n userChangeStart: [{ type: Output }],\n userChange: [{ type: Output }],\n userChangeEnd: [{ type: Output }],\n manualRefresh: [{ type: Input }],\n triggerFocus: [{ type: Input }],\n leftOuterSelectionBarElement: [{ type: ViewChild, args: ['leftOuterSelectionBar', { read: SliderElementDirective },] }],\n rightOuterSelectionBarElement: [{ type: ViewChild, args: ['rightOuterSelectionBar', { read: SliderElementDirective },] }],\n fullBarElement: [{ type: ViewChild, args: ['fullBar', { read: SliderElementDirective },] }],\n selectionBarElement: [{ type: ViewChild, args: ['selectionBar', { read: SliderElementDirective },] }],\n minHandleElement: [{ type: ViewChild, args: ['minHandle', { read: SliderHandleDirective },] }],\n maxHandleElement: [{ type: ViewChild, args: ['maxHandle', { read: SliderHandleDirective },] }],\n floorLabelElement: [{ type: ViewChild, args: ['floorLabel', { read: SliderLabelDirective },] }],\n ceilLabelElement: [{ type: ViewChild, args: ['ceilLabel', { read: SliderLabelDirective },] }],\n minHandleLabelElement: [{ type: ViewChild, args: ['minHandleLabel', { read: SliderLabelDirective },] }],\n maxHandleLabelElement: [{ type: ViewChild, args: ['maxHandleLabel', { read: SliderLabelDirective },] }],\n combinedLabelElement: [{ type: ViewChild, args: ['combinedLabel', { read: SliderLabelDirective },] }],\n ticksElement: [{ type: ViewChild, args: ['ticksElement', { read: SliderElementDirective },] }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n sliderElementVerticalClass: [{ type: HostBinding, args: ['class.vertical',] }],\n sliderElementAnimateClass: [{ type: HostBinding, args: ['class.animate',] }],\n sliderElementWithLegendClass: [{ type: HostBinding, args: ['class.with-legend',] }],\n sliderElementDisabledAttr: [{ type: HostBinding, args: ['attr.disabled',] }],\n sliderElementAriaLabel: [{ type: HostBinding, args: ['attr.aria-label',] }],\n onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SliderComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-slider',\n template: `\n\n \n\n\n\n \n\n\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n`,\n styles: [`::ng-deep .ngx-slider{display:inline-block;position:relative;height:4px;width:100%;margin:35px 0 15px;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;touch-action:pan-y}::ng-deep .ngx-slider.with-legend{margin-bottom:40px}::ng-deep .ngx-slider[disabled]{cursor:not-allowed}::ng-deep .ngx-slider[disabled] .ngx-slider-pointer{cursor:not-allowed;background-color:#d8e0f3}::ng-deep .ngx-slider[disabled] .ngx-slider-draggable{cursor:not-allowed}::ng-deep .ngx-slider[disabled] .ngx-slider-selection{background:#8b91a2}::ng-deep .ngx-slider[disabled] .ngx-slider-tick{cursor:not-allowed}::ng-deep .ngx-slider[disabled] .ngx-slider-tick.ngx-slider-selected{background:#8b91a2}::ng-deep .ngx-slider .ngx-slider-span{white-space:nowrap;position:absolute;display:inline-block}::ng-deep .ngx-slider .ngx-slider-base{width:100%;height:100%;padding:0}::ng-deep .ngx-slider .ngx-slider-bar-wrapper{left:0;box-sizing:border-box;margin-top:-16px;padding-top:16px;width:100%;height:32px;z-index:1}::ng-deep .ngx-slider .ngx-slider-draggable{cursor:move}::ng-deep .ngx-slider .ngx-slider-bar{left:0;width:100%;height:4px;z-index:1;background:#d8e0f3;border-radius:2px}::ng-deep .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-transparent .ngx-slider-bar{background:0 0}::ng-deep .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-left-out-selection .ngx-slider-bar{background:#df002d}::ng-deep .ngx-slider .ngx-slider-bar-wrapper.ngx-slider-right-out-selection .ngx-slider-bar{background:#03a688}::ng-deep .ngx-slider .ngx-slider-selection{z-index:2;background:#0db9f0;border-radius:2px}::ng-deep .ngx-slider .ngx-slider-pointer{cursor:pointer;width:32px;height:32px;top:-14px;background-color:#0db9f0;z-index:3;border-radius:16px}::ng-deep .ngx-slider .ngx-slider-pointer:after{content:'';width:8px;height:8px;position:absolute;top:12px;left:12px;border-radius:4px;background:#fff}::ng-deep .ngx-slider .ngx-slider-pointer:hover:after{background-color:#fff}::ng-deep .ngx-slider .ngx-slider-pointer.ngx-slider-active{z-index:4}::ng-deep .ngx-slider .ngx-slider-pointer.ngx-slider-active:after{background-color:#451aff}::ng-deep .ngx-slider .ngx-slider-bubble{cursor:default;bottom:16px;padding:1px 3px;color:#55637d;font-size:16px}::ng-deep .ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:#55637d}::ng-deep .ngx-slider .ngx-slider-ticks{box-sizing:border-box;width:100%;height:0;position:absolute;left:0;top:-3px;margin:0;z-index:1;list-style:none}::ng-deep .ngx-slider .ngx-slider-ticks-values-under .ngx-slider-tick-value{top:auto;bottom:-36px}::ng-deep .ngx-slider .ngx-slider-tick{text-align:center;cursor:pointer;width:10px;height:10px;background:#d8e0f3;border-radius:50%;position:absolute;top:0;left:0;margin-left:11px}::ng-deep .ngx-slider .ngx-slider-tick.ngx-slider-selected{background:#0db9f0}::ng-deep .ngx-slider .ngx-slider-tick-value{position:absolute;top:-34px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}::ng-deep .ngx-slider .ngx-slider-tick-legend{position:absolute;top:24px;-webkit-transform:translate(-50%,0);transform:translate(-50%,0);max-width:50px;white-space:normal}::ng-deep .ngx-slider.vertical{position:relative;width:4px;height:100%;margin:0 20px;padding:0;vertical-align:baseline;touch-action:pan-x}::ng-deep .ngx-slider.vertical .ngx-slider-base{width:100%;height:100%;padding:0}::ng-deep .ngx-slider.vertical .ngx-slider-bar-wrapper{top:auto;left:0;margin:0 0 0 -16px;padding:0 0 0 16px;height:100%;width:32px}::ng-deep .ngx-slider.vertical .ngx-slider-bar{bottom:0;left:auto;width:4px;height:100%}::ng-deep .ngx-slider.vertical .ngx-slider-pointer{left:-14px!important;top:auto;bottom:0}::ng-deep .ngx-slider.vertical .ngx-slider-bubble{left:16px!important;bottom:0}::ng-deep .ngx-slider.vertical .ngx-slider-ticks{height:100%;width:0;left:-3px;top:0;z-index:1}::ng-deep .ngx-slider.vertical .ngx-slider-tick{vertical-align:middle;margin-left:auto;margin-top:11px}::ng-deep .ngx-slider.vertical .ngx-slider-tick-value{left:24px;top:auto;-webkit-transform:translate(0,-28%);transform:translate(0,-28%)}::ng-deep .ngx-slider.vertical .ngx-slider-tick-legend{top:auto;right:24px;-webkit-transform:translate(0,-28%);transform:translate(0,-28%);max-width:none;white-space:nowrap}::ng-deep .ngx-slider.vertical .ngx-slider-ticks-values-under .ngx-slider-tick-value{bottom:auto;left:auto;right:24px}::ng-deep .ngx-slider *{transition:none}::ng-deep .ngx-slider.animate .ngx-slider-bar-wrapper{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-selection{transition:background-color .3s linear}::ng-deep .ngx-slider.animate .ngx-slider-pointer{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-pointer:after{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-bubble{transition:.3s linear}::ng-deep .ngx-slider.animate .ngx-slider-bubble.ngx-slider-limit{transition:opacity .3s linear}::ng-deep .ngx-slider.animate .ngx-slider-bubble.ngx-slider-combined{transition:opacity .3s linear}::ng-deep .ngx-slider.animate .ngx-slider-tick{transition:background-color .3s linear}`],\n host: { class: 'ngx-slider' },\n providers: [NGX_SLIDER_CONTROL_VALUE_ACCESSOR]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { value: [{\n type: Input\n }], valueChange: [{\n type: Output\n }], highValue: [{\n type: Input\n }], highValueChange: [{\n type: Output\n }], options: [{\n type: Input\n }], userChangeStart: [{\n type: Output\n }], userChange: [{\n type: Output\n }], userChangeEnd: [{\n type: Output\n }], sliderElementVerticalClass: [{\n type: HostBinding,\n args: ['class.vertical']\n }], sliderElementAnimateClass: [{\n type: HostBinding,\n args: ['class.animate']\n }], sliderElementWithLegendClass: [{\n type: HostBinding,\n args: ['class.with-legend']\n }], sliderElementDisabledAttr: [{\n type: HostBinding,\n args: ['attr.disabled']\n }], sliderElementAriaLabel: [{\n type: HostBinding,\n args: ['attr.aria-label']\n }], manualRefresh: [{\n type: Input\n }], triggerFocus: [{\n type: Input\n }], \n /**\n * @param {?} event\n * @return {?}\n */\n onResize: [{\n type: HostListener,\n args: ['window:resize', ['$event']]\n }], leftOuterSelectionBarElement: [{\n type: ViewChild,\n args: ['leftOuterSelectionBar', { read: SliderElementDirective }]\n }], rightOuterSelectionBarElement: [{\n type: ViewChild,\n args: ['rightOuterSelectionBar', { read: SliderElementDirective }]\n }], fullBarElement: [{\n type: ViewChild,\n args: ['fullBar', { read: SliderElementDirective }]\n }], selectionBarElement: [{\n type: ViewChild,\n args: ['selectionBar', { read: SliderElementDirective }]\n }], minHandleElement: [{\n type: ViewChild,\n args: ['minHandle', { read: SliderHandleDirective }]\n }], maxHandleElement: [{\n type: ViewChild,\n args: ['maxHandle', { read: SliderHandleDirective }]\n }], floorLabelElement: [{\n type: ViewChild,\n args: ['floorLabel', { read: SliderLabelDirective }]\n }], ceilLabelElement: [{\n type: ViewChild,\n args: ['ceilLabel', { read: SliderLabelDirective }]\n }], minHandleLabelElement: [{\n type: ViewChild,\n args: ['minHandleLabel', { read: SliderLabelDirective }]\n }], maxHandleLabelElement: [{\n type: ViewChild,\n args: ['maxHandleLabel', { read: SliderLabelDirective }]\n }], combinedLabelElement: [{\n type: ViewChild,\n args: ['combinedLabel', { read: SliderLabelDirective }]\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksElement', { read: SliderElementDirective }]\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nclass TooltipWrapperComponent {\n}\nTooltipWrapperComponent.ɵfac = function TooltipWrapperComponent_Factory(t) { return new (t || TooltipWrapperComponent)(); };\nTooltipWrapperComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipWrapperComponent, selectors: [[\"ngx-slider-tooltip-wrapper\"]], inputs: { template: \"template\", tooltip: \"tooltip\", placement: \"placement\", content: \"content\" }, decls: 2, vars: 2, consts: [[4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ngx-slider-inner-tooltip\"]], template: function TooltipWrapperComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TooltipWrapperComponent_ng_container_0_Template, 2, 6, \"ng-container\", 0);\n ɵngcc0.ɵɵtemplate(1, TooltipWrapperComponent_ng_container_1_Template, 3, 3, \"ng-container\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.template);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.template);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngx-slider-inner-tooltip[_ngcontent-%COMP%]{height:100%}\"] });\nTooltipWrapperComponent.propDecorators = {\n template: [{ type: Input }],\n tooltip: [{ type: Input }],\n placement: [{ type: Input }],\n content: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-slider-tooltip-wrapper',\n template: `\n \n\n\n\n
\n {{content}}\n
\n
`,\n styles: [`.ngx-slider-inner-tooltip{height:100%}`]\n }]\n }], null, { template: [{\n type: Input\n }], tooltip: [{\n type: Input\n }], placement: [{\n type: Input\n }], content: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * NgxSlider module\n *\n * The module exports the slider component\n */\nclass NgxSliderModule {\n}\nNgxSliderModule.ɵfac = function NgxSliderModule_Factory(t) { return new (t || NgxSliderModule)(); };\nNgxSliderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxSliderModule });\nNgxSliderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxSliderModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [\n SliderComponent,\n SliderElementDirective,\n SliderHandleDirective,\n SliderLabelDirective,\n TooltipWrapperComponent\n ],\n exports: [\n SliderComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxSliderModule, { declarations: function () { return [SliderComponent, SliderElementDirective, SliderHandleDirective, SliderLabelDirective, TooltipWrapperComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [SliderComponent]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { NgxSliderModule, ChangeContext, PointerType, LabelType, Options, SliderElementDirective as ɵb, SliderHandleDirective as ɵc, SliderLabelDirective as ɵd, SliderComponent as ɵa, TooltipWrapperComponent as ɵe };\n\n","// This currentContext variable will only be used if the makeSlotClass\r\n// function is called, which happens only if this is the first copy of the\r\n// @wry/context package to be imported.\r\nvar currentContext = null;\r\n// This unique internal object is used to denote the absence of a value\r\n// for a given Slot, and is never exposed to outside code.\r\nvar MISSING_VALUE = {};\r\nvar idCounter = 1;\r\n// Although we can't do anything about the cost of duplicated code from\r\n// accidentally bundling multiple copies of the @wry/context package, we can\r\n// avoid creating the Slot class more than once using makeSlotClass.\r\nvar makeSlotClass = function () { return /** @class */ (function () {\r\n function Slot() {\r\n // If you have a Slot object, you can find out its slot.id, but you cannot\r\n // guess the slot.id of a Slot you don't have access to, thanks to the\r\n // randomized suffix.\r\n this.id = [\r\n \"slot\",\r\n idCounter++,\r\n Date.now(),\r\n Math.random().toString(36).slice(2),\r\n ].join(\":\");\r\n }\r\n Slot.prototype.hasValue = function () {\r\n for (var context_1 = currentContext; context_1; context_1 = context_1.parent) {\r\n // We use the Slot object iself as a key to its value, which means the\r\n // value cannot be obtained without a reference to the Slot object.\r\n if (this.id in context_1.slots) {\r\n var value = context_1.slots[this.id];\r\n if (value === MISSING_VALUE)\r\n break;\r\n if (context_1 !== currentContext) {\r\n // Cache the value in currentContext.slots so the next lookup will\r\n // be faster. This caching is safe because the tree of contexts and\r\n // the values of the slots are logically immutable.\r\n currentContext.slots[this.id] = value;\r\n }\r\n return true;\r\n }\r\n }\r\n if (currentContext) {\r\n // If a value was not found for this Slot, it's never going to be found\r\n // no matter how many times we look it up, so we might as well cache\r\n // the absence of the value, too.\r\n currentContext.slots[this.id] = MISSING_VALUE;\r\n }\r\n return false;\r\n };\r\n Slot.prototype.getValue = function () {\r\n if (this.hasValue()) {\r\n return currentContext.slots[this.id];\r\n }\r\n };\r\n Slot.prototype.withValue = function (value, callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n var _a;\r\n var slots = (_a = {\r\n __proto__: null\r\n },\r\n _a[this.id] = value,\r\n _a);\r\n var parent = currentContext;\r\n currentContext = { parent: parent, slots: slots };\r\n try {\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = parent;\r\n }\r\n };\r\n // Capture the current context and wrap a callback function so that it\r\n // reestablishes the captured context when called.\r\n Slot.bind = function (callback) {\r\n var context = currentContext;\r\n return function () {\r\n var saved = currentContext;\r\n try {\r\n currentContext = context;\r\n return callback.apply(this, arguments);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n };\r\n };\r\n // Immediately run a callback function without any captured context.\r\n Slot.noContext = function (callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n if (currentContext) {\r\n var saved = currentContext;\r\n try {\r\n currentContext = null;\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n }\r\n else {\r\n return callback.apply(thisArg, args);\r\n }\r\n };\r\n return Slot;\r\n}()); };\r\n// We store a single global implementation of the Slot class as a permanent\r\n// non-enumerable symbol property of the Array constructor. This obfuscation\r\n// does nothing to prevent access to the Slot class, but at least it ensures\r\n// the implementation (i.e. currentContext) cannot be tampered with, and all\r\n// copies of the @wry/context package (hopefully just one) will share the\r\n// same Slot implementation. Since the first copy of the @wry/context package\r\n// to be imported wins, this technique imposes a very high cost for any\r\n// future breaking changes to the Slot class.\r\nvar globalKey = \"@wry/context:Slot\";\r\nvar host = Array;\r\nvar Slot = host[globalKey] || function () {\r\n var Slot = makeSlotClass();\r\n try {\r\n Object.defineProperty(host, globalKey, {\r\n value: host[globalKey] = Slot,\r\n enumerable: false,\r\n writable: false,\r\n configurable: false,\r\n });\r\n }\r\n finally {\r\n return Slot;\r\n }\r\n}();\n\nvar bind = Slot.bind, noContext = Slot.noContext;\r\nfunction setTimeoutWithContext(callback, delay) {\r\n return setTimeout(bind(callback), delay);\r\n}\r\n// Turn any generator function into an async function (using yield instead\r\n// of await), with context automatically preserved across yields.\r\nfunction asyncFromGen(genFn) {\r\n return function () {\r\n var gen = genFn.apply(this, arguments);\r\n var boundNext = bind(gen.next);\r\n var boundThrow = bind(gen.throw);\r\n return new Promise(function (resolve, reject) {\r\n function invoke(method, argument) {\r\n try {\r\n var result = method.call(gen, argument);\r\n }\r\n catch (error) {\r\n return reject(error);\r\n }\r\n var next = result.done ? resolve : invokeNext;\r\n if (isPromiseLike(result.value)) {\r\n result.value.then(next, result.done ? reject : invokeThrow);\r\n }\r\n else {\r\n next(result.value);\r\n }\r\n }\r\n var invokeNext = function (value) { return invoke(boundNext, value); };\r\n var invokeThrow = function (error) { return invoke(boundThrow, error); };\r\n invokeNext();\r\n });\r\n };\r\n}\r\nfunction isPromiseLike(value) {\r\n return value && typeof value.then === \"function\";\r\n}\r\n// If you use the fibers npm package to implement coroutines in Node.js,\r\n// you should call this function at least once to ensure context management\r\n// remains coherent across any yields.\r\nvar wrappedFibers = [];\r\nfunction wrapYieldingFiberMethods(Fiber) {\r\n // There can be only one implementation of Fiber per process, so this array\r\n // should never grow longer than one element.\r\n if (wrappedFibers.indexOf(Fiber) < 0) {\r\n var wrap = function (obj, method) {\r\n var fn = obj[method];\r\n obj[method] = function () {\r\n return noContext(fn, arguments, this);\r\n };\r\n };\r\n // These methods can yield, according to\r\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\r\n wrap(Fiber, \"yield\");\r\n wrap(Fiber.prototype, \"run\");\r\n wrap(Fiber.prototype, \"throwInto\");\r\n wrappedFibers.push(Fiber);\r\n }\r\n return Fiber;\r\n}\n\nexport { Slot, asyncFromGen, bind, noContext, setTimeoutWithContext as setTimeout, wrapYieldingFiberMethods };\n","var _a = Object.prototype, toString = _a.toString, hasOwnProperty = _a.hasOwnProperty;\r\nvar fnToStr = Function.prototype.toString;\r\nvar previousComparisons = new Map();\r\n/**\r\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\r\n */\r\nfunction equal(a, b) {\r\n try {\r\n return check(a, b);\r\n }\r\n finally {\r\n previousComparisons.clear();\r\n }\r\n}\r\nfunction check(a, b) {\r\n // If the two values are strictly equal, our job is easy.\r\n if (a === b) {\r\n return true;\r\n }\r\n // Object.prototype.toString returns a representation of the runtime type of\r\n // the given value that is considerably more precise than typeof.\r\n var aTag = toString.call(a);\r\n var bTag = toString.call(b);\r\n // If the runtime types of a and b are different, they could maybe be equal\r\n // under some interpretation of equality, but for simplicity and performance\r\n // we just return false instead.\r\n if (aTag !== bTag) {\r\n return false;\r\n }\r\n switch (aTag) {\r\n case '[object Array]':\r\n // Arrays are a lot like other objects, but we can cheaply compare their\r\n // lengths as a short-cut before comparing their elements.\r\n if (a.length !== b.length)\r\n return false;\r\n // Fall through to object case...\r\n case '[object Object]': {\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aKeys = definedKeys(a);\r\n var bKeys = definedKeys(b);\r\n // If `a` and `b` have a different number of enumerable keys, they\r\n // must be different.\r\n var keyCount = aKeys.length;\r\n if (keyCount !== bKeys.length)\r\n return false;\r\n // Now make sure they have the same keys.\r\n for (var k = 0; k < keyCount; ++k) {\r\n if (!hasOwnProperty.call(b, aKeys[k])) {\r\n return false;\r\n }\r\n }\r\n // Finally, check deep equality of all child properties.\r\n for (var k = 0; k < keyCount; ++k) {\r\n var key = aKeys[k];\r\n if (!check(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Error]':\r\n return a.name === b.name && a.message === b.message;\r\n case '[object Number]':\r\n // Handle NaN, which is !== itself.\r\n if (a !== a)\r\n return b !== b;\r\n // Fall through to shared +a === +b case...\r\n case '[object Boolean]':\r\n case '[object Date]':\r\n return +a === +b;\r\n case '[object RegExp]':\r\n case '[object String]':\r\n return a == \"\" + b;\r\n case '[object Map]':\r\n case '[object Set]': {\r\n if (a.size !== b.size)\r\n return false;\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aIterator = a.entries();\r\n var isMap = aTag === '[object Map]';\r\n while (true) {\r\n var info = aIterator.next();\r\n if (info.done)\r\n break;\r\n // If a instanceof Set, aValue === aKey.\r\n var _a = info.value, aKey = _a[0], aValue = _a[1];\r\n // So this works the same way for both Set and Map.\r\n if (!b.has(aKey)) {\r\n return false;\r\n }\r\n // However, we care about deep equality of values only when dealing\r\n // with Map structures.\r\n if (isMap && !check(aValue, b.get(aKey))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Uint16Array]':\r\n case '[object Uint8Array]': // Buffer, in Node.js.\r\n case '[object Uint32Array]':\r\n case '[object Int32Array]':\r\n case '[object Int8Array]':\r\n case '[object Int16Array]':\r\n case '[object ArrayBuffer]':\r\n // DataView doesn't need these conversions, but the equality check is\r\n // otherwise the same.\r\n a = new Uint8Array(a);\r\n b = new Uint8Array(b);\r\n // Fall through...\r\n case '[object DataView]': {\r\n var len = a.byteLength;\r\n if (len === b.byteLength) {\r\n while (len-- && a[len] === b[len]) {\r\n // Keep looping as long as the bytes are equal.\r\n }\r\n }\r\n return len === -1;\r\n }\r\n case '[object AsyncFunction]':\r\n case '[object GeneratorFunction]':\r\n case '[object AsyncGeneratorFunction]':\r\n case '[object Function]': {\r\n var aCode = fnToStr.call(a);\r\n if (aCode !== fnToStr.call(b)) {\r\n return false;\r\n }\r\n // We consider non-native functions equal if they have the same code\r\n // (native functions require === because their code is censored).\r\n // Note that this behavior is not entirely sound, since !== function\r\n // objects with the same code can behave differently depending on\r\n // their closure scope. However, any function can behave differently\r\n // depending on the values of its input arguments (including this)\r\n // and its calling context (including its closure scope), even\r\n // though the function object is === to itself; and it is entirely\r\n // possible for functions that are not === to behave exactly the\r\n // same under all conceivable circumstances. Because none of these\r\n // factors are statically decidable in JavaScript, JS function\r\n // equality is not well-defined. This ambiguity allows us to\r\n // consider the best possible heuristic among various imperfect\r\n // options, and equating non-native functions that have the same\r\n // code has enormous practical benefits, such as when comparing\r\n // functions that are repeatedly passed as fresh function\r\n // expressions within objects that are otherwise deeply equal. Since\r\n // any function created from the same syntactic expression (in the\r\n // same code location) will always stringify to the same code\r\n // according to fnToStr.call, we can reasonably expect these\r\n // repeatedly passed function expressions to have the same code, and\r\n // thus behave \"the same\" (with all the caveats mentioned above),\r\n // even though the runtime function objects are !== to one another.\r\n return !endsWith(aCode, nativeCodeSuffix);\r\n }\r\n }\r\n // Otherwise the values are not equal.\r\n return false;\r\n}\r\nfunction definedKeys(obj) {\r\n // Remember that the second argument to Array.prototype.filter will be\r\n // used as `this` within the callback function.\r\n return Object.keys(obj).filter(isDefinedKey, obj);\r\n}\r\nfunction isDefinedKey(key) {\r\n return this[key] !== void 0;\r\n}\r\nvar nativeCodeSuffix = \"{ [native code] }\";\r\nfunction endsWith(full, suffix) {\r\n var fromIndex = full.length - suffix.length;\r\n return fromIndex >= 0 &&\r\n full.indexOf(suffix, fromIndex) === fromIndex;\r\n}\r\nfunction previouslyCompared(a, b) {\r\n // Though cyclic references can make an object graph appear infinite from the\r\n // perspective of a depth-first traversal, the graph still contains a finite\r\n // number of distinct object references. We use the previousComparisons cache\r\n // to avoid comparing the same pair of object references more than once, which\r\n // guarantees termination (even if we end up comparing every object in one\r\n // graph to every object in the other graph, which is extremely unlikely),\r\n // while still allowing weird isomorphic structures (like rings with different\r\n // lengths) a chance to pass the equality test.\r\n var bSet = previousComparisons.get(a);\r\n if (bSet) {\r\n // Return true here because we can be sure false will be returned somewhere\r\n // else if the objects are not equivalent.\r\n if (bSet.has(b))\r\n return true;\r\n }\r\n else {\r\n previousComparisons.set(a, bSet = new Set);\r\n }\r\n bSet.add(b);\r\n return false;\r\n}\n\nexport { equal as default, equal };\n","import { Trie } from '@wry/trie';\nexport { Trie as KeyTrie } from '@wry/trie';\nimport { Slot } from '@wry/context';\nexport { asyncFromGen, bind as bindContext, noContext, setTimeout } from '@wry/context';\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n function Cache(max, dispose) {\r\n if (max === void 0) { max = Infinity; }\r\n if (dispose === void 0) { dispose = defaultDispose; }\r\n this.max = max;\r\n this.dispose = dispose;\r\n this.map = new Map();\r\n this.newest = null;\r\n this.oldest = null;\r\n }\r\n Cache.prototype.has = function (key) {\r\n return this.map.has(key);\r\n };\r\n Cache.prototype.get = function (key) {\r\n var node = this.getNode(key);\r\n return node && node.value;\r\n };\r\n Cache.prototype.getNode = function (key) {\r\n var node = this.map.get(key);\r\n if (node && node !== this.newest) {\r\n var older = node.older, newer = node.newer;\r\n if (newer) {\r\n newer.older = older;\r\n }\r\n if (older) {\r\n older.newer = newer;\r\n }\r\n node.older = this.newest;\r\n node.older.newer = node;\r\n node.newer = null;\r\n this.newest = node;\r\n if (node === this.oldest) {\r\n this.oldest = newer;\r\n }\r\n }\r\n return node;\r\n };\r\n Cache.prototype.set = function (key, value) {\r\n var node = this.getNode(key);\r\n if (node) {\r\n return node.value = value;\r\n }\r\n node = {\r\n key: key,\r\n value: value,\r\n newer: null,\r\n older: this.newest\r\n };\r\n if (this.newest) {\r\n this.newest.newer = node;\r\n }\r\n this.newest = node;\r\n this.oldest = this.oldest || node;\r\n this.map.set(key, node);\r\n return node.value;\r\n };\r\n Cache.prototype.clean = function () {\r\n while (this.oldest && this.map.size > this.max) {\r\n this.delete(this.oldest.key);\r\n }\r\n };\r\n Cache.prototype.delete = function (key) {\r\n var node = this.map.get(key);\r\n if (node) {\r\n if (node === this.newest) {\r\n this.newest = node.older;\r\n }\r\n if (node === this.oldest) {\r\n this.oldest = node.newer;\r\n }\r\n if (node.newer) {\r\n node.newer.older = node.older;\r\n }\r\n if (node.older) {\r\n node.older.newer = node.newer;\r\n }\r\n this.map.delete(key);\r\n this.dispose(node.value, key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return Cache;\r\n}());\n\nvar parentEntrySlot = new Slot();\n\nvar _a;\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nvar \r\n// This Array.from polyfill is restricted to working with Set for now,\r\n// but we can improve the polyfill and add other input types, as needed. Note\r\n// that this fallback implementation will only be used if the host environment\r\n// does not support a native Array.from function. In most modern JS runtimes,\r\n// the toArray function exported here will be === Array.from.\r\ntoArray = (_a = Array.from, _a === void 0 ? function (collection) {\r\n var array = [];\r\n collection.forEach(function (item) { return array.push(item); });\r\n return array;\r\n} : _a);\r\nfunction maybeUnsubscribe(entryOrDep) {\r\n var unsubscribe = entryOrDep.unsubscribe;\r\n if (typeof unsubscribe === \"function\") {\r\n entryOrDep.unsubscribe = void 0;\r\n unsubscribe();\r\n }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n if (!condition) {\r\n throw new Error(optionalMessage || \"assertion failure\");\r\n }\r\n}\r\nfunction valueIs(a, b) {\r\n var len = a.length;\r\n return (\r\n // Unknown values are not equal to each other.\r\n len > 0 &&\r\n // Both values must be ordinary (or both exceptional) to be equal.\r\n len === b.length &&\r\n // The underlying value or exception must be the same.\r\n a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n switch (value.length) {\r\n case 0: throw new Error(\"unknown value\");\r\n case 1: return value[0];\r\n case 2: throw value[1];\r\n }\r\n}\r\nfunction valueCopy(value) {\r\n return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n function Entry(fn) {\r\n this.fn = fn;\r\n this.parents = new Set();\r\n this.childValues = new Map();\r\n // When this Entry has children that are dirty, this property becomes\r\n // a Set containing other Entry objects, borrowed from emptySetPool.\r\n // When the set becomes empty, it gets recycled back to emptySetPool.\r\n this.dirtyChildren = null;\r\n this.dirty = true;\r\n this.recomputing = false;\r\n this.value = [];\r\n this.deps = null;\r\n ++Entry.count;\r\n }\r\n Entry.prototype.peek = function () {\r\n if (this.value.length === 1 && !mightBeDirty(this)) {\r\n rememberParent(this);\r\n return this.value[0];\r\n }\r\n };\r\n // This is the most important method of the Entry API, because it\r\n // determines whether the cached this.value can be returned immediately,\r\n // or must be recomputed. The overall performance of the caching system\r\n // depends on the truth of the following observations: (1) this.dirty is\r\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n // (3) valueGet(this.value) is usually returned without recomputation.\r\n Entry.prototype.recompute = function (args) {\r\n assert(!this.recomputing, \"already recomputing\");\r\n rememberParent(this);\r\n return mightBeDirty(this)\r\n ? reallyRecompute(this, args)\r\n : valueGet(this.value);\r\n };\r\n Entry.prototype.setDirty = function () {\r\n if (this.dirty)\r\n return;\r\n this.dirty = true;\r\n this.value.length = 0;\r\n reportDirty(this);\r\n // We can go ahead and unsubscribe here, since any further dirty\r\n // notifications we receive will be redundant, and unsubscribing may\r\n // free up some resources, e.g. file watchers.\r\n maybeUnsubscribe(this);\r\n };\r\n Entry.prototype.dispose = function () {\r\n var _this = this;\r\n this.setDirty();\r\n // Sever any dependency relationships with our own children, so those\r\n // children don't retain this parent Entry in their child.parents sets,\r\n // thereby preventing it from being fully garbage collected.\r\n forgetChildren(this);\r\n // Because this entry has been kicked out of the cache (in index.js),\r\n // we've lost the ability to find out if/when this entry becomes dirty,\r\n // whether that happens through a subscription, because of a direct call\r\n // to entry.setDirty(), or because one of its children becomes dirty.\r\n // Because of this loss of future information, we have to assume the\r\n // worst (that this entry might have become dirty very soon), so we must\r\n // immediately mark this entry's parents as dirty. Normally we could\r\n // just call entry.setDirty() rather than calling parent.setDirty() for\r\n // each parent, but that would leave this entry in parent.childValues\r\n // and parent.dirtyChildren, which would prevent the child from being\r\n // truly forgotten.\r\n eachParent(this, function (parent, child) {\r\n parent.setDirty();\r\n forgetChild(parent, _this);\r\n });\r\n };\r\n Entry.prototype.forget = function () {\r\n // The code that creates Entry objects in index.ts will replace this method\r\n // with one that actually removes the Entry from the cache, which will also\r\n // trigger the entry.dispose method.\r\n this.dispose();\r\n };\r\n Entry.prototype.dependOn = function (dep) {\r\n dep.add(this);\r\n if (!this.deps) {\r\n this.deps = emptySetPool.pop() || new Set();\r\n }\r\n this.deps.add(dep);\r\n };\r\n Entry.prototype.forgetDeps = function () {\r\n var _this = this;\r\n if (this.deps) {\r\n toArray(this.deps).forEach(function (dep) { return dep.delete(_this); });\r\n this.deps.clear();\r\n emptySetPool.push(this.deps);\r\n this.deps = null;\r\n }\r\n };\r\n Entry.count = 0;\r\n return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n child.parents.add(parent);\r\n if (!parent.childValues.has(child)) {\r\n parent.childValues.set(child, []);\r\n }\r\n if (mightBeDirty(child)) {\r\n reportDirtyChild(parent, child);\r\n }\r\n else {\r\n reportCleanChild(parent, child);\r\n }\r\n return parent;\r\n }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n forgetChildren(entry);\r\n // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n if (maybeSubscribe(entry, args)) {\r\n // If we successfully recomputed entry.value and did not fail to\r\n // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n setClean(entry);\r\n }\r\n return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n entry.recomputing = true;\r\n // Set entry.value as unknown.\r\n entry.value.length = 0;\r\n try {\r\n // If entry.fn succeeds, entry.value will become a normal Value.\r\n entry.value[0] = entry.fn.apply(null, args);\r\n }\r\n catch (e) {\r\n // If entry.fn throws, entry.value will become exceptional.\r\n entry.value[1] = e;\r\n }\r\n // Either way, this line is always reached.\r\n entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n entry.dirty = false;\r\n if (mightBeDirty(entry)) {\r\n // This Entry may still have dirty children, in which case we can't\r\n // let our parents know we're clean just yet.\r\n return;\r\n }\r\n reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n eachParent(child, reportDirtyChild);\r\n}\r\nfunction reportClean(child) {\r\n eachParent(child, reportCleanChild);\r\n}\r\nfunction eachParent(child, callback) {\r\n var parentCount = child.parents.size;\r\n if (parentCount) {\r\n var parents = toArray(child.parents);\r\n for (var i = 0; i < parentCount; ++i) {\r\n callback(parents[i], child);\r\n }\r\n }\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n // Must have called rememberParent(child) before calling\r\n // reportDirtyChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(mightBeDirty(child));\r\n var parentWasClean = !mightBeDirty(parent);\r\n if (!parent.dirtyChildren) {\r\n parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n }\r\n else if (parent.dirtyChildren.has(child)) {\r\n // If we already know this child is dirty, then we must have already\r\n // informed our own parents that we are dirty, so we can terminate\r\n // the recursion early.\r\n return;\r\n }\r\n parent.dirtyChildren.add(child);\r\n // If parent was clean before, it just became (possibly) dirty (according to\r\n // mightBeDirty), since we just added child to parent.dirtyChildren.\r\n if (parentWasClean) {\r\n reportDirty(parent);\r\n }\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n // Must have called rememberChild(child) before calling\r\n // reportCleanChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(!mightBeDirty(child));\r\n var childValue = parent.childValues.get(child);\r\n if (childValue.length === 0) {\r\n parent.childValues.set(child, valueCopy(child.value));\r\n }\r\n else if (!valueIs(childValue, child.value)) {\r\n parent.setDirty();\r\n }\r\n removeDirtyChild(parent, child);\r\n if (mightBeDirty(parent)) {\r\n return;\r\n }\r\n reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n var dc = parent.dirtyChildren;\r\n if (dc) {\r\n dc.delete(child);\r\n if (dc.size === 0) {\r\n if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n emptySetPool.push(dc);\r\n }\r\n parent.dirtyChildren = null;\r\n }\r\n }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n if (parent.childValues.size > 0) {\r\n parent.childValues.forEach(function (_value, child) {\r\n forgetChild(parent, child);\r\n });\r\n }\r\n // Remove this parent Entry from any sets to which it was added by the\r\n // addToSet method.\r\n parent.forgetDeps();\r\n // After we forget all our children, this.dirtyChildren must be empty\r\n // and therefore must have been reset to null.\r\n assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n child.parents.delete(parent);\r\n parent.childValues.delete(child);\r\n removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n if (typeof entry.subscribe === \"function\") {\r\n try {\r\n maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n entry.unsubscribe = entry.subscribe.apply(null, args);\r\n }\r\n catch (e) {\r\n // If this Entry has a subscribe function and it threw an exception\r\n // (or an unsubscribe function it previously returned now throws),\r\n // return false to indicate that we were not able to subscribe (or\r\n // unsubscribe), and this Entry should remain dirty.\r\n entry.setDirty();\r\n return false;\r\n }\r\n }\r\n // Returning true indicates either that there was no entry.subscribe\r\n // function or that it succeeded.\r\n return true;\r\n}\n\nvar EntryMethods = {\r\n setDirty: true,\r\n dispose: true,\r\n forget: true,\r\n};\r\nfunction dep(options) {\r\n var depsByKey = new Map();\r\n var subscribe = options && options.subscribe;\r\n function depend(key) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n var dep_1 = depsByKey.get(key);\r\n if (!dep_1) {\r\n depsByKey.set(key, dep_1 = new Set);\r\n }\r\n parent.dependOn(dep_1);\r\n if (typeof subscribe === \"function\") {\r\n maybeUnsubscribe(dep_1);\r\n dep_1.unsubscribe = subscribe(key);\r\n }\r\n }\r\n }\r\n depend.dirty = function dirty(key, entryMethodName) {\r\n var dep = depsByKey.get(key);\r\n if (dep) {\r\n var m_1 = (entryMethodName &&\r\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\r\n // We have to use toArray(dep).forEach instead of dep.forEach, because\r\n // modifying a Set while iterating over it can cause elements in the Set\r\n // to be removed from the Set before they've been iterated over.\r\n toArray(dep).forEach(function (entry) { return entry[m_1](); });\r\n depsByKey.delete(key);\r\n maybeUnsubscribe(dep);\r\n }\r\n };\r\n return depend;\r\n}\n\nfunction makeDefaultMakeCacheKeyFunction() {\r\n var keyTrie = new Trie(typeof WeakMap === \"function\");\r\n return function () {\r\n return keyTrie.lookupArray(arguments);\r\n };\r\n}\r\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar defaultMakeCacheKey = makeDefaultMakeCacheKeyFunction();\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n if (options === void 0) { options = Object.create(null); }\r\n var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n var keyArgs = options.keyArgs;\r\n var makeCacheKey = options.makeCacheKey ||\r\n makeDefaultMakeCacheKeyFunction();\r\n var optimistic = function () {\r\n var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n if (key === void 0) {\r\n return originalFunction.apply(null, arguments);\r\n }\r\n var entry = cache.get(key);\r\n if (!entry) {\r\n cache.set(key, entry = new Entry(originalFunction));\r\n entry.subscribe = options.subscribe;\r\n // Give the Entry the ability to trigger cache.delete(key), even though\r\n // the Entry itself does not know about key or cache.\r\n entry.forget = function () { return cache.delete(key); };\r\n }\r\n var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n // Move this entry to the front of the least-recently used queue,\r\n // since we just finished computing its value.\r\n cache.set(key, entry);\r\n caches.add(cache);\r\n // Clean up any excess entries in the cache, but only if there is no\r\n // active parent entry, meaning we're not in the middle of a larger\r\n // computation that might be flummoxed by the cleaning.\r\n if (!parentEntrySlot.hasValue()) {\r\n caches.forEach(function (cache) { return cache.clean(); });\r\n caches.clear();\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(optimistic, \"size\", {\r\n get: function () {\r\n return cache[\"map\"].size;\r\n },\r\n configurable: false,\r\n enumerable: false,\r\n });\r\n function dirtyKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n entry.setDirty();\r\n }\r\n }\r\n optimistic.dirtyKey = dirtyKey;\r\n optimistic.dirty = function dirty() {\r\n dirtyKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function peekKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n return entry.peek();\r\n }\r\n }\r\n optimistic.peekKey = peekKey;\r\n optimistic.peek = function peek() {\r\n return peekKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function forgetKey(key) {\r\n return cache.delete(key);\r\n }\r\n optimistic.forgetKey = forgetKey;\r\n optimistic.forget = function forget() {\r\n return forgetKey(makeCacheKey.apply(null, arguments));\r\n };\r\n optimistic.makeCacheKey = makeCacheKey;\r\n optimistic.getKey = keyArgs ? function getKey() {\r\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\r\n } : makeCacheKey;\r\n return Object.freeze(optimistic);\r\n}\n\nexport { defaultMakeCacheKey, dep, wrap };\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n function Trie(weakness, makeData) {\r\n if (weakness === void 0) { weakness = true; }\r\n if (makeData === void 0) { makeData = defaultMakeData; }\r\n this.weakness = weakness;\r\n this.makeData = makeData;\r\n }\r\n Trie.prototype.lookup = function () {\r\n var array = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n array[_i] = arguments[_i];\r\n }\r\n return this.lookupArray(array);\r\n };\r\n Trie.prototype.lookupArray = function (array) {\r\n var node = this;\r\n forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n return node.data || (node.data = this.makeData(slice.call(array)));\r\n };\r\n Trie.prototype.getChildTrie = function (key) {\r\n var map = this.weakness && isObjRef(key)\r\n ? this.weak || (this.weak = new WeakMap())\r\n : this.strong || (this.strong = new Map());\r\n var child = map.get(key);\r\n if (!child)\r\n map.set(key, child = new Trie(this.weakness, this.makeData));\r\n return child;\r\n };\r\n return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n switch (typeof value) {\r\n case \"object\":\r\n if (value === null)\r\n break;\r\n // Fall through to return true...\r\n case \"function\":\r\n return true;\r\n }\r\n return false;\r\n}\n\nexport { Trie };\n","import { Directive, TemplateRef, EventEmitter, ContentChild, Input, Output, HostBinding, Component, forwardRef, ContentChildren, Host, Optional, HostListener, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * The `awWizardStepSymbol` directive can be used as an alternative to the `navigationSymbol` input of a [[WizardStep]]\n * to define the step symbol inside the navigation bar. This way step symbol may contain arbitrary content.\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"*\"];\nconst _c1 = function (a0, a1, a2, a3, a4, a5, a6) { return { \"vertical\": a0, \"horizontal\": a1, \"small\": a2, \"large-filled\": a3, \"large-filled-symbols\": a4, \"large-empty\": a5, \"large-empty-symbols\": a6 }; };\nfunction WizardComponent_aw_wizard_navigation_bar_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"aw-wizard-navigation-bar\", 1);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction7(1, _c1, ctx_r0.navBarLocation == \"left\", ctx_r0.navBarLocation == \"top\", ctx_r0.navBarLayout == \"small\", ctx_r0.navBarLayout == \"large-filled\", ctx_r0.navBarLayout == \"large-filled-symbols\", ctx_r0.navBarLayout == \"large-empty\", ctx_r0.navBarLayout == \"large-empty-symbols\"));\n} }\nfunction WizardComponent_aw_wizard_navigation_bar_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"aw-wizard-navigation-bar\", 1);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction7(1, _c1, ctx_r1.navBarLocation == \"right\", ctx_r1.navBarLocation == \"bottom\", ctx_r1.navBarLayout == \"small\", ctx_r1.navBarLayout == \"large-filled\", ctx_r1.navBarLayout == \"large-filled-symbols\", ctx_r1.navBarLayout == \"large-empty\", ctx_r1.navBarLayout == \"large-empty-symbols\"));\n} }\nconst _c2 = function (a1, a2) { return { \"wizard-steps\": true, \"vertical\": a1, \"horizontal\": a2 }; };\nconst _c3 = function (a0) { return { wizardStep: a0 }; };\nfunction WizardNavigationBarComponent_li_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 7);\n} if (rf & 2) {\n const step_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", step_r1.stepTitleTemplate.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, step_r1));\n} }\nfunction WizardNavigationBarComponent_li_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const step_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(step_r1.stepTitle);\n} }\nfunction WizardNavigationBarComponent_li_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainer(0, 7);\n} if (rf & 2) {\n const step_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", step_r1.stepSymbolTemplate.templateRef)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, step_r1));\n} }\nfunction WizardNavigationBarComponent_li_1_ng_container_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const step_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(step_r1.navigationSymbol.symbol);\n} }\nconst _c4 = function (a0, a1, a2, a3, a4, a5) { return { \"current\": a0, \"editing\": a1, \"done\": a2, \"optional\": a3, \"completed\": a4, \"navigable\": a5 }; };\nconst _c5 = function (a0) { return { \"font-family\": a0 }; };\nfunction WizardNavigationBarComponent_li_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 1)(1, \"a\", 2)(2, \"div\", 3);\n ɵngcc0.ɵɵtemplate(3, WizardNavigationBarComponent_li_1_ng_container_3_Template, 1, 4, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(4, WizardNavigationBarComponent_li_1_ng_container_4_Template, 2, 1, \"ng-container\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"div\", 6);\n ɵngcc0.ɵɵtemplate(6, WizardNavigationBarComponent_li_1_ng_container_6_Template, 1, 4, \"ng-container\", 4);\n ɵngcc0.ɵɵtemplate(7, WizardNavigationBarComponent_li_1_ng_container_7_Template, 2, 1, \"ng-container\", 5);\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const step_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction6(8, _c4, ctx_r0.isCurrent(step_r1), ctx_r0.isEditing(step_r1), ctx_r0.isDone(step_r1), ctx_r0.isOptional(step_r1), ctx_r0.isCompleted(step_r1), ctx_r0.isNavigable(step_r1)));\n ɵngcc0.ɵɵattribute(\"id\", step_r1.stepId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"awGoToStep\", step_r1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", step_r1.stepTitleTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !step_r1.stepTitleTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(15, _c5, step_r1.stepSymbolTemplate ? \"\" : step_r1.navigationSymbol.fontFamily));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", step_r1.stepSymbolTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !step_r1.stepSymbolTemplate);\n} }\nclass WizardStepSymbolDirective {\n /**\n * Constructor\n *\n * @param templateRef A reference to the content of the `ng-template` that contains this [[WizardStepSymbolDirective]]\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nWizardStepSymbolDirective.ɵfac = function WizardStepSymbolDirective_Factory(t) { return new (t || WizardStepSymbolDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nWizardStepSymbolDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WizardStepSymbolDirective, selectors: [[\"ng-template\", \"awStepSymbol\", \"\"], [\"ng-template\", \"awWizardStepSymbol\", \"\"]] });\nWizardStepSymbolDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardStepSymbolDirective, [{\n type: Directive,\n args: [{\n selector: 'ng-template[awStepSymbol], ng-template[awWizardStepSymbol]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n\n/**\n * The `awWizardStepTitle` directive can be used as an alternative to the `stepTitle` input of a [[WizardStep]]\n * to define the content of a step title inside the navigation bar.\n * This step title can be freely created and can contain more than only plain text\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass WizardStepTitleDirective {\n /**\n * Constructor\n *\n * @param templateRef A reference to the content of the `ng-template` that contains this [[WizardStepTitleDirective]]\n */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nWizardStepTitleDirective.ɵfac = function WizardStepTitleDirective_Factory(t) { return new (t || WizardStepTitleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nWizardStepTitleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WizardStepTitleDirective, selectors: [[\"ng-template\", \"awStepTitle\", \"\"], [\"ng-template\", \"awWizardStepTitle\", \"\"]] });\nWizardStepTitleDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardStepTitleDirective, [{\n type: Directive,\n args: [{\n selector: 'ng-template[awStepTitle], ng-template[awWizardStepTitle]'\n }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n\n/**\n * Basic functionality every type of wizard step needs to provide\n *\n * @author Marc Arndt\n */\n/* tslint:disable-next-line directive-class-suffix */\nclass WizardStep {\n constructor() {\n /**\n * A symbol property, which contains an optional symbol for the step inside the navigation bar.\n * Takes effect when `stepSymbolTemplate` is not defined or null.\n */\n this.navigationSymbol = { symbol: '' };\n /**\n * A boolean describing if the wizard step is currently selected\n */\n this.selected = false;\n /**\n * A boolean describing if the wizard step has been completed\n */\n this.completed = false;\n /**\n * A boolean describing if the wizard step is shown as completed when the wizard is presented to the user\n *\n * Users will typically use `CompletedStepDirective` to set this flag\n */\n this.initiallyCompleted = false;\n /**\n * A boolean describing if the wizard step is being edited after being competed\n *\n * This flag can only be true when `selected` is true.\n */\n this.editing = false;\n /**\n * A boolean describing, if the wizard step should be selected by default, i.e. after the wizard has been initialized as the initial step\n */\n this.defaultSelected = false;\n /**\n * A boolean describing if the wizard step is an optional step\n */\n this.optional = false;\n /**\n * A function or boolean deciding, if this step can be entered\n */\n this.canEnter = true;\n /**\n * A function or boolean deciding, if this step can be exited\n */\n this.canExit = true;\n /**\n * This [[EventEmitter]] is called when the step is entered.\n * The bound method should be used to do initialization work.\n */\n this.stepEnter = new EventEmitter();\n /**\n * This [[EventEmitter]] is called when the step is exited.\n * The bound method can be used to do cleanup work.\n */\n this.stepExit = new EventEmitter();\n }\n /**\n * Returns true if this wizard step should be visible to the user.\n * If the step should be visible to the user false is returned, otherwise true\n */\n get hidden() {\n return !this.selected;\n }\n /**\n * This method returns true, if this wizard step can be transitioned with a given direction.\n * Transitioned in this case means either entered or exited, depending on the given `condition` parameter.\n *\n * @param condition A condition variable, deciding if the step can be transitioned\n * @param direction The direction in which this step should be transitioned\n * @returns A [[Promise]] containing `true`, if this step can transitioned in the given direction\n * @throws An `Error` is thrown if `condition` is neither a function nor a boolean\n */\n static canTransitionStep(condition, direction) {\n if (typeof (condition) === typeof (true)) {\n return Promise.resolve(condition);\n }\n else if (condition instanceof Function) {\n return Promise.resolve(condition(direction));\n }\n else {\n return Promise.reject(new Error(`Input value '${condition}' is neither a boolean nor a function`));\n }\n }\n /**\n * A function called when the step is entered\n *\n * @param direction The direction in which the step is entered\n */\n enter(direction) {\n this.stepEnter.emit(direction);\n }\n /**\n * A function called when the step is exited\n *\n * @param direction The direction in which the step is exited\n */\n exit(direction) {\n this.stepExit.emit(direction);\n }\n /**\n * This method returns true, if this wizard step can be entered from the given direction.\n * Because this method depends on the value `canEnter`, it will throw an error, if `canEnter` is neither a boolean\n * nor a function.\n *\n * @param direction The direction in which this step should be entered\n * @returns A [[Promise]] containing `true`, if the step can be entered in the given direction, false otherwise\n * @throws An `Error` is thrown if `anEnter` is neither a function nor a boolean\n */\n canEnterStep(direction) {\n return WizardStep.canTransitionStep(this.canEnter, direction);\n }\n /**\n * This method returns true, if this wizard step can be exited into given direction.\n * Because this method depends on the value `canExit`, it will throw an error, if `canExit` is neither a boolean\n * nor a function.\n *\n * @param direction The direction in which this step should be left\n * @returns A [[Promise]] containing `true`, if the step can be exited in the given direction, false otherwise\n * @throws An `Error` is thrown if `canExit` is neither a function nor a boolean\n */\n canExitStep(direction) {\n return WizardStep.canTransitionStep(this.canExit, direction);\n }\n}\nWizardStep.ɵfac = function WizardStep_Factory(t) { return new (t || WizardStep)(); };\nWizardStep.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WizardStep, contentQueries: function WizardStep_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, WizardStepTitleDirective, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, WizardStepSymbolDirective, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.stepTitleTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.stepSymbolTemplate = _t.first);\n } }, hostVars: 1, hostBindings: function WizardStep_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"hidden\", ctx.hidden);\n } }, inputs: { navigationSymbol: \"navigationSymbol\", canEnter: \"canEnter\", canExit: \"canExit\", stepId: \"stepId\", stepTitle: \"stepTitle\" }, outputs: { stepEnter: \"stepEnter\", stepExit: \"stepExit\" } });\nWizardStep.propDecorators = {\n stepTitleTemplate: [{ type: ContentChild, args: [WizardStepTitleDirective,] }],\n stepSymbolTemplate: [{ type: ContentChild, args: [WizardStepSymbolDirective,] }],\n stepId: [{ type: Input }],\n stepTitle: [{ type: Input }],\n navigationSymbol: [{ type: Input }],\n canEnter: [{ type: Input }],\n canExit: [{ type: Input }],\n stepEnter: [{ type: Output }],\n stepExit: [{ type: Output }],\n hidden: [{ type: HostBinding, args: ['hidden',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardStep, [{\n type: Directive\n }], function () { return []; }, { navigationSymbol: [{\n type: Input\n }], canEnter: [{\n type: Input\n }], canExit: [{\n type: Input\n }], stepEnter: [{\n type: Output\n }], stepExit: [{\n type: Output\n }], hidden: [{\n type: HostBinding,\n args: ['hidden']\n }], stepTitleTemplate: [{\n type: ContentChild,\n args: [WizardStepTitleDirective]\n }], stepSymbolTemplate: [{\n type: ContentChild,\n args: [WizardStepSymbolDirective]\n }], stepId: [{\n type: Input\n }], stepTitle: [{\n type: Input\n }] }); })();\n\n/**\n * Basic functionality every wizard completion step needs to provide\n *\n * @author Marc Arndt\n */\n/* tslint:disable-next-line directive-class-suffix */\nclass WizardCompletionStep extends WizardStep {\n constructor() {\n super(...arguments);\n /**\n * @inheritDoc\n */\n this.stepExit = new EventEmitter();\n /**\n * @inheritDoc\n */\n this.canExit = false;\n }\n /**\n * @inheritDoc\n */\n enter(direction) {\n this.completed = true;\n this.stepEnter.emit(direction);\n }\n /**\n * @inheritDoc\n */\n exit(direction) {\n // set this completion step as incomplete (unless it happens to be initiallyCompleted)\n this.completed = this.initiallyCompleted;\n this.stepExit.emit(direction);\n }\n}\nWizardCompletionStep.ɵfac = /*@__PURE__*/ function () { let ɵWizardCompletionStep_BaseFactory; return function WizardCompletionStep_Factory(t) { return (ɵWizardCompletionStep_BaseFactory || (ɵWizardCompletionStep_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(WizardCompletionStep)))(t || WizardCompletionStep); }; }();\nWizardCompletionStep.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WizardCompletionStep, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardCompletionStep, [{\n type: Directive\n }], null, null); })();\n\n/**\n * The `aw-wizard-completion-step` component can be used to define a completion/success step at the end of your wizard\n * After a `aw-wizard-completion-step` has been entered, it has the characteristic that the user is blocked from\n * leaving it again to a previous step.\n * In addition entering a `aw-wizard-completion-step` automatically sets the `aw-wizard` and all steps inside the `aw-wizard`\n * as completed.\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * ### Example\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * With a navigation symbol from the `font-awesome` font:\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass WizardCompletionStepComponent extends WizardCompletionStep {\n}\nWizardCompletionStepComponent.ɵfac = /*@__PURE__*/ function () { let ɵWizardCompletionStepComponent_BaseFactory; return function WizardCompletionStepComponent_Factory(t) { return (ɵWizardCompletionStepComponent_BaseFactory || (ɵWizardCompletionStepComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(WizardCompletionStepComponent)))(t || WizardCompletionStepComponent); }; }();\nWizardCompletionStepComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: WizardCompletionStepComponent, selectors: [[\"aw-wizard-completion-step\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: WizardStep, useExisting: forwardRef(() => WizardCompletionStepComponent) },\n { provide: WizardCompletionStep, useExisting: forwardRef(() => WizardCompletionStepComponent) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function WizardCompletionStepComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardCompletionStepComponent, [{\n type: Component,\n args: [{\n selector: 'aw-wizard-completion-step',\n template: \"\\n\",\n providers: [\n { provide: WizardStep, useExisting: forwardRef(() => WizardCompletionStepComponent) },\n { provide: WizardCompletionStep, useExisting: forwardRef(() => WizardCompletionStepComponent) }\n ]\n }]\n }], null, null); })();\n\n/**\n * The direction in which a step transition was made\n *\n * @author Marc Arndt\n */\n/**\n * This enum contains the different possible moving directions in which a wizard can be traversed\n *\n * @author Marc Arndt\n */\nvar MovingDirection;\n(function (MovingDirection) {\n /**\n * A forward step transition\n */\n MovingDirection[MovingDirection[\"Forwards\"] = 0] = \"Forwards\";\n /**\n * A backward step transition\n */\n MovingDirection[MovingDirection[\"Backwards\"] = 1] = \"Backwards\";\n /**\n * No step transition was done\n */\n MovingDirection[MovingDirection[\"Stay\"] = 2] = \"Stay\";\n})(MovingDirection || (MovingDirection = {}));\n\n/**\n * Base implementation of [[NavigationMode]]\n *\n * Note: Built-in [[NavigationMode]] classes should be stateless, allowing the library user to easily create\n * an instance of a particular [[NavigationMode]] class and pass it to ``.\n *\n * @author Marc Arndt\n */\nclass BaseNavigationMode {\n /**\n * Checks, whether a wizard step, as defined by the given destination index, can be transitioned to.\n *\n * This method controls navigation by [[goToStep]], [[goToPreviousStep]], and [[goToNextStep]] directives.\n * Navigation by navigation bar is governed by [[isNavigable]].\n *\n * In this implementation, a destination wizard step can be entered if:\n * - it exists\n * - the current step can be exited in the direction of the destination step\n * - the destination step can be entered in the direction from the current step\n *\n * Subclasses can impose additional restrictions, see [[canTransitionToStep]].\n *\n * @param wizard The wizard component to operate on\n * @param destinationIndex The index of the destination step\n * @returns A [[Promise]] containing `true`, if the destination step can be transitioned to and `false` otherwise\n */\n canGoToStep(wizard, destinationIndex) {\n const hasStep = wizard.hasStep(destinationIndex);\n const movingDirection = wizard.getMovingDirection(destinationIndex);\n const canExitCurrentStep = (previous) => {\n return previous && wizard.currentStep.canExitStep(movingDirection);\n };\n const canEnterDestinationStep = (previous) => {\n return previous && wizard.getStepAtIndex(destinationIndex).canEnterStep(movingDirection);\n };\n const canTransitionToStep = (previous) => {\n return previous && this.canTransitionToStep(wizard, destinationIndex);\n };\n return Promise.resolve(hasStep)\n .then(canTransitionToStep)\n // Apply user-defined checks at the end. They can involve user interaction\n // which is better to be avoided if navigation mode does not actually allow the transition\n // (`canTransitionToStep` returns `false`).\n .then(canExitCurrentStep)\n .then(canEnterDestinationStep);\n }\n /**\n * Imposes additional restrictions for `canGoToStep` in current navigation mode.\n *\n * The base implementation allows transition iff the given step is navigable from the navigation bar (see `isNavigable`).\n * However, in some navigation modes `canTransitionToStep` can be more relaxed to allow navigation to certain steps\n * by previous/next buttons, but not using the navigation bar.\n *\n * @param wizard The wizard component to operate on\n * @param destinationIndex The index of the destination step\n * @returns `true`, if the destination step can be transitioned to and `false` otherwise\n */\n canTransitionToStep(wizard, destinationIndex) {\n return this.isNavigable(wizard, destinationIndex);\n }\n /**\n * Tries to transition to the wizard step, as denoted by the given destination index.\n *\n * When entering the destination step, the following actions are done:\n * - the old current step is set as completed\n * - the old current step is set as unselected\n * - the old current step is exited\n * - the destination step is set as selected\n * - the destination step is entered\n *\n * When the destination step couldn't be entered, the following actions are done:\n * - the current step is exited and entered in the direction `MovingDirection.Stay`\n *\n * @param wizard The wizard component to operate on\n * @param destinationIndex The index of the destination wizard step, which should be entered\n * @param preFinalize An event emitter, to be called before the step has been transitioned\n * @param postFinalize An event emitter, to be called after the step has been transitioned\n */\n goToStep(wizard, destinationIndex, preFinalize, postFinalize) {\n this.canGoToStep(wizard, destinationIndex).then(navigationAllowed => {\n if (navigationAllowed) {\n // the current step can be exited in the given direction\n const movingDirection = wizard.getMovingDirection(destinationIndex);\n /* istanbul ignore if */\n if (preFinalize) {\n preFinalize.emit();\n }\n // leave current step\n wizard.currentStep.completed = true;\n wizard.currentStep.exit(movingDirection);\n wizard.currentStep.editing = false;\n wizard.currentStep.selected = false;\n this.transition(wizard, destinationIndex);\n // remember if the next step is already completed before entering it to properly set `editing` flag\n const wasCompleted = wizard.completed || wizard.currentStep.completed;\n // go to next step\n wizard.currentStep.enter(movingDirection);\n wizard.currentStep.selected = true;\n if (wasCompleted) {\n wizard.currentStep.editing = true;\n }\n /* istanbul ignore if */\n if (postFinalize) {\n postFinalize.emit();\n }\n }\n else {\n // if the current step can't be left, reenter the current step\n wizard.currentStep.exit(MovingDirection.Stay);\n wizard.currentStep.enter(MovingDirection.Stay);\n }\n });\n }\n /**\n * Transitions the wizard to the given step index.\n *\n * Can perform additional actions in particular navigation mode implementations.\n *\n * @param wizard The wizard component to operate on\n * @param destinationIndex The index of the destination wizard step\n */\n transition(wizard, destinationIndex) {\n wizard.currentStepIndex = destinationIndex;\n }\n /**\n * Resets the state of this wizard.\n *\n * A reset transitions the wizard automatically to the first step and sets all steps as incomplete.\n * In addition the whole wizard is set as incomplete.\n *\n * @param wizard The wizard component to operate on\n */\n reset(wizard) {\n this.ensureCanReset(wizard);\n // reset the step internal state\n wizard.wizardSteps.forEach(step => {\n step.completed = step.initiallyCompleted;\n step.selected = false;\n step.editing = false;\n });\n // set the first step as the current step\n wizard.currentStepIndex = wizard.defaultStepIndex;\n wizard.currentStep.selected = true;\n wizard.currentStep.enter(MovingDirection.Forwards);\n }\n /**\n * Checks if wizard configuration allows to perform reset.\n *\n * A check failure is indicated by throwing an `Error` with the message discribing the discovered misconfiguration issue.\n *\n * Can include additional checks in particular navigation mode implementations.\n *\n * @param wizard The wizard component to operate on\n * @throws An `Error` is thrown, if a micconfiguration issue is discovered.\n */\n ensureCanReset(wizard) {\n // the wizard doesn't contain a step with the default step index\n if (!wizard.hasStep(wizard.defaultStepIndex)) {\n throw new Error(`The wizard doesn't contain a step with index ${wizard.defaultStepIndex}`);\n }\n }\n}\n\n/**\n * The default navigation mode used by [[WizardComponent]] and [[NavigationModeDirective]].\n *\n * It is parameterized with two navigation policies passed to constructor:\n *\n * - [[navigateBackward]] policy controls whether wizard steps before the current step are navigable:\n *\n * - `\"deny\"` -- the steps are not navigable\n * - `\"allow\"` -- the steps are navigable\n * - If the corresponding constructor argument is omitted or is `null` or `undefined`,\n * then the default value is applied which is `\"deny\"`\n *\n * - [[navigateForward]] policy controls whether wizard steps after the current step are navigable:\n *\n * - `\"deny\"` -- the steps are not navigable\n * - `\"allow\"` -- the steps are navigable\n * - `\"visited\"` -- a step is navigable iff it was already visited before\n * - If the corresponding constructor argument is omitted or is `null` or `undefined`,\n * then the default value is applied which is `\"allow\"`\n */\nclass ConfigurableNavigationMode extends BaseNavigationMode {\n /**\n * Constructor\n *\n * @param navigateBackward Controls whether wizard steps before the current step are navigable\n * @param navigateForward Controls whether wizard steps before the current step are navigable\n */\n constructor(navigateBackward = null, navigateForward = null) {\n super();\n this.navigateBackward = navigateBackward;\n this.navigateForward = navigateForward;\n this.navigateBackward = this.navigateBackward || 'allow';\n this.navigateForward = this.navigateForward || 'deny';\n }\n /**\n * @inheritDoc\n */\n canTransitionToStep(wizard, destinationIndex) {\n // if the destination step can be navigated to using the navigation bar,\n // it should be accessible with [goToStep] as well\n if (this.isNavigable(wizard, destinationIndex)) {\n return true;\n }\n // navigation with [goToStep] is permitted if all previous steps\n // to the destination step have been completed or are optional\n return wizard.wizardSteps\n .filter((step, index) => index < destinationIndex && index !== wizard.currentStepIndex)\n .every(step => step.completed || step.optional);\n }\n /**\n * @inheritDoc\n */\n transition(wizard, destinationIndex) {\n if (this.navigateForward === 'deny') {\n // set all steps after the destination step to incomplete\n wizard.wizardSteps\n .filter((step, index) => wizard.currentStepIndex > destinationIndex && index > destinationIndex)\n .forEach(step => step.completed = false);\n }\n super.transition(wizard, destinationIndex);\n }\n /**\n * @inheritDoc\n */\n isNavigable(wizard, destinationIndex) {\n // Check if the destination step can be navigated to\n const destinationStep = wizard.getStepAtIndex(destinationIndex);\n if (destinationStep instanceof WizardCompletionStep) {\n // A completion step can only be entered, if all previous steps have been completed, are optional, or selected\n const previousStepsCompleted = wizard.wizardSteps\n .filter((step, index) => index < destinationIndex)\n .every(step => step.completed || step.optional || step.selected);\n if (!previousStepsCompleted) {\n return false;\n }\n }\n // Apply navigation pocicies\n if (destinationIndex < wizard.currentStepIndex) {\n // If the destination step is before current, apply the `navigateBackward` policy\n switch (this.navigateBackward) {\n case 'allow': return true;\n case 'deny': return false;\n default:\n throw new Error(`Invalid value for navigateBackward: ${this.navigateBackward}`);\n }\n }\n else if (destinationIndex > wizard.currentStepIndex) {\n // If the destination step is after current, apply the `navigateForward` policy\n switch (this.navigateForward) {\n case 'allow': return true;\n case 'deny': return false;\n case 'visited': return destinationStep.completed;\n default:\n throw new Error(`Invalid value for navigateForward: ${this.navigateForward}`);\n }\n }\n else {\n // Re-entering the current step is not allowed\n return false;\n }\n }\n /**\n * @inheritDoc\n */\n ensureCanReset(wizard) {\n super.ensureCanReset(wizard);\n // the default step is a completion step and the wizard contains more than one step\n const defaultWizardStep = wizard.getStepAtIndex(wizard.defaultStepIndex);\n const defaultCompletionStep = defaultWizardStep instanceof WizardCompletionStep;\n if (defaultCompletionStep && wizard.wizardSteps.length !== 1) {\n throw new Error(`The default step index ${wizard.defaultStepIndex} references a completion step`);\n }\n }\n}\n\n/**\n * The `aw-wizard` component defines the root component of a wizard.\n * Through the setting of input parameters for the `aw-wizard` component it's possible to change the location and size\n * of its navigation bar.\n *\n * ### Syntax\n * ```html\n * \n * ...\n * \n * ```\n *\n * ### Example\n *\n * Without completion step:\n *\n * ```html\n * \n * ...\n * ...\n * \n * ```\n *\n * With completion step:\n *\n * ```html\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass WizardComponent {\n /**\n * Constructor\n */\n constructor() {\n /**\n * The location of the navigation bar inside the wizard.\n * This location can be either top, bottom, left or right\n */\n this.navBarLocation = 'top';\n /**\n * The layout of the navigation bar inside the wizard.\n * The layout can be either small, large-filled, large-empty or large-symbols\n */\n this.navBarLayout = 'small';\n /**\n * The direction in which the steps inside the navigation bar should be shown.\n * The direction can be either `left-to-right` or `right-to-left`\n */\n this.navBarDirection = 'left-to-right';\n this._defaultStepIndex = 0;\n /**\n * True, if the navigation bar shouldn't be used for navigating\n */\n this.disableNavigationBar = false;\n /**\n * The navigation mode used to navigate inside the wizard\n *\n * For outside access, use the [[navigation]] getter.\n */\n this._navigation = new ConfigurableNavigationMode();\n /**\n * An array representation of all wizard steps belonging to this model\n *\n * For outside access, use the [[wizardSteps]] getter.\n */\n this._wizardSteps = [];\n /**\n * The index of the currently visible and selected step inside the wizardSteps QueryList.\n * If this wizard contains no steps, currentStepIndex is -1\n *\n * Note: Do not modify this field directly. Instead, use navigation methods:\n * [[goToStep]], [[goToPreviousStep]], [[goToNextStep]].\n */\n this.currentStepIndex = -1;\n }\n /**\n * The initially selected step, represented by its index\n * Beware: This initial default is only used if no wizard step has been enhanced with the `selected` directive\n */\n get defaultStepIndex() {\n // This value can be either:\n // - the index of a wizard step with a `selected` directive, or\n // - the default step index, set in the [[WizardComponent]]\n const foundDefaultStep = this.wizardSteps.find(step => step.defaultSelected);\n if (foundDefaultStep) {\n return this.getIndexOfStep(foundDefaultStep);\n }\n else {\n return this._defaultStepIndex;\n }\n }\n set defaultStepIndex(defaultStepIndex) {\n this._defaultStepIndex = defaultStepIndex;\n }\n /**\n * Returns true if this wizard uses a horizontal orientation.\n * The wizard uses a horizontal orientation, iff the navigation bar is shown at the top or bottom of this wizard\n *\n * @returns True if this wizard uses a horizontal orientation\n */\n get horizontalOrientation() {\n return this.navBarLocation === 'top' || this.navBarLocation === 'bottom';\n }\n /**\n * Returns true if this wizard uses a vertical orientation.\n * The wizard uses a vertical orientation, iff the navigation bar is shown at the left or right of this wizard\n *\n * @returns True if this wizard uses a vertical orientation\n */\n get verticalOrientation() {\n return this.navBarLocation === 'left' || this.navBarLocation === 'right';\n }\n /**\n * Initialization work\n */\n ngAfterContentInit() {\n // add a subscriber to the wizard steps QueryList to listen to changes in the DOM\n this.wizardStepsQueryList.changes.subscribe(changedWizardSteps => {\n this.updateWizardSteps(changedWizardSteps.toArray());\n });\n // initialize the model\n this.updateWizardSteps(this.wizardStepsQueryList.toArray());\n // finally reset the whole wizard component\n setTimeout(() => this.reset());\n }\n /**\n * The WizardStep object belonging to the currently visible and selected step.\n * The currentStep is always the currently selected wizard step.\n * The currentStep can be either completed, if it was visited earlier,\n * or not completed, if it is visited for the first time or its state is currently out of date.\n *\n * If this wizard contains no steps, currentStep is null\n */\n get currentStep() {\n if (this.hasStep(this.currentStepIndex)) {\n return this.wizardSteps[this.currentStepIndex];\n }\n else {\n return null;\n }\n }\n /**\n * The completeness of the wizard.\n * If the wizard has been completed, i.e. all steps are either completed or optional, this value is true, otherwise it is false\n */\n get completed() {\n return this.wizardSteps.every(step => step.completed || step.optional);\n }\n /**\n * An array representation of all wizard steps belonging to this model\n */\n get wizardSteps() {\n return this._wizardSteps;\n }\n /**\n * Updates the wizard steps to the new array\n *\n * @param wizardSteps The updated wizard steps\n */\n updateWizardSteps(wizardSteps) {\n // the wizard is currently not in the initialization phase\n if (this.wizardSteps.length > 0 && this.currentStepIndex > -1) {\n this.currentStepIndex = wizardSteps.indexOf(this.wizardSteps[this.currentStepIndex]);\n }\n this._wizardSteps = wizardSteps;\n }\n /**\n * The navigation mode used to navigate inside the wizard\n */\n get navigation() {\n return this._navigation;\n }\n /**\n * Updates the navigation mode for this wizard component\n *\n * @param navigation The updated navigation mode\n */\n set navigation(navigation) {\n this._navigation = navigation;\n }\n /**\n * Checks if a given index `stepIndex` is inside the range of possible wizard steps inside this wizard\n *\n * @param stepIndex The to be checked index of a step inside this wizard\n * @returns True if the given `stepIndex` is contained inside this wizard, false otherwise\n */\n hasStep(stepIndex) {\n return this.wizardSteps.length > 0 && 0 <= stepIndex && stepIndex < this.wizardSteps.length;\n }\n /**\n * Checks if this wizard has a previous step, compared to the current step\n *\n * @returns True if this wizard has a previous step before the current step\n */\n hasPreviousStep() {\n return this.hasStep(this.currentStepIndex - 1);\n }\n /**\n * Checks if this wizard has a next step, compared to the current step\n *\n * @returns True if this wizard has a next step after the current step\n */\n hasNextStep() {\n return this.hasStep(this.currentStepIndex + 1);\n }\n /**\n * Checks if this wizard is currently inside its last step\n *\n * @returns True if the wizard is currently inside its last step\n */\n isLastStep() {\n return this.wizardSteps.length > 0 && this.currentStepIndex === this.wizardSteps.length - 1;\n }\n /**\n * Finds the [[WizardStep]] at the given index `stepIndex`.\n * If no [[WizardStep]] exists at the given index an Error is thrown\n *\n * @param stepIndex The given index\n * @returns The found [[WizardStep]] at the given index `stepIndex`\n * @throws An `Error` is thrown, if the given index `stepIndex` doesn't exist\n */\n getStepAtIndex(stepIndex) {\n if (!this.hasStep(stepIndex)) {\n throw new Error(`Expected a known step, but got stepIndex: ${stepIndex}.`);\n }\n return this.wizardSteps[stepIndex];\n }\n /**\n * Finds the index of the step with the given `stepId`.\n * If no step with the given `stepId` exists, `-1` is returned\n *\n * @param stepId The given step id\n * @returns The found index of a step with the given step id, or `-1` if no step with the given id is included in the wizard\n */\n getIndexOfStepWithId(stepId) {\n return this.wizardSteps.findIndex(step => step.stepId === stepId);\n }\n /**\n * Finds the index of the given [[WizardStep]] `step`.\n * If the given [[WizardStep]] is not contained inside this wizard, `-1` is returned\n *\n * @param step The given [[WizardStep]]\n * @returns The found index of `step` or `-1` if the step is not included in the wizard\n */\n getIndexOfStep(step) {\n return this.wizardSteps.indexOf(step);\n }\n /**\n * Calculates the correct [[MovingDirection]] value for a given `destinationStep` compared to the `currentStepIndex`.\n *\n * @param destinationStep The given destination step\n * @returns The calculated [[MovingDirection]]\n */\n getMovingDirection(destinationStep) {\n let movingDirection;\n if (destinationStep > this.currentStepIndex) {\n movingDirection = MovingDirection.Forwards;\n }\n else if (destinationStep < this.currentStepIndex) {\n movingDirection = MovingDirection.Backwards;\n }\n else {\n movingDirection = MovingDirection.Stay;\n }\n return movingDirection;\n }\n /**\n * Checks, whether a wizard step, as defined by the given destination index, can be transitioned to.\n *\n * This method controls navigation by [[goToStep]], [[goToPreviousStep]], and [[goToNextStep]] directives.\n * Navigation by navigation bar is governed by [[isNavigable]].\n *\n * @param destinationIndex The index of the destination step\n * @returns A [[Promise]] containing `true`, if the destination step can be transitioned to and false otherwise\n */\n canGoToStep(destinationIndex) {\n return this.navigation.canGoToStep(this, destinationIndex);\n }\n /**\n * Tries to transition to the wizard step, as denoted by the given destination index.\n *\n * Note: You do not have to call [[canGoToStep]] before calling [[goToStep]].\n * The [[canGoToStep]] method will be called automatically.\n *\n * @param destinationIndex The index of the destination wizard step, which should be entered\n * @param preFinalize An event emitter, to be called before the step has been transitioned\n * @param postFinalize An event emitter, to be called after the step has been transitioned\n */\n goToStep(destinationIndex, preFinalize, postFinalize) {\n return this.navigation.goToStep(this, destinationIndex, preFinalize, postFinalize);\n }\n /**\n * Tries to transition the wizard to the previous step\n *\n * @param preFinalize An event emitter, to be called before the step has been transitioned\n * @param postFinalize An event emitter, to be called after the step has been transitioned\n */\n goToPreviousStep(preFinalize, postFinalize) {\n return this.navigation.goToStep(this, this.currentStepIndex - 1, preFinalize, postFinalize);\n }\n /**\n * Tries to transition the wizard to the next step\n *\n * @param preFinalize An event emitter, to be called before the step has been transitioned\n * @param postFinalize An event emitter, to be called after the step has been transitioned\n */\n goToNextStep(preFinalize, postFinalize) {\n return this.navigation.goToStep(this, this.currentStepIndex + 1, preFinalize, postFinalize);\n }\n /**\n * Checks, whether the wizard step, located at the given index, can be navigated to using the navigation bar.\n *\n * @param destinationIndex The index of the destination step\n * @returns True if the step can be navigated to, false otherwise\n */\n isNavigable(destinationIndex) {\n return this.navigation.isNavigable(this, destinationIndex);\n }\n /**\n * Resets the state of this wizard.\n */\n reset() {\n this.navigation.reset(this);\n }\n}\nWizardComponent.ɵfac = function WizardComponent_Factory(t) { return new (t || WizardComponent)(); };\nWizardComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: WizardComponent, selectors: [[\"aw-wizard\"]], contentQueries: function WizardComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, WizardStep, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wizardStepsQueryList = _t);\n } }, hostVars: 4, hostBindings: function WizardComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"horizontal\", ctx.horizontalOrientation)(\"vertical\", ctx.verticalOrientation);\n } }, inputs: { navBarLocation: \"navBarLocation\", navBarLayout: \"navBarLayout\", navBarDirection: \"navBarDirection\", disableNavigationBar: \"disableNavigationBar\", defaultStepIndex: \"defaultStepIndex\" }, ngContentSelectors: _c0, decls: 4, vars: 6, consts: [[3, \"ngClass\", 4, \"ngIf\"], [3, \"ngClass\"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, WizardComponent_aw_wizard_navigation_bar_0_Template, 1, 9, \"aw-wizard-navigation-bar\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, WizardComponent_aw_wizard_navigation_bar_3_Template, 1, 9, \"aw-wizard-navigation-bar\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navBarLocation == \"top\" || ctx.navBarLocation == \"left\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(3, _c2, ctx.navBarLocation == \"left\" || ctx.navBarLocation == \"right\", ctx.navBarLocation == \"top\" || ctx.navBarLocation == \"bottom\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navBarLocation == \"bottom\" || ctx.navBarLocation == \"right\");\n } }, directives: function () { return [ɵngcc1.NgIf, WizardNavigationBarComponent, ɵngcc1.NgClass]; }, encapsulation: 2 });\nWizardComponent.ctorParameters = () => [];\nWizardComponent.propDecorators = {\n wizardStepsQueryList: [{ type: ContentChildren, args: [WizardStep, { descendants: true },] }],\n navBarLocation: [{ type: Input }],\n navBarLayout: [{ type: Input }],\n navBarDirection: [{ type: Input }],\n defaultStepIndex: [{ type: Input }],\n disableNavigationBar: [{ type: Input }],\n horizontalOrientation: [{ type: HostBinding, args: ['class.horizontal',] }],\n verticalOrientation: [{ type: HostBinding, args: ['class.vertical',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardComponent, [{\n type: Component,\n args: [{\n selector: 'aw-wizard',\n template: \"\\n\\n\\n
\\n \\n
\\n\\n\\n\\n\"\n }]\n }], function () { return []; }, { navBarLocation: [{\n type: Input\n }], navBarLayout: [{\n type: Input\n }], navBarDirection: [{\n type: Input\n }], disableNavigationBar: [{\n type: Input\n }], defaultStepIndex: [{\n type: Input\n }], horizontalOrientation: [{\n type: HostBinding,\n args: ['class.horizontal']\n }], verticalOrientation: [{\n type: HostBinding,\n args: ['class.vertical']\n }], wizardStepsQueryList: [{\n type: ContentChildren,\n args: [WizardStep, { descendants: true }]\n }] }); })();\n\n/**\n * The `aw-wizard-navigation-bar` component contains the navigation bar inside a [[WizardComponent]].\n * To correctly display the navigation bar, it's required to set the right css classes for the navigation bar,\n * otherwise it will look like a normal `ul` component.\n *\n * ### Syntax\n *\n * ```html\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass WizardNavigationBarComponent {\n /**\n * Constructor\n *\n * @param wizard The state the wizard currently resides in\n */\n constructor(wizard) {\n this.wizard = wizard;\n }\n /**\n * Returns all [[WizardStep]]s contained in the wizard\n *\n * @returns An array containing all [[WizardStep]]s\n */\n get wizardSteps() {\n switch (this.wizard.navBarDirection) {\n case 'right-to-left':\n return this.wizard.wizardSteps.slice().reverse();\n case 'left-to-right':\n default:\n return this.wizard.wizardSteps;\n }\n }\n /**\n * Returns the number of wizard steps, that need to be displaced in the navigation bar\n *\n * @returns The number of wizard steps to be displayed\n */\n get numberOfWizardSteps() {\n return this.wizard.wizardSteps.length;\n }\n /**\n * Checks, whether a [[WizardStep]] can be marked as `current` in the navigation bar\n *\n * @param wizardStep The wizard step to be checked\n * @returns True if the step can be marked as `current`\n */\n isCurrent(wizardStep) {\n return wizardStep.selected;\n }\n /**\n * Checks, whether a [[WizardStep]] can be marked as `editing` in the navigation bar\n *\n * @param wizardStep The wizard step to be checked\n * @returns True if the step can be marked as `editing`\n */\n isEditing(wizardStep) {\n return wizardStep.editing;\n }\n /**\n * Checks, whether a [[WizardStep]] can be marked as `done` in the navigation bar\n *\n * @param wizardStep The wizard step to be checked\n * @returns True if the step can be marked as `done`\n */\n isDone(wizardStep) {\n return wizardStep.completed;\n }\n /**\n * Checks, whether a [[WizardStep]] can be marked as `optional` in the navigation bar\n *\n * @param wizardStep The wizard step to be checked\n * @returns True if the step can be marked as `optional`\n */\n isOptional(wizardStep) {\n return wizardStep.optional;\n }\n /**\n * Checks, whether a [[WizardStep]] can be marked as `completed` in the navigation bar.\n *\n * The `completed` class is only applied to completion steps.\n *\n * @param wizardStep The wizard step to be checked\n * @returns True if the step can be marked as `completed`\n */\n isCompleted(wizardStep) {\n return wizardStep instanceof WizardCompletionStep && this.wizard.completed;\n }\n /**\n * Checks, whether a [[WizardStep]] can be marked as `navigable` in the navigation bar.\n * A wizard step can be navigated to if:\n * - the step is currently not selected\n * - the navigation bar isn't disabled\n * - the navigation mode allows navigation to the step\n *\n * @param wizardStep The wizard step to be checked\n * @returns True if the step can be marked as navigable\n */\n isNavigable(wizardStep) {\n return !wizardStep.selected && !this.wizard.disableNavigationBar &&\n this.wizard.isNavigable(this.wizard.getIndexOfStep(wizardStep));\n }\n}\nWizardNavigationBarComponent.ɵfac = function WizardNavigationBarComponent_Factory(t) { return new (t || WizardNavigationBarComponent)(ɵngcc0.ɵɵdirectiveInject(WizardComponent)); };\nWizardNavigationBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: WizardNavigationBarComponent, selectors: [[\"aw-wizard-navigation-bar\"]], decls: 2, vars: 4, consts: [[3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngClass\"], [3, \"awGoToStep\"], [1, \"label\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"step-indicator\", 3, \"ngStyle\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function WizardNavigationBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ul\");\n ɵngcc0.ɵɵtemplate(1, WizardNavigationBarComponent_li_1_Template, 8, 17, \"li\", 0);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate1(\"steps-indicator steps-\", ctx.numberOfWizardSteps, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.wizardSteps);\n } }, directives: function () { return [ɵngcc1.NgForOf, ɵngcc1.NgClass, GoToStepDirective, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgStyle]; }, encapsulation: 2 });\nWizardNavigationBarComponent.ctorParameters = () => [\n { type: WizardComponent }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardNavigationBarComponent, [{\n type: Component,\n args: [{\n selector: 'aw-wizard-navigation-bar',\n template: \"\\n\"\n }]\n }], function () { return [{ type: WizardComponent }]; }, null); })();\n\n/**\n * The `aw-wizard-step` component is used to define a normal step inside a wizard.\n *\n * ### Syntax\n *\n * With `stepTitle` and `navigationSymbol` inputs:\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * With `awWizardStepTitle` and `awWizardStepSymbol` directives:\n *\n * ```html\n * \n * \n * step title\n * \n * \n * symbol\n * \n * ...\n * \n * ```\n *\n * ### Example\n *\n * With `stepTitle` and `navigationSymbol` inputs:\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * With `awWizardStepTitle` and `awWizardStepSymbol` directives:\n *\n * ```html\n * \n * \n * Address information\n * \n * \n * \n * \n * \n * ```\n *\n * @author Marc Arndt\n */\nclass WizardStepComponent extends WizardStep {\n}\nWizardStepComponent.ɵfac = /*@__PURE__*/ function () { let ɵWizardStepComponent_BaseFactory; return function WizardStepComponent_Factory(t) { return (ɵWizardStepComponent_BaseFactory || (ɵWizardStepComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(WizardStepComponent)))(t || WizardStepComponent); }; }();\nWizardStepComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: WizardStepComponent, selectors: [[\"aw-wizard-step\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: WizardStep, useExisting: forwardRef(() => WizardStepComponent) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function WizardStepComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardStepComponent, [{\n type: Component,\n args: [{\n selector: 'aw-wizard-step',\n template: \"\\n\",\n providers: [\n { provide: WizardStep, useExisting: forwardRef(() => WizardStepComponent) }\n ]\n }]\n }], null, null); })();\n\n/**\n * The `awEnableBackLinks` directive can be used to allow the user to leave a [[WizardCompletionStep]] after is has been entered.\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * ### Example\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass EnableBackLinksDirective {\n /**\n * Constructor\n *\n * @param completionStep The wizard completion step, which should be exitable\n */\n constructor(completionStep) {\n this.completionStep = completionStep;\n /**\n * This EventEmitter is called when the step is exited.\n * The bound method can be used to do cleanup work.\n */\n this.stepExit = new EventEmitter();\n }\n /**\n * Initialization work\n */\n ngOnInit() {\n this.completionStep.canExit = true;\n this.completionStep.stepExit = this.stepExit;\n }\n}\nEnableBackLinksDirective.ɵfac = function EnableBackLinksDirective_Factory(t) { return new (t || EnableBackLinksDirective)(ɵngcc0.ɵɵdirectiveInject(WizardCompletionStep, 1)); };\nEnableBackLinksDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: EnableBackLinksDirective, selectors: [[\"\", \"awEnableBackLinks\", \"\"]], outputs: { stepExit: \"stepExit\" } });\nEnableBackLinksDirective.ctorParameters = () => [\n { type: WizardCompletionStep, decorators: [{ type: Host }] }\n];\nEnableBackLinksDirective.propDecorators = {\n stepExit: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(EnableBackLinksDirective, [{\n type: Directive,\n args: [{\n selector: '[awEnableBackLinks]'\n }]\n }], function () { return [{ type: WizardCompletionStep, decorators: [{\n type: Host\n }] }]; }, { stepExit: [{\n type: Output\n }] }); })();\n\n/**\n * Checks whether the given `value` implements the interface [[StepId]].\n *\n * @param value The value to be checked\n * @returns True if the given value implements [[StepId]] and false otherwise\n */\nfunction isStepId(value) {\n return value.hasOwnProperty('stepId') && !(value instanceof WizardStep);\n}\n\n/**\n * Checks whether the given `value` implements the interface [[StepIndex]].\n *\n * @param value The value to be checked\n * @returns True if the given value implements [[StepIndex]] and false otherwise\n */\nfunction isStepIndex(value) {\n return value.hasOwnProperty('stepIndex');\n}\n\n/**\n * Checks whether the given `value` implements the interface [[StepOffset]].\n *\n * @param value The value to be checked\n * @returns True if the given value implements [[StepOffset]] and false otherwise\n */\nfunction isStepOffset(value) {\n return value.hasOwnProperty('stepOffset');\n}\n\n/**\n * The `awGoToStep` directive can be used to navigate to a given step.\n * This step can be defined in one of multiple formats\n *\n * ### Syntax\n *\n * With absolute step index:\n *\n * ```html\n * \n * ```\n *\n * With unique step id:\n *\n * ```html\n * \n * ```\n *\n * With a wizard step object:\n *\n * ```html\n * \n * ```\n *\n * With an offset to the defining step:\n *\n * ```html\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass GoToStepDirective {\n /**\n * Constructor\n *\n * @param wizard The wizard component\n * @param wizardStep The wizard step, which contains this [[GoToStepDirective]]\n */\n constructor(wizard, wizardStep) {\n this.wizard = wizard;\n this.wizardStep = wizardStep;\n /**\n * This [[EventEmitter]] is called directly before the current step is exited during a transition through a component with this directive.\n */\n this.preFinalize = new EventEmitter();\n /**\n * This [[EventEmitter]] is called directly after the current step is exited during a transition through a component with this directive.\n */\n this.postFinalize = new EventEmitter();\n }\n /**\n * A convenience field for `preFinalize`\n */\n get finalize() {\n return this.preFinalize;\n }\n /**\n * A convenience name for `preFinalize`\n *\n * @param emitter The [[EventEmitter]] to be set\n */\n set finalize(emitter) {\n /* istanbul ignore next */\n this.preFinalize = emitter;\n }\n /**\n * Returns the destination step of this directive as an absolute step index inside the wizard\n *\n * @returns The index of the destination step\n * @throws If `targetStep` is of an unknown type an `Error` is thrown\n */\n get destinationStep() {\n let destinationStep;\n if (isStepIndex(this.targetStep)) {\n destinationStep = this.targetStep.stepIndex;\n }\n else if (isStepId(this.targetStep)) {\n destinationStep = this.wizard.getIndexOfStepWithId(this.targetStep.stepId);\n }\n else if (isStepOffset(this.targetStep) && this.wizardStep !== null) {\n destinationStep = this.wizard.getIndexOfStep(this.wizardStep) + this.targetStep.stepOffset;\n }\n else if (this.targetStep instanceof WizardStep) {\n destinationStep = this.wizard.getIndexOfStep(this.targetStep);\n }\n else {\n throw new Error(`Input 'targetStep' is neither a WizardStep, StepOffset, StepIndex or StepId`);\n }\n return destinationStep;\n }\n /**\n * Listener method for `click` events on the component with this directive.\n * After this method is called the wizard will try to transition to the `destinationStep`\n */\n onClick() {\n this.wizard.goToStep(this.destinationStep, this.preFinalize, this.postFinalize);\n }\n}\nGoToStepDirective.ɵfac = function GoToStepDirective_Factory(t) { return new (t || GoToStepDirective)(ɵngcc0.ɵɵdirectiveInject(WizardComponent), ɵngcc0.ɵɵdirectiveInject(WizardStep, 8)); };\nGoToStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: GoToStepDirective, selectors: [[\"\", \"awGoToStep\", \"\"]], hostBindings: function GoToStepDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function GoToStepDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { targetStep: [\"awGoToStep\", \"targetStep\"] }, outputs: { preFinalize: \"preFinalize\", postFinalize: \"postFinalize\", finalize: \"finalize\" } });\nGoToStepDirective.ctorParameters = () => [\n { type: WizardComponent },\n { type: WizardStep, decorators: [{ type: Optional }] }\n];\nGoToStepDirective.propDecorators = {\n preFinalize: [{ type: Output }],\n postFinalize: [{ type: Output }],\n targetStep: [{ type: Input, args: ['awGoToStep',] }],\n finalize: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GoToStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awGoToStep]'\n }]\n }], function () { return [{ type: WizardComponent }, { type: WizardStep, decorators: [{\n type: Optional\n }] }]; }, { preFinalize: [{\n type: Output\n }], postFinalize: [{\n type: Output\n }], finalize: [{\n type: Output\n }], \n /**\n * Listener method for `click` events on the component with this directive.\n * After this method is called the wizard will try to transition to the `destinationStep`\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], targetStep: [{\n type: Input,\n args: ['awGoToStep']\n }] }); })();\n\n/**\n * The `awNextStep` directive can be used to navigate to the next step.\n *\n * ### Syntax\n *\n * ```html\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass NextStepDirective {\n /**\n * Constructor\n *\n * @param wizard The state of the wizard\n */\n constructor(wizard) {\n this.wizard = wizard;\n /**\n * This [[EventEmitter]] is called directly before the current step is exited during a transition through a component with this directive.\n */\n this.preFinalize = new EventEmitter();\n /**\n * This [[EventEmitter]] is called directly after the current step is exited during a transition through a component with this directive.\n */\n this.postFinalize = new EventEmitter();\n }\n /**\n * A convenience field for `preFinalize`\n */\n get finalize() {\n return this.preFinalize;\n }\n /**\n * A convenience name for `preFinalize`\n *\n * @param emitter The [[EventEmitter]] to be set\n */\n set finalize(emitter) {\n this.preFinalize = emitter;\n }\n /**\n * Listener method for `click` events on the component with this directive.\n * After this method is called the wizard will try to transition to the next step\n */\n onClick() {\n this.wizard.goToNextStep(this.preFinalize, this.postFinalize);\n }\n}\nNextStepDirective.ɵfac = function NextStepDirective_Factory(t) { return new (t || NextStepDirective)(ɵngcc0.ɵɵdirectiveInject(WizardComponent)); };\nNextStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NextStepDirective, selectors: [[\"\", \"awNextStep\", \"\"]], hostBindings: function NextStepDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NextStepDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, outputs: { preFinalize: \"preFinalize\", postFinalize: \"postFinalize\", finalize: \"finalize\" } });\nNextStepDirective.ctorParameters = () => [\n { type: WizardComponent }\n];\nNextStepDirective.propDecorators = {\n preFinalize: [{ type: Output }],\n postFinalize: [{ type: Output }],\n finalize: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NextStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awNextStep]'\n }]\n }], function () { return [{ type: WizardComponent }]; }, { preFinalize: [{\n type: Output\n }], postFinalize: [{\n type: Output\n }], finalize: [{\n type: Output\n }], \n /**\n * Listener method for `click` events on the component with this directive.\n * After this method is called the wizard will try to transition to the next step\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }] }); })();\n\n/**\n * The `awOptionalStep` directive can be used to define an optional `wizard-step`.\n * An optional wizard step is a [[WizardStep]] that doesn't need to be completed to transition to later wizard steps.\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * ### Example\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass OptionalStepDirective {\n /**\n * Constructor\n *\n * @param wizardStep The wizard step, which contains this [[OptionalStepDirective]]\n */\n constructor(wizardStep) {\n this.wizardStep = wizardStep;\n // tslint:disable-next-line:no-input-rename\n this.optional = true;\n }\n /**\n * Initialization work\n */\n ngOnInit() {\n // The input receives '' when specified in the template without a value. In this case, apply the default value (`true`).\n this.wizardStep.optional = this.optional || this.optional === '';\n }\n}\nOptionalStepDirective.ɵfac = function OptionalStepDirective_Factory(t) { return new (t || OptionalStepDirective)(ɵngcc0.ɵɵdirectiveInject(WizardStep, 1)); };\nOptionalStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: OptionalStepDirective, selectors: [[\"\", \"awOptionalStep\", \"\"]], inputs: { optional: [\"awOptionalStep\", \"optional\"] } });\nOptionalStepDirective.ctorParameters = () => [\n { type: WizardStep, decorators: [{ type: Host }] }\n];\nOptionalStepDirective.propDecorators = {\n optional: [{ type: Input, args: ['awOptionalStep',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(OptionalStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awOptionalStep]'\n }]\n }], function () { return [{ type: WizardStep, decorators: [{\n type: Host\n }] }]; }, { optional: [{\n type: Input,\n args: ['awOptionalStep']\n }] }); })();\n\n/**\n * The `awPreviousStep` directive can be used to navigate to the previous step.\n * Compared to the [[NextStepDirective]] it's important to note, that this directive doesn't contain a `finalize` output method.\n *\n * ### Syntax\n *\n * ```html\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass PreviousStepDirective {\n /**\n * Constructor\n *\n * @param wizard The state of the wizard\n */\n constructor(wizard) {\n this.wizard = wizard;\n /**\n * This [[EventEmitter]] is called directly before the current step is exited during a transition through a component with this directive.\n */\n this.preFinalize = new EventEmitter();\n /**\n * This [[EventEmitter]] is called directly after the current step is exited during a transition through a component with this directive.\n */\n this.postFinalize = new EventEmitter();\n }\n /**\n * A convenience field for `preFinalize`\n */\n get finalize() {\n return this.preFinalize;\n }\n /**\n * A convenience field for `preFinalize`\n *\n * @param emitter The [[EventEmitter]] to be set\n */\n set finalize(emitter) {\n /* istanbul ignore next */\n this.preFinalize = emitter;\n }\n /**\n * Listener method for `click` events on the component with this directive.\n * After this method is called the wizard will try to transition to the previous step\n */\n onClick() {\n this.wizard.goToPreviousStep(this.preFinalize, this.postFinalize);\n }\n}\nPreviousStepDirective.ɵfac = function PreviousStepDirective_Factory(t) { return new (t || PreviousStepDirective)(ɵngcc0.ɵɵdirectiveInject(WizardComponent)); };\nPreviousStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: PreviousStepDirective, selectors: [[\"\", \"awPreviousStep\", \"\"]], hostBindings: function PreviousStepDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function PreviousStepDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, outputs: { preFinalize: \"preFinalize\", postFinalize: \"postFinalize\", finalize: \"finalize\" } });\nPreviousStepDirective.ctorParameters = () => [\n { type: WizardComponent }\n];\nPreviousStepDirective.propDecorators = {\n preFinalize: [{ type: Output }],\n postFinalize: [{ type: Output }],\n finalize: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PreviousStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awPreviousStep]'\n }]\n }], function () { return [{ type: WizardComponent }]; }, { preFinalize: [{\n type: Output\n }], postFinalize: [{\n type: Output\n }], finalize: [{\n type: Output\n }], \n /**\n * Listener method for `click` events on the component with this directive.\n * After this method is called the wizard will try to transition to the previous step\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }] }); })();\n\n/**\n * The `awResetWizard` directive can be used to reset the wizard to its initial state.\n * This directive accepts an output, which can be used to specify some custom cleanup work during the reset process.\n *\n * ### Syntax\n *\n * ```html\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass ResetWizardDirective {\n /**\n * Constructor\n *\n * @param wizard The wizard component\n */\n constructor(wizard) {\n this.wizard = wizard;\n /**\n * An [[EventEmitter]] containing some tasks to be done, directly before the wizard is being reset\n */\n this.finalize = new EventEmitter();\n }\n /**\n * Resets the wizard\n */\n onClick() {\n // do some optional cleanup work\n this.finalize.emit();\n // reset the wizard to its initial state\n this.wizard.reset();\n }\n}\nResetWizardDirective.ɵfac = function ResetWizardDirective_Factory(t) { return new (t || ResetWizardDirective)(ɵngcc0.ɵɵdirectiveInject(WizardComponent)); };\nResetWizardDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResetWizardDirective, selectors: [[\"\", \"awResetWizard\", \"\"]], hostBindings: function ResetWizardDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ResetWizardDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, outputs: { finalize: \"finalize\" } });\nResetWizardDirective.ctorParameters = () => [\n { type: WizardComponent }\n];\nResetWizardDirective.propDecorators = {\n finalize: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResetWizardDirective, [{\n type: Directive,\n args: [{\n selector: '[awResetWizard]'\n }]\n }], function () { return [{ type: WizardComponent }]; }, { finalize: [{\n type: Output\n }], \n /**\n * Resets the wizard\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }] }); })();\n\n/**\n * The `awSelectedStep` directive can be used on a [[WizardStep]] to set it as selected after the wizard initialisation or a reset.\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * @author Marc Arndt\n */\nclass SelectedStepDirective {\n /**\n * Constructor\n *\n * @param wizardStep The wizard step, which should be selected by default\n */\n constructor(wizardStep) {\n this.wizardStep = wizardStep;\n }\n /**\n * Initialization work\n */\n ngOnInit() {\n this.wizardStep.defaultSelected = true;\n }\n}\nSelectedStepDirective.ɵfac = function SelectedStepDirective_Factory(t) { return new (t || SelectedStepDirective)(ɵngcc0.ɵɵdirectiveInject(WizardStep, 1)); };\nSelectedStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: SelectedStepDirective, selectors: [[\"\", \"awSelectedStep\", \"\"]] });\nSelectedStepDirective.ctorParameters = () => [\n { type: WizardStep, decorators: [{ type: Host }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SelectedStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awSelectedStep]'\n }]\n }], function () { return [{ type: WizardStep, decorators: [{\n type: Host\n }] }]; }, null); })();\n\n/**\n * The `awWizardCompletionStep` directive can be used to define a completion/success step at the end of your wizard\n * After a [[WizardCompletionStep]] has been entered, it has the characteristic that the user is blocked from\n * leaving it again to a previous step.\n * In addition entering a [[WizardCompletionStep]] automatically sets the `wizard`, and all steps inside the `wizard`,\n * as completed.\n *\n * ### Syntax\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * ### Example\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * With a navigation symbol from the `font-awesome` font:\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * @author Marc Arndt\n */\nclass WizardCompletionStepDirective extends WizardCompletionStep {\n}\nWizardCompletionStepDirective.ɵfac = /*@__PURE__*/ function () { let ɵWizardCompletionStepDirective_BaseFactory; return function WizardCompletionStepDirective_Factory(t) { return (ɵWizardCompletionStepDirective_BaseFactory || (ɵWizardCompletionStepDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(WizardCompletionStepDirective)))(t || WizardCompletionStepDirective); }; }();\nWizardCompletionStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WizardCompletionStepDirective, selectors: [[\"\", \"awWizardCompletionStep\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: WizardStep, useExisting: forwardRef(() => WizardCompletionStepDirective) },\n { provide: WizardCompletionStep, useExisting: forwardRef(() => WizardCompletionStepDirective) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardCompletionStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awWizardCompletionStep]',\n providers: [\n { provide: WizardStep, useExisting: forwardRef(() => WizardCompletionStepDirective) },\n { provide: WizardCompletionStep, useExisting: forwardRef(() => WizardCompletionStepDirective) }\n ]\n }]\n }], null, null); })();\n\n/**\n * The `awWizardStep` directive can be used to define a normal step inside a wizard.\n *\n * ### Syntax\n *\n * With `stepTitle` and `navigationSymbol` inputs:\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * With `awWizardStepTitle` and `awWizardStepSymbol` directives:\n *\n * ```html\n *
\n * \n * step title\n * \n * \n * symbol\n * \n * ...\n *
\n * ```\n *\n * ### Example\n *\n * With `stepTitle` and `navigationSymbol` inputs:\n *\n * ```html\n *
\n * ...\n *
\n * ```\n *\n * With `awWizardStepTitle` and `awWizardStepSymbol` directives:\n *\n * ```html\n *
\n * \n * Address information\n * \n * \n * \n * \n *
\n * ```\n *\n * @author Marc Arndt\n */\nclass WizardStepDirective extends WizardStep {\n}\nWizardStepDirective.ɵfac = /*@__PURE__*/ function () { let ɵWizardStepDirective_BaseFactory; return function WizardStepDirective_Factory(t) { return (ɵWizardStepDirective_BaseFactory || (ɵWizardStepDirective_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(WizardStepDirective)))(t || WizardStepDirective); }; }();\nWizardStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: WizardStepDirective, selectors: [[\"\", \"awWizardStep\", \"\"]], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: WizardStep, useExisting: forwardRef(() => WizardStepDirective) }\n ]), ɵngcc0.ɵɵInheritDefinitionFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(WizardStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awWizardStep]',\n providers: [\n { provide: WizardStep, useExisting: forwardRef(() => WizardStepDirective) }\n ]\n }]\n }], null, null); })();\n\n/**\n * The [[awNavigationMode]] directive can be used to customize wizard'd navigation mode.\n *\n * There are several usage options:\n *\n * ### Option 1. Customize the default navigation mode with [[navigateBackward]] and/or [[navigateForward]] inputs.\n *\n * ```html\n * ...\n * ```\n *\n * ### Option 2. Pass in a custom navigation mode\n *\n * ```typescript\n * import { BaseNavigationMode } from 'angular-archwizard'\n *\n * class CustomNavigationMode extends BaseNavigationMode {\n *\n * // ...\n * }\n * ```\n *\n * ```typescript\n * @Component({\n * // ...\n * })\n * class MyComponent {\n *\n * navigationMode = new CustomNavigationMode();\n * }\n * ```\n *\n * ```html\n * ...\n * ```\n *\n * ### Additional Notes\n *\n * - Specifying a custom navigation mode takes priority over [[navigateBackward]] and [[navigateForward]] inputs\n *\n * - Omitting the [[awNavigationMode]] directive or, equally, specifying just [[awNavigationMode]] without\n * any inputs or parameters causes the wizard to use the default \"strict\" navigation mode equivalent to\n *\n * ```html\n * ...\n * ````\n */\nclass NavigationModeDirective {\n constructor(wizard) {\n this.wizard = wizard;\n }\n ngOnChanges(changes) {\n this.wizard.navigation = this.getNavigationMode();\n }\n getNavigationMode() {\n if (this.awNavigationMode) {\n return this.awNavigationMode;\n }\n return new ConfigurableNavigationMode(this.navigateBackward, this.navigateForward);\n }\n}\nNavigationModeDirective.ɵfac = function NavigationModeDirective_Factory(t) { return new (t || NavigationModeDirective)(ɵngcc0.ɵɵdirectiveInject(WizardComponent)); };\nNavigationModeDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NavigationModeDirective, selectors: [[\"\", \"awNavigationMode\", \"\"]], inputs: { awNavigationMode: \"awNavigationMode\", navigateBackward: \"navigateBackward\", navigateForward: \"navigateForward\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNavigationModeDirective.ctorParameters = () => [\n { type: WizardComponent }\n];\nNavigationModeDirective.propDecorators = {\n awNavigationMode: [{ type: Input }],\n navigateBackward: [{ type: Input }],\n navigateForward: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NavigationModeDirective, [{\n type: Directive,\n args: [{\n selector: '[awNavigationMode]'\n }]\n }], function () { return [{ type: WizardComponent }]; }, { awNavigationMode: [{\n type: Input\n }], navigateBackward: [{\n type: Input\n }], navigateForward: [{\n type: Input\n }] }); })();\n\n/**\n * The `awCompletedStep` directive can be used to make a wizard step initially completed.\n *\n * Initially completed steps are shown as completed when the wizard is presented to the user.\n *\n * A typical use case is to make a step initially completed if it is automatically filled with some derived/predefined information.\n *\n * ### Syntax\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * An optional boolean condition can be specified:\n *\n * ```html\n * \n * ...\n * \n * ```\n *\n * ### Example\n *\n * ```html\n * \n * ...\n * \n * ```\n */\nclass CompletedStepDirective {\n /**\n * Constructor\n *\n * @param wizardStep The wizard step, which contains this [[CompletedStepDirective]]\n */\n constructor(wizardStep) {\n this.wizardStep = wizardStep;\n // tslint:disable-next-line:no-input-rename\n this.initiallyCompleted = true;\n }\n /**\n * Initialization work\n */\n ngOnInit() {\n // The input receives '' when specified in the template without a value. In this case, apply the default value (`true`).\n this.wizardStep.initiallyCompleted = this.initiallyCompleted || this.initiallyCompleted === '';\n }\n}\nCompletedStepDirective.ɵfac = function CompletedStepDirective_Factory(t) { return new (t || CompletedStepDirective)(ɵngcc0.ɵɵdirectiveInject(WizardStep, 1)); };\nCompletedStepDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CompletedStepDirective, selectors: [[\"\", \"awCompletedStep\", \"\"]], inputs: { initiallyCompleted: [\"awCompletedStep\", \"initiallyCompleted\"] } });\nCompletedStepDirective.ctorParameters = () => [\n { type: WizardStep, decorators: [{ type: Host }] }\n];\nCompletedStepDirective.propDecorators = {\n initiallyCompleted: [{ type: Input, args: ['awCompletedStep',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CompletedStepDirective, [{\n type: Directive,\n args: [{\n selector: '[awCompletedStep]'\n }]\n }], function () { return [{ type: WizardStep, decorators: [{\n type: Host\n }] }]; }, { initiallyCompleted: [{\n type: Input,\n args: ['awCompletedStep']\n }] }); })();\n\n/**\n * The module defining all the content inside `angular-archwizard`\n *\n * @author Marc Arndt\n */\nclass ArchwizardModule {\n /* istanbul ignore next */\n static forRoot() {\n return {\n ngModule: ArchwizardModule,\n providers: [\n // Nothing here yet\n ]\n };\n }\n}\nArchwizardModule.ɵfac = function ArchwizardModule_Factory(t) { return new (t || ArchwizardModule)(); };\nArchwizardModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ArchwizardModule });\nArchwizardModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ArchwizardModule, [{\n type: NgModule,\n args: [{\n declarations: [\n WizardComponent,\n WizardStepComponent,\n WizardNavigationBarComponent,\n WizardCompletionStepComponent,\n GoToStepDirective,\n NextStepDirective,\n PreviousStepDirective,\n OptionalStepDirective,\n WizardStepSymbolDirective,\n WizardStepTitleDirective,\n EnableBackLinksDirective,\n WizardStepDirective,\n WizardCompletionStepDirective,\n SelectedStepDirective,\n ResetWizardDirective,\n NavigationModeDirective,\n CompletedStepDirective,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n WizardComponent,\n WizardStepComponent,\n WizardNavigationBarComponent,\n WizardCompletionStepComponent,\n GoToStepDirective,\n NextStepDirective,\n PreviousStepDirective,\n OptionalStepDirective,\n WizardStepSymbolDirective,\n WizardStepTitleDirective,\n EnableBackLinksDirective,\n WizardStepDirective,\n WizardCompletionStepDirective,\n SelectedStepDirective,\n ResetWizardDirective,\n NavigationModeDirective,\n CompletedStepDirective,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ArchwizardModule, { declarations: function () { return [WizardComponent, WizardStepComponent, WizardNavigationBarComponent, WizardCompletionStepComponent, GoToStepDirective, NextStepDirective, PreviousStepDirective, OptionalStepDirective, WizardStepSymbolDirective, WizardStepTitleDirective, EnableBackLinksDirective, WizardStepDirective, WizardCompletionStepDirective, SelectedStepDirective, ResetWizardDirective, NavigationModeDirective, CompletedStepDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [WizardComponent, WizardStepComponent, WizardNavigationBarComponent, WizardCompletionStepComponent, GoToStepDirective, NextStepDirective, PreviousStepDirective, OptionalStepDirective, WizardStepSymbolDirective, WizardStepTitleDirective, EnableBackLinksDirective, WizardStepDirective, WizardCompletionStepDirective, SelectedStepDirective, ResetWizardDirective, NavigationModeDirective, CompletedStepDirective]; } }); })();\n\n// export the components\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArchwizardModule, BaseNavigationMode, CompletedStepDirective, ConfigurableNavigationMode, EnableBackLinksDirective, GoToStepDirective, MovingDirection, NavigationModeDirective, NextStepDirective, OptionalStepDirective, PreviousStepDirective, ResetWizardDirective, SelectedStepDirective, WizardCompletionStep, WizardCompletionStepComponent, WizardCompletionStepDirective, WizardComponent, WizardNavigationBarComponent, WizardStep, WizardStepComponent, WizardStepDirective, WizardStepSymbolDirective, WizardStepTitleDirective, isStepId, isStepIndex, isStepOffset };\n\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/l-lin/angular-datatables/master/LICENSE\n */\nimport { Directive, ElementRef, Input, Renderer2, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nvar DataTableDirective = /** @class */ (function () {\n function DataTableDirective(el, vcr, renderer) {\n this.el = el;\n this.vcr = vcr;\n this.renderer = renderer;\n /**\n * The DataTable option you pass to configure your table.\n */\n this.dtOptions = {};\n }\n DataTableDirective.prototype.ngOnInit = function () {\n var _this = this;\n if (this.dtTrigger) {\n this.dtTrigger.subscribe(function (options) {\n _this.displayTable(options);\n });\n }\n else {\n this.displayTable(null);\n }\n };\n DataTableDirective.prototype.ngOnDestroy = function () {\n if (this.dtTrigger) {\n this.dtTrigger.unsubscribe();\n }\n if (this.dt) {\n this.dt.destroy(true);\n }\n };\n DataTableDirective.prototype.displayTable = function (dtOptions) {\n var _this = this;\n // assign new options if provided\n if (dtOptions) {\n this.dtOptions = dtOptions;\n }\n this.dtInstance = new Promise(function (resolve, reject) {\n Promise.resolve(_this.dtOptions).then(function (resolvedDTOptions) {\n // validate object\n var isTableEmpty = Object.keys(resolvedDTOptions).length === 0 && $('tbody tr', _this.el.nativeElement).length === 0;\n if (isTableEmpty) {\n reject('Both the table and dtOptions cannot be empty');\n return;\n }\n // Using setTimeout as a \"hack\" to be \"part\" of NgZone\n setTimeout(function () {\n // Assign DT properties here\n var options = {\n rowCallback: function (row, data, index) {\n if (resolvedDTOptions.columns) {\n var columns = resolvedDTOptions.columns;\n _this.applyNgPipeTransform(row, columns);\n _this.applyNgRefTemplate(row, columns, data);\n }\n // run user specified row callback if provided.\n if (resolvedDTOptions.rowCallback) {\n resolvedDTOptions.rowCallback(row, data, index);\n }\n }\n };\n // merge user's config with ours\n options = Object.assign({}, resolvedDTOptions, options);\n _this.dt = $(_this.el.nativeElement).DataTable(options);\n resolve(_this.dt);\n });\n });\n });\n };\n DataTableDirective.prototype.applyNgPipeTransform = function (row, columns) {\n // Filter columns with pipe declared\n var colsWithPipe = columns.filter(function (x) { return x.ngPipeInstance && !x.ngTemplateRef; });\n colsWithPipe.forEach(function (el) {\n var pipe = el.ngPipeInstance;\n var pipeArgs = el.ngPipeArgs || [];\n // find index of column using `data` attr\n var i = columns.findIndex(function (e) { return e.data === el.data; });\n // get element which holds data using index\n var rowFromCol = row.childNodes.item(i);\n // Transform data with Pipe and PipeArgs\n var rowVal = $(rowFromCol).text();\n var rowValAfter = pipe.transform.apply(pipe, __spreadArray([rowVal], pipeArgs, false));\n // Apply transformed string to \n $(rowFromCol).text(rowValAfter);\n });\n };\n DataTableDirective.prototype.applyNgRefTemplate = function (row, columns, data) {\n var _this = this;\n // Filter columns using `ngTemplateRef`\n var colsWithTemplate = columns.filter(function (x) { return x.ngTemplateRef && !x.ngPipeInstance; });\n colsWithTemplate.forEach(function (el) {\n var _a = el.ngTemplateRef, ref = _a.ref, context = _a.context;\n // get element which holds data using index\n var i = columns.findIndex(function (e) { return e.data === el.data; });\n var cellFromIndex = row.childNodes.item(i);\n // reset cell before applying transform\n $(cellFromIndex).html('');\n // render onto DOM\n // finalize context to be sent to user\n var _context = Object.assign({}, context, context === null || context === void 0 ? void 0 : context.userData, {\n adtData: data\n });\n var instance = _this.vcr.createEmbeddedView(ref, _context);\n _this.renderer.appendChild(cellFromIndex, instance.rootNodes[0]);\n });\n };\n DataTableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTableDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n DataTableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: DataTableDirective, selector: \"[datatable]\", inputs: { dtOptions: \"dtOptions\", dtTrigger: \"dtTrigger\" }, ngImport: i0 });\n return DataTableDirective;\n}());\nexport { DataTableDirective };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[datatable]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { dtOptions: [{\n type: Input\n }], dtTrigger: [{\n type: Input\n }] } });\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/l-lin/angular-datatables/master/LICENSE\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataTableDirective } from './angular-datatables.directive';\nimport * as i0 from \"@angular/core\";\nvar DataTablesModule = /** @class */ (function () {\n function DataTablesModule() {\n }\n DataTablesModule.forRoot = function () {\n return {\n ngModule: DataTablesModule\n };\n };\n DataTablesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n DataTablesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, declarations: [DataTableDirective], imports: [CommonModule], exports: [DataTableDirective] });\n DataTablesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, imports: [[CommonModule]] });\n return DataTablesModule;\n}());\nexport { DataTablesModule };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [DataTableDirective],\n exports: [DataTableDirective]\n }]\n }] });\n","import { Component, Input, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\r\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction ProgressBarComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.whichProgress(ctx_r0.progress), \"% \");\n} }\nfunction ProgressBarComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.whichProgress(ctx_r1.progress), \" \");\n} }\nclass ProgressBarComponent {\r\n constructor() {\r\n // Default color\r\n this.color = \"#488aff\";\r\n this.disabledP = false;\r\n }\r\n /**\r\n * Returns a color for a certain percent\r\n * @param {?} percent The current progress\r\n * @return {?}\r\n */\r\n whichColor(percent) {\r\n // Get all entries index as an array\r\n /** @type {?} */\r\n let k = Object.keys(this.degraded);\r\n // Convert string to number\r\n k.forEach((e, i) => k[i] = +e);\r\n // Sort them by value\r\n k = k.sort((a, b) => a - b);\r\n // Percent as number\r\n /** @type {?} */\r\n let p = +percent\r\n // Set last by default as the first occurrence\r\n ;\r\n // Set last by default as the first occurrence\r\n /** @type {?} */\r\n let last = k[0];\r\n // Foreach keys \r\n for (let val of k) {\r\n // if current val is < than percent\r\n if (val < p) {\r\n last = val;\r\n }\r\n // if val >= percent then the val that we could show has been reached\r\n else if (val >= p - 1) {\r\n return this.degraded[last];\r\n }\r\n }\r\n // if its the last one return the last\r\n return this.degraded[last];\r\n }\r\n /**\r\n * @param {?} progress\r\n * @return {?}\r\n */\r\n whichProgress(progress) {\r\n try {\r\n return Math.round(+progress * 100) / 100;\r\n }\r\n catch (_a) {\r\n return progress;\r\n }\r\n }\r\n}\nProgressBarComponent.ɵfac = function ProgressBarComponent_Factory(t) { return new (t || ProgressBarComponent)(); };\nProgressBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ProgressBarComponent, selectors: [[\"progress-bar\"]], inputs: { color: \"color\", disabledP: [\"disable-percentage\", \"disabledP\"], progress: \"progress\", degraded: [\"color-degraded\", \"degraded\"] }, decls: 4, vars: 6, consts: [[1, \"progress-outer\"], [1, \"progress-inner\"], [4, \"ngIf\"]], template: function ProgressBarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, ProgressBarComponent_ng_container_2_Template, 2, 1, \"ng-container\", 2);\n ɵngcc0.ɵɵtemplate(3, ProgressBarComponent_ng_container_3_Template, 2, 1, \"ng-container\", 2);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.whichProgress(ctx.progress) + \"%\")(\"background-color\", ctx.degraded == null ? ctx.color : ctx.whichColor(ctx.progress));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.disabledP);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.disabledP);\n } }, directives: [ɵngcc1.NgIf], styles: [\".progress-outer[_ngcontent-%COMP%] {\\n width: 96%;\\n margin: 10px 2%;\\n padding: 3px;\\n background-color: #f4f4f4;\\n border: 1px solid #dcdcdc;\\n color: #fff;\\n border-radius: 20px;\\n text-align: center;\\n }\\n .progress-inner[_ngcontent-%COMP%] {\\n min-width: 15%;\\n min-height:18px;\\n white-space: nowrap;\\n overflow: hidden;\\n padding: 0px;\\n border-radius: 20px;\"] });\r\n/** @nocollapse */\r\nProgressBarComponent.ctorParameters = () => [];\r\nProgressBarComponent.propDecorators = {\r\n progress: [{ type: Input, args: ['progress',] }],\r\n color: [{ type: Input, args: ['color',] }],\r\n degraded: [{ type: Input, args: ['color-degraded',] }],\r\n disabledP: [{ type: Input, args: ['disable-percentage',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ProgressBarComponent, [{\n type: Component,\n args: [{\n selector: 'progress-bar',\n template: `\r\n
\r\n
\r\n \r\n {{whichProgress(progress)}}%\r\n \r\n \r\n {{whichProgress(progress)}}\r\n \r\n
\r\n
\r\n `,\n styles: [`\r\n .progress-outer {\r\n width: 96%;\r\n margin: 10px 2%;\r\n padding: 3px;\r\n background-color: #f4f4f4;\r\n border: 1px solid #dcdcdc;\r\n color: #fff;\r\n border-radius: 20px;\r\n text-align: center;\r\n }\r\n .progress-inner {\r\n min-width: 15%;\r\n min-height:18px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n padding: 0px;\r\n border-radius: 20px;\r\n `]\n }]\n }], function () { return []; }, { color: [{\n type: Input,\n args: ['color']\n }], disabledP: [{\n type: Input,\n args: ['disable-percentage']\n }], progress: [{\n type: Input,\n args: ['progress']\n }], degraded: [{\n type: Input,\n args: ['color-degraded']\n }] }); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\r\nclass ProgressBarModule {\r\n}\nProgressBarModule.ɵfac = function ProgressBarModule_Factory(t) { return new (t || ProgressBarModule)(); };\nProgressBarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ProgressBarModule });\nProgressBarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ProgressBarModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [ProgressBarComponent],\n exports: [ProgressBarComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ProgressBarModule, { declarations: function () { return [ProgressBarComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ProgressBarComponent]; } }); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\n\nexport { ProgressBarComponent, ProgressBarModule };\n\n","\"use strict\";\nvar UUID = (function () {\n function UUID() {\n // no-op\n }\n UUID.UUID = function () {\n if (typeof (window) !== \"undefined\" && typeof (window.crypto) !== \"undefined\" && typeof (window.crypto.getRandomValues) !== \"undefined\") {\n // If we have a cryptographically secure PRNG, use that\n // http://stackoverflow.com/questions/6906916/collisions-when-generating-uuids-in-javascript\n var buf = new Uint16Array(8);\n window.crypto.getRandomValues(buf);\n return (this.pad4(buf[0]) + this.pad4(buf[1]) + \"-\" + this.pad4(buf[2]) + \"-\" + this.pad4(buf[3]) + \"-\" + this.pad4(buf[4]) + \"-\" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7]));\n }\n else {\n // Otherwise, just use Math.random\n // https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n // https://stackoverflow.com/questions/11605068/why-does-jshint-argue-against-bitwise-operators-how-should-i-express-this-code\n return this.random4() + this.random4() + \"-\" + this.random4() + \"-\" + this.random4() + \"-\" +\n this.random4() + \"-\" + this.random4() + this.random4() + this.random4();\n }\n };\n UUID.pad4 = function (num) {\n var ret = num.toString(16);\n while (ret.length < 4) {\n ret = \"0\" + ret;\n }\n return ret;\n };\n UUID.random4 = function () {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n };\n return UUID;\n}());\nexports.UUID = UUID;\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Guid = /** @class */ (function () {\r\n function Guid(guid) {\r\n if (!guid) {\r\n throw new TypeError(\"Invalid argument; `value` has no value.\");\r\n }\r\n this.value = Guid.EMPTY;\r\n if (guid && Guid.isGuid(guid)) {\r\n this.value = guid;\r\n }\r\n }\r\n Guid.isGuid = function (guid) {\r\n var value = guid.toString();\r\n return guid && (guid instanceof Guid || Guid.validator.test(value));\r\n };\r\n Guid.create = function () {\r\n return new Guid([Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\"));\r\n };\r\n Guid.createEmpty = function () {\r\n return new Guid(\"emptyguid\");\r\n };\r\n Guid.parse = function (guid) {\r\n return new Guid(guid);\r\n };\r\n Guid.raw = function () {\r\n return [Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\");\r\n };\r\n Guid.gen = function (count) {\r\n var out = \"\";\r\n for (var i = 0; i < count; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n }\r\n return out;\r\n };\r\n Guid.prototype.equals = function (other) {\r\n // Comparing string `value` against provided `guid` will auto-call\r\n // toString on `guid` for comparison\r\n return Guid.isGuid(other) && this.value === other.toString();\r\n };\r\n Guid.prototype.isEmpty = function () {\r\n return this.value === Guid.EMPTY;\r\n };\r\n Guid.prototype.toString = function () {\r\n return this.value;\r\n };\r\n Guid.prototype.toJSON = function () {\r\n return {\r\n value: this.value\r\n };\r\n };\r\n Guid.validator = new RegExp(\"^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$\", \"i\");\r\n Guid.EMPTY = \"00000000-0000-0000-0000-000000000000\";\r\n return Guid;\r\n}());\r\nexports.Guid = Guid;\r\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '