#include<compare>namespacestd{namespacechrono{// class template durationtemplate<classRep,classPeriod=ratio<1>>classduration;// class template time_pointtemplate<classClock,classDuration=typenameClock::duration>classtime_point;}// common_type specializationstemplate<classRep1,classPeriod1,classRep2,classPeriod2>structcommon_type<chrono::duration<Rep1,Period1>,chrono::duration<Rep2,Period2>>;template<classClock,classDuration1,classDuration2>structcommon_type<chrono::time_point<Clock,Duration1>,chrono::time_point<Clock,Duration2>>;namespacechrono{// customization traitstemplate<classRep>structtreat_as_floating_point;template<classRep>inlineconstexprbooltreat_as_floating_point_v=treat_as_floating_point<Rep>::value;template<classRep>structduration_values;template<classT>structis_clock;template<classT>inlineconstexprboolis_clock_v=is_clock<T>::value;// duration arithmetictemplate<classRep1,classPeriod1,classRep2,classPeriod2>constexprcommon_type_t<duration<Rep1,Period1>,duration<Rep2,Period2>>operator+(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprcommon_type_t<duration<Rep1,Period1>,duration<Rep2,Period2>>operator-(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod,classRep2>constexprduration<common_type_t<Rep1,Rep2>,Period>operator*(constduration<Rep1,Period>&d,constRep2&s);template<classRep1,classRep2,classPeriod>constexprduration<common_type_t<Rep1,Rep2>,Period>operator*(constRep1&s,constduration<Rep2,Period>&d);template<classRep1,classPeriod,classRep2>constexprduration<common_type_t<Rep1,Rep2>,Period>operator/(constduration<Rep1,Period>&d,constRep2&s);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprcommon_type_t<Rep1,Rep2>operator/(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod,classRep2>constexprduration<common_type_t<Rep1,Rep2>,Period>operator%(constduration<Rep1,Period>&d,constRep2&s);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprcommon_type_t<duration<Rep1,Period1>,duration<Rep2,Period2>>operator%(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);// duration comparisonstemplate<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator==(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator<(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator>(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator<=(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator>=(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classRep2,classPeriod2>requires/* see description */constexprautooperator<=>(constduration<Rep1,Period1>&lhs,constduration<Rep2,Period2>&rhs);// conversionstemplate<classToDuration,classRep,classPeriod>constexprToDurationduration_cast(constduration<Rep,Period>&d);template<classToDuration,classRep,classPeriod>constexprToDurationfloor(constduration<Rep,Period>&d);template<classToDuration,classRep,classPeriod>constexprToDurationceil(constduration<Rep,Period>&d);template<classToDuration,classRep,classPeriod>constexprToDurationround(constduration<Rep,Period>&d);// duration I/Otemplate<classCharT,classTraits,classRep,classPeriod>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constduration<Rep,Period>&d);template<classCharT,classTraits,classRep,classPeriod,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,duration<Rep,Period>&d,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// convenience typedefsusingnanoseconds=duration</* signed integer type of at least 64 bits */,nano>;usingmicroseconds=duration</* signed integer type of at least 55 bits */,micro>;usingmilliseconds=duration</* signed integer type of at least 45 bits */,milli>;usingseconds=duration</* signed integer type of at least 35 bits */>;usingminutes=duration</* signed integer type of at least 29 bits */,ratio<60>>;usinghours=duration</* signed integer type of at least 23 bits */,ratio<3600>>;usingdays=duration</* signed integer type of at least 25 bits */,ratio_multiply<ratio<24>,hours::period>>;usingweeks=duration</* signed integer type of at least 22 bits */,ratio_multiply<ratio<7>,days::period>>;usingyears=duration</* signed integer type of at least 17 bits */,ratio_multiply<ratio<146097,400>,days::period>>;usingmonths=duration</* signed integer type of at least 20 bits */,ratio_divide<years::period,ratio<12>>>;// time_point arithmetictemplate<classClock,classDuration1,classRep2,classPeriod2>constexprtime_point<Clock,common_type_t<Duration1,duration<Rep2,Period2>>>operator+(consttime_point<Clock,Duration1>&lhs,constduration<Rep2,Period2>&rhs);template<classRep1,classPeriod1,classClock,classDuration2>constexprtime_point<Clock,common_type_t<duration<Rep1,Period1>,Duration2>>operator+(constduration<Rep1,Period1>&lhs,consttime_point<Clock,Duration2>&rhs);template<classClock,classDuration1,classRep2,classPeriod2>constexprtime_point<Clock,common_type_t<Duration1,duration<Rep2,Period2>>>operator-(consttime_point<Clock,Duration1>&lhs,constduration<Rep2,Period2>&rhs);template<classClock,classDuration1,classDuration2>constexprcommon_type_t<Duration1,Duration2>operator-(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);// time_point comparisonstemplate<classClock,classDuration1,classDuration2>constexprbooloperator==(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);template<classClock,classDuration1,classDuration2>constexprbooloperator<(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);template<classClock,classDuration1,classDuration2>constexprbooloperator>(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);template<classClock,classDuration1,classDuration2>constexprbooloperator<=(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);template<classClock,classDuration1,classDuration2>constexprbooloperator>=(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);template<classClock,classDuration1,three_way_comparable_with<Duration1>Duration2>constexprautooperator<=>(consttime_point<Clock,Duration1>&lhs,consttime_point<Clock,Duration2>&rhs);// conversionstemplate<classToDuration,classClock,classDuration>constexprtime_point<Clock,ToDuration>time_point_cast(consttime_point<Clock,Duration>&t);template<classToDuration,classClock,classDuration>constexprtime_point<Clock,ToDuration>floor(consttime_point<Clock,Duration>&tp);template<classToDuration,classClock,classDuration>constexprtime_point<Clock,ToDuration>ceil(consttime_point<Clock,Duration>&tp);template<classToDuration,classClock,classDuration>constexprtime_point<Clock,ToDuration>round(consttime_point<Clock,Duration>&tp);// specialized algorithmstemplate<classRep,classPeriod>constexprduration<Rep,Period>abs(duration<Rep,Period>d);// class system_clockclasssystem_clock;template<classDuration>usingsys_time=time_point<system_clock,Duration>;usingsys_seconds=sys_time<seconds>;usingsys_days=sys_time<days>;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constsys_time<Duration>&tp);template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constsys_days&dp);template<classCharT,classTraits,classDuration,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,sys_time<Duration>&tp,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class utc_clockclassutc_clock;template<classDuration>usingutc_time=time_point<utc_clock,Duration>;usingutc_seconds=utc_time<seconds>;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constutc_time<Duration>&t);template<classCharT,classTraits,classDuration,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,utc_time<Duration>&tp,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);structleap_second_info;template<classDuration>leap_second_infoget_leap_second_info(constutc_time<Duration>&ut);// class tai_clockclasstai_clock;template<classDuration>usingtai_time=time_point<tai_clock,Duration>;usingtai_seconds=tai_time<seconds>;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,consttai_time<Duration>&t);template<classCharT,classTraits,classDuration,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,tai_time<Duration>&tp,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class gps_clockclassgps_clock;template<classDuration>usinggps_time=time_point<gps_clock,Duration>;usinggps_seconds=gps_time<seconds>;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constgps_time<Duration>&t);template<classCharT,classTraits,classDuration,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,gps_time<Duration>&tp,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// type file_clockusingfile_clock=/* see description */;template<classDuration>usingfile_time=time_point<file_clock,Duration>;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constfile_time<Duration>&tp);template<classCharT,classTraits,classDuration,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,file_time<Duration>&tp,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class steady_clockclasssteady_clock;// class high_resolution_clockclasshigh_resolution_clock;// local timestructlocal_t{};template<classDuration>usinglocal_time=time_point<local_t,Duration>;usinglocal_seconds=local_time<seconds>;usinglocal_days=local_time<days>;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constlocal_time<Duration>&tp);template<classCharT,classTraits,classDuration,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,local_time<Duration>&tp,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// time_point conversionstemplate<classDestClock,classSourceClock>structclock_time_conversion;template<classDestClock,classSourceClock,classDuration>autoclock_cast(consttime_point<SourceClock,Duration>&t);// class last_specstructlast_spec;// class dayclassday;constexprbooloperator==(constday&x,constday&y)noexcept;constexprstrong_orderingoperator<=>(constday&x,constday&y)noexcept;constexprdayoperator+(constday&x,constdays&y)noexcept;constexprdayoperator+(constdays&x,constday&y)noexcept;constexprdayoperator-(constday&x,constdays&y)noexcept;constexprdaysoperator-(constday&x,constday&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constday&d);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,day&d,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class monthclassmonth;constexprbooloperator==(constmonth&x,constmonth&y)noexcept;constexprstrong_orderingoperator<=>(constmonth&x,constmonth&y)noexcept;constexprmonthoperator+(constmonth&x,constmonths&y)noexcept;constexprmonthoperator+(constmonths&x,constmonth&y)noexcept;constexprmonthoperator-(constmonth&x,constmonths&y)noexcept;constexprmonthsoperator-(constmonth&x,constmonth&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constmonth&m);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,month&m,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class yearclassyear;constexprbooloperator==(constyear&x,constyear&y)noexcept;constexprstrong_orderingoperator<=>(constyear&x,constyear&y)noexcept;constexpryearoperator+(constyear&x,constyears&y)noexcept;constexpryearoperator+(constyears&x,constyear&y)noexcept;constexpryearoperator-(constyear&x,constyears&y)noexcept;constexpryearsoperator-(constyear&x,constyear&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constyear&y);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,year&y,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class weekdayclassweekday;constexprbooloperator==(constweekday&x,constweekday&y)noexcept;constexprweekdayoperator+(constweekday&x,constdays&y)noexcept;constexprweekdayoperator+(constdays&x,constweekday&y)noexcept;constexprweekdayoperator-(constweekday&x,constdays&y)noexcept;constexprdaysoperator-(constweekday&x,constweekday&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constweekday&wd);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,weekday&wd,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class weekday_indexedclassweekday_indexed;constexprbooloperator==(constweekday_indexed&x,constweekday_indexed&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constweekday_indexed&wdi);// class weekday_lastclassweekday_last;constexprbooloperator==(constweekday_last&x,constweekday_last&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constweekday_last&wdl);// class month_dayclassmonth_day;constexprbooloperator==(constmonth_day&x,constmonth_day&y)noexcept;constexprstrong_orderingoperator<=>(constmonth_day&x,constmonth_day&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constmonth_day&md);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,month_day&md,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class month_day_lastclassmonth_day_last;constexprbooloperator==(constmonth_day_last&x,constmonth_day_last&y)noexcept;constexprstrong_orderingoperator<=>(constmonth_day_last&x,constmonth_day_last&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constmonth_day_last&mdl);// class month_weekdayclassmonth_weekday;constexprbooloperator==(constmonth_weekday&x,constmonth_weekday&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constmonth_weekday&mwd);// class month_weekday_lastclassmonth_weekday_last;constexprbooloperator==(constmonth_weekday_last&x,constmonth_weekday_last&y)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constmonth_weekday_last&mwdl);// class year_monthclassyear_month;constexprbooloperator==(constyear_month&x,constyear_month&y)noexcept;constexprstrong_orderingoperator<=>(constyear_month&x,constyear_month&y)noexcept;constexpryear_monthoperator+(constyear_month&ym,constmonths&dm)noexcept;constexpryear_monthoperator+(constmonths&dm,constyear_month&ym)noexcept;constexpryear_monthoperator-(constyear_month&ym,constmonths&dm)noexcept;constexprmonthsoperator-(constyear_month&x,constyear_month&y)noexcept;constexpryear_monthoperator+(constyear_month&ym,constyears&dy)noexcept;constexpryear_monthoperator+(constyears&dy,constyear_month&ym)noexcept;constexpryear_monthoperator-(constyear_month&ym,constyears&dy)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constyear_month&ym);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,year_month&ym,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class year_month_dayclassyear_month_day;constexprbooloperator==(constyear_month_day&x,constyear_month_day&y)noexcept;constexprstrong_orderingoperator<=>(constyear_month_day&x,constyear_month_day&y)noexcept;constexpryear_month_dayoperator+(constyear_month_day&ymd,constmonths&dm)noexcept;constexpryear_month_dayoperator+(constmonths&dm,constyear_month_day&ymd)noexcept;constexpryear_month_dayoperator+(constyear_month_day&ymd,constyears&dy)noexcept;constexpryear_month_dayoperator+(constyears&dy,constyear_month_day&ymd)noexcept;constexpryear_month_dayoperator-(constyear_month_day&ymd,constmonths&dm)noexcept;constexpryear_month_dayoperator-(constyear_month_day&ymd,constyears&dy)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constyear_month_day&ymd);template<classCharT,classTraits,classAlloc=allocator<CharT>>basic_istream<CharT,Traits>&from_stream(basic_istream<CharT,Traits>&is,constCharT*fmt,year_month_day&ymd,basic_string<CharT,Traits,Alloc>*abbrev=nullptr,minutes*offset=nullptr);// class year_month_day_lastclassyear_month_day_last;constexprbooloperator==(constyear_month_day_last&x,constyear_month_day_last&y)noexcept;constexprstrong_orderingoperator<=>(constyear_month_day_last&x,constyear_month_day_last&y)noexcept;constexpryear_month_day_lastoperator+(constyear_month_day_last&ymdl,constmonths&dm)noexcept;constexpryear_month_day_lastoperator+(constmonths&dm,constyear_month_day_last&ymdl)noexcept;constexpryear_month_day_lastoperator+(constyear_month_day_last&ymdl,constyears&dy)noexcept;constexpryear_month_day_lastoperator+(constyears&dy,constyear_month_day_last&ymdl)noexcept;constexpryear_month_day_lastoperator-(constyear_month_day_last&ymdl,constmonths&dm)noexcept;constexpryear_month_day_lastoperator-(constyear_month_day_last&ymdl,constyears&dy)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constyear_month_day_last&ymdl);// class year_month_weekdayclassyear_month_weekday;constexprbooloperator==(constyear_month_weekday&x,constyear_month_weekday&y)noexcept;constexpryear_month_weekdayoperator+(constyear_month_weekday&ymwd,constmonths&dm)noexcept;constexpryear_month_weekdayoperator+(constmonths&dm,constyear_month_weekday&ymwd)noexcept;constexpryear_month_weekdayoperator+(constyear_month_weekday&ymwd,constyears&dy)noexcept;constexpryear_month_weekdayoperator+(constyears&dy,constyear_month_weekday&ymwd)noexcept;constexpryear_month_weekdayoperator-(constyear_month_weekday&ymwd,constmonths&dm)noexcept;constexpryear_month_weekdayoperator-(constyear_month_weekday&ymwd,constyears&dy)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constyear_month_weekday&ymwdi);// class year_month_weekday_lastclassyear_month_weekday_last;constexprbooloperator==(constyear_month_weekday_last&x,constyear_month_weekday_last&y)noexcept;constexpryear_month_weekday_lastoperator+(constyear_month_weekday_last&ymwdl,constmonths&dm)noexcept;constexpryear_month_weekday_lastoperator+(constmonths&dm,constyear_month_weekday_last&ymwdl)noexcept;constexpryear_month_weekday_lastoperator+(constyear_month_weekday_last&ymwdl,constyears&dy)noexcept;constexpryear_month_weekday_lastoperator+(constyears&dy,constyear_month_weekday_last&ymwdl)noexcept;constexpryear_month_weekday_lastoperator-(constyear_month_weekday_last&ymwdl,constmonths&dm)noexcept;constexpryear_month_weekday_lastoperator-(constyear_month_weekday_last&ymwdl,constyears&dy)noexcept;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constyear_month_weekday_last&ymwdl);// civil calendar conventional syntax operatorsconstexpryear_monthoperator/(constyear&y,constmonth&m)noexcept;constexpryear_monthoperator/(constyear&y,intm)noexcept;constexprmonth_dayoperator/(constmonth&m,constday&d)noexcept;constexprmonth_dayoperator/(constmonth&m,intd)noexcept;constexprmonth_dayoperator/(intm,constday&d)noexcept;constexprmonth_dayoperator/(constday&d,constmonth&m)noexcept;constexprmonth_dayoperator/(constday&d,intm)noexcept;constexprmonth_day_lastoperator/(constmonth&m,last_spec)noexcept;constexprmonth_day_lastoperator/(intm,last_spec)noexcept;constexprmonth_day_lastoperator/(last_spec,constmonth&m)noexcept;constexprmonth_day_lastoperator/(last_spec,intm)noexcept;constexprmonth_weekdayoperator/(constmonth&m,constweekday_indexed&wdi)noexcept;constexprmonth_weekdayoperator/(intm,constweekday_indexed&wdi)noexcept;constexprmonth_weekdayoperator/(constweekday_indexed&wdi,constmonth&m)noexcept;constexprmonth_weekdayoperator/(constweekday_indexed&wdi,intm)noexcept;constexprmonth_weekday_lastoperator/(constmonth&m,constweekday_last&wdl)noexcept;constexprmonth_weekday_lastoperator/(intm,constweekday_last&wdl)noexcept;constexprmonth_weekday_lastoperator/(constweekday_last&wdl,constmonth&m)noexcept;constexprmonth_weekday_lastoperator/(constweekday_last&wdl,intm)noexcept;constexpryear_month_dayoperator/(constyear_month&ym,constday&d)noexcept;constexpryear_month_dayoperator/(constyear_month&ym,intd)noexcept;constexpryear_month_dayoperator/(constyear&y,constmonth_day&md)noexcept;constexpryear_month_dayoperator/(inty,constmonth_day&md)noexcept;constexpryear_month_dayoperator/(constmonth_day&md,constyear&y)noexcept;constexpryear_month_dayoperator/(constmonth_day&md,inty)noexcept;constexpryear_month_day_lastoperator/(constyear_month&ym,last_spec)noexcept;constexpryear_month_day_lastoperator/(constyear&y,constmonth_day_last&mdl)noexcept;constexpryear_month_day_lastoperator/(inty,constmonth_day_last&mdl)noexcept;constexpryear_month_day_lastoperator/(constmonth_day_last&mdl,constyear&y)noexcept;constexpryear_month_day_lastoperator/(constmonth_day_last&mdl,inty)noexcept;constexpryear_month_weekdayoperator/(constyear_month&ym,constweekday_indexed&wdi)noexcept;constexpryear_month_weekdayoperator/(constyear&y,constmonth_weekday&mwd)noexcept;constexpryear_month_weekdayoperator/(inty,constmonth_weekday&mwd)noexcept;constexpryear_month_weekdayoperator/(constmonth_weekday&mwd,constyear&y)noexcept;constexpryear_month_weekdayoperator/(constmonth_weekday&mwd,inty)noexcept;constexpryear_month_weekday_lastoperator/(constyear_month&ym,constweekday_last&wdl)noexcept;constexpryear_month_weekday_lastoperator/(constyear&y,constmonth_weekday_last&mwdl)noexcept;constexpryear_month_weekday_lastoperator/(inty,constmonth_weekday_last&mwdl)noexcept;constexpryear_month_weekday_lastoperator/(constmonth_weekday_last&mwdl,constyear&y)noexcept;constexpryear_month_weekday_lastoperator/(constmonth_weekday_last&mwdl,inty)noexcept;// class template hh_mm_sstemplate<classDuration>classhh_mm_ss;template<classCharT,classTraits,classDuration>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,consthh_mm_ss<Duration>&hms);// 12/24 hour functionsconstexprboolis_am(consthours&h)noexcept;constexprboolis_pm(consthours&h)noexcept;constexprhoursmake12(consthours&h)noexcept;constexprhoursmake24(consthours&h,boolis_pm)noexcept;// time zone databasestructtzdb;classtzdb_list;// time zone database accessconsttzdb&get_tzdb();tzdb_list&get_tzdb_list();consttime_zone*locate_zone(string_viewtz_name);consttime_zone*current_zone();// remote time zone database supportconsttzdb&reload_tzdb();stringremote_version();// exception classesclassnonexistent_local_time;classambiguous_local_time;// information classesstructsys_info;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constsys_info&si);structlocal_info;template<classCharT,classTraits>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constlocal_info&li);// class time_zoneenumclasschoose{earliest,latest};classtime_zone;booloperator==(consttime_zone&x,consttime_zone&y)noexcept;strong_orderingoperator<=>(consttime_zone&x,consttime_zone&y)noexcept;// class template zoned_traitstemplate<classT>structzoned_traits;// class template zoned_timetemplate<classDuration,classTimeZonePtr=consttime_zone*>classzoned_time;usingzoned_seconds=zoned_time<seconds>;template<classDuration1,classDuration2,classTimeZonePtr>booloperator==(constzoned_time<Duration1,TimeZonePtr>&x,constzoned_time<Duration2,TimeZonePtr>&y);template<classCharT,classTraits,classDuration,classTimeZonePtr>basic_ostream<CharT,Traits>&operator<<(basic_ostream<CharT,Traits>&os,constzoned_time<Duration,TimeZonePtr>&t);// leap second supportclassleap_second;booloperator==(constleap_second&x,constleap_second&y);strong_orderingoperator<=>(constleap_second&x,constleap_second&y);template<classDuration>constexprbooloperator==(constleap_second&x,constsys_time<Duration>&y);template<classDuration>constexprbooloperator<(constleap_second&x,constsys_time<Duration>&y);template<classDuration>constexprbooloperator<(constsys_time<Duration>&x,constleap_second&y);template<classDuration>constexprbooloperator>(constleap_second&x,constsys_time<Duration>&y);template<classDuration>constexprbooloperator>(constsys_time<Duration>&x,constleap_second&y);template<classDuration>constexprbooloperator<=(constleap_second&x,constsys_time<Duration>&y);template<classDuration>constexprbooloperator<=(constsys_time<Duration>&x,constleap_second&y);template<classDuration>constexprbooloperator>=(constleap_second&x,constsys_time<Duration>&y);template<classDuration>constexprbooloperator>=(constsys_time<Duration>&x,constleap_second&y);template<classDuration>requiresthree_way_comparable_with<sys_seconds,sys_time<Duration>>constexprautooperator<=>(constleap_second&x,constsys_time<Duration>&y);// class time_zone_linkclasstime_zone_link;booloperator==(consttime_zone_link&x,consttime_zone_link&y);strong_orderingoperator<=>(consttime_zone_link&x,consttime_zone_link&y);// formattingtemplate<classDuration>struct/*local-time-format-t*/;// exposition onlytemplate<classDuration>/*local-time-format-t*/<Duration>local_time_format(local_time<Duration>time,conststring*abbrev=nullptr,constseconds*offset_sec=nullptr);}template<classRep,classPeriod,classCharT>structformatter<chrono::duration<Rep,Period>,CharT>;template<classDuration,classCharT>structformatter<chrono::sys_time<Duration>,CharT>;template<classDuration,classCharT>structformatter<chrono::utc_time<Duration>,CharT>;template<classDuration,classCharT>structformatter<chrono::tai_time<Duration>,CharT>;template<classDuration,classCharT>structformatter<chrono::gps_time<Duration>,CharT>;template<classDuration,classCharT>structformatter<chrono::file_time<Duration>,CharT>;template<classDuration,classCharT>structformatter<chrono::local_time<Duration>,CharT>;template<classDuration,classCharT>structformatter<chrono::/*local-time-format-t*/<Duration>,CharT>;template<classCharT>structformatter<chrono::day,CharT>;template<classCharT>structformatter<chrono::month,CharT>;template<classCharT>structformatter<chrono::year,CharT>;template<classCharT>structformatter<chrono::weekday,CharT>;template<classCharT>structformatter<chrono::weekday_indexed,CharT>;template<classCharT>structformatter<chrono::weekday_last,CharT>;template<classCharT>structformatter<chrono::month_day,CharT>;template<classCharT>structformatter<chrono::month_day_last,CharT>;template<classCharT>structformatter<chrono::month_weekday,CharT>;template<classCharT>structformatter<chrono::month_weekday_last,CharT>;template<classCharT>structformatter<chrono::year_month,CharT>;template<classCharT>structformatter<chrono::year_month_day,CharT>;template<classCharT>structformatter<chrono::year_month_day_last,CharT>;template<classCharT>structformatter<chrono::year_month_weekday,CharT>;template<classCharT>structformatter<chrono::year_month_weekday_last,CharT>;template<classRep,classPeriod,classCharT>structformatter<chrono::hh_mm_ss<duration<Rep,Period>>,CharT>;template<classCharT>structformatter<chrono::sys_info,CharT>;template<classCharT>structformatter<chrono::local_info,CharT>;template<classDuration,classTimeZonePtr,classCharT>structformatter<chrono::zoned_time<Duration,TimeZonePtr>,CharT>;namespacechrono{// parsingtemplate<classCharT,classParsable>/* unspecified */parse(constCharT*fmt,Parsable&tp);template<classCharT,classTraits,classAlloc,classParsable>/* unspecified */parse(constbasic_string<CharT,Traits,Alloc>&format,Parsable&tp);template<classCharT,classtraits,classAlloc,classParsable>/* unspecified */parse(constCharT*fmt,Parsable&tp,basic_string<CharT,traits,Alloc>&abbrev);template<classCharT,classTraits,classAlloc,classParsable>/* unspecified */parse(constbasic_string<CharT,Traits,Alloc>&format,Parsable&tp,basic_string<CharT,Traits,Alloc>&abbrev);template<classCharT,classParsable>/* unspecified */parse(constCharT*fmt,Parsable&tp,minutes&offset);template<classCharT,classTraits,classAlloc,classParsable>/* unspecified */parse(constbasic_string<CharT,Traits,Alloc>&format,Parsable&tp,minutes&offset);template<classCharT,classtraits,classAlloc,classParsable>/* unspecified */parse(constCharT*fmt,Parsable&tp,basic_string<CharT,traits,Alloc>&abbrev,minutes&offset);template<classCharT,classTraits,classAlloc,classParsable>/* unspecified */parse(constbasic_string<CharT,Traits,Alloc>&format,Parsable&tp,basic_string<CharT,Traits,Alloc>&abbrev,minutes&offset);// calendrical constantsinlineconstexprlast_speclast{};inlineconstexprweekdaySunday{0};inlineconstexprweekdayMonday{1};inlineconstexprweekdayTuesday{2};inlineconstexprweekdayWednesday{3};inlineconstexprweekdayThursday{4};inlineconstexprweekdayFriday{5};inlineconstexprweekdaySaturday{6};inlineconstexprmonthJanuary{1};inlineconstexprmonthFebruary{2};inlineconstexprmonthMarch{3};inlineconstexprmonthApril{4};inlineconstexprmonthMay{5};inlineconstexprmonthJune{6};inlineconstexprmonthJuly{7};inlineconstexprmonthAugust{8};inlineconstexprmonthSeptember{9};inlineconstexprmonthOctober{10};inlineconstexprmonthNovember{11};inlineconstexprmonthDecember{12};}inlinenamespaceliterals{inlinenamespacechrono_literals{// suffixes for duration literalsconstexprchrono::hoursoperator""h(unsignedlonglong);constexprchrono::duration</* unspecified */,ratio<3600,1>>operator""h(longdouble);constexprchrono::minutesoperator""min(unsignedlonglong);constexprchrono::duration</* unspecified */,ratio<60,1>>operator""min(longdouble);constexprchrono::secondsoperator""s(unsignedlonglong);constexprchrono::duration</* unspecified */>operator""s(longdouble);constexprchrono::millisecondsoperator""ms(unsignedlonglong);constexprchrono::duration</* unspecified */,milli>operator""ms(longdouble);constexprchrono::microsecondsoperator""us(unsignedlonglong);constexprchrono::duration</* unspecified */,micro>operator""us(longdouble);constexprchrono::nanosecondsoperator""ns(unsignedlonglong);constexprchrono::duration</* unspecified */,nano>operator""ns(longdouble);// non-member functionsconstexprchrono::dayoperator""d(unsignedlonglongd)noexcept;// non-member functionsconstexprchrono::yearoperator""y(unsignedlonglongy)noexcept;}}namespacechrono{usingnamespaceliterals::chrono_literals;}// hash supporttemplate<classT>structhash;template<classRep,classPeriod>structhash<chrono::duration<Rep,Period>>;template<classClock,classDuration>structhash<chrono::time_point<Clock,Duration>>;template<>structhash<chrono::day>;template<>structhash<chrono::month>;template<>structhash<chrono::year>;template<>structhash<chrono::weekday>;template<>structhash<chrono::weekday_indexed>;template<>structhash<chrono::weekday_last>;template<>structhash<chrono::month_day>;template<>structhash<chrono::month_day_last>;template<>structhash<chrono::month_weekday>;template<>structhash<chrono::month_weekday_last>;template<>structhash<chrono::year_month>;template<>structhash<chrono::year_month_day>;template<>structhash<chrono::year_month_day_last>;template<>structhash<chrono::year_month_weekday>;template<>structhash<chrono::year_month_weekday_last>;template<classDuration,classTimeZonePtr>structhash<chrono::zoned_time<Duration,TimeZonePtr>>;template<>structhash<chrono::leap_second>;}namespacestd::chrono{template<classRep,classPeriod=ratio<1>>classduration{public:usingrep=Rep;usingperiod=typenamePeriod::type;private:reprep_;// exposition onlypublic:// construct/copy/destroyconstexprduration()=default;template<classRep2>constexprexplicitduration(constRep2&r);template<classRep2,classPeriod2>constexprduration(constduration<Rep2,Period2>&d);~duration()=default;duration(constduration&)=default;duration&operator=(constduration&)=default;// observerconstexprrepcount()const;// arithmeticconstexprcommon_type_t<duration>operator+()const;constexprcommon_type_t<duration>operator-()const;constexprduration&operator++();constexprdurationoperator++(int);constexprduration&operator--();constexprdurationoperator--(int);constexprduration&operator+=(constduration&d);constexprduration&operator-=(constduration&d);constexprduration&operator*=(constrep&rhs);constexprduration&operator/=(constrep&rhs);constexprduration&operator%=(constrep&rhs);constexprduration&operator%=(constduration&rhs);// special valuesstaticconstexprdurationzero()noexcept;staticconstexprdurationmin()noexcept;staticconstexprdurationmax()noexcept;};}namespacestd::chrono{template<classClock,classDuration=typenameClock::duration>classtime_point{public:usingclock=Clock;usingduration=Duration;usingrep=typenameduration::rep;usingperiod=typenameduration::period;private:durationd_;// exposition onlypublic:// constructconstexprtime_point();// has value epochconstexprexplicittime_point(constduration&d);// same as time_point() + dtemplate<classDuration2>constexprtime_point(consttime_point<clock,Duration2>&t);// observerconstexprdurationtime_since_epoch()const;// arithmeticconstexprtime_point&operator++();constexprtime_pointoperator++(int);constexprtime_point&operator--();constexprtime_pointoperator--(int);constexprtime_point&operator+=(constduration&d);constexprtime_point&operator-=(constduration&d);// special valuesstaticconstexprtime_pointmin()noexcept;staticconstexprtime_pointmax()noexcept;};}namespacestd{template<classRep1,classPeriod1,classRep2,classPeriod2>structcommon_type<chrono::duration<Rep1,Period1>,chrono::duration<Rep2,Period2>>{usingtype=chrono::duration<common_type_t<Rep1,Rep2>,/* see description */>;};}namespacestd{template<classClock,classDuration1,classDuration2>structcommon_type<chrono::time_point<Clock,Duration1>,chrono::time_point<Clock,Duration2>>{usingtype=chrono::time_point<Clock,common_type_t<Duration1,Duration2>>;};}template<classRep>structtreat_as_floating_point:is_floating_point<Rep>{};namespacestd::chrono{template<classRep>structduration_values{public:staticconstexprRepzero()noexcept;staticconstexprRepmin()noexcept;staticconstexprRepmax()noexcept;};}namespacestd::chrono{classsystem_clock{public:usingrep=/* see description */;usingperiod=ratio</* unspecified */,/* unspecified */>;usingduration=chrono::duration<rep,period>;usingtime_point=chrono::time_point<system_clock>;staticconstexprboolis_steady=/* unspecified */;statictime_pointnow()noexcept;// mapping to/from C type time_tstatictime_tto_time_t(consttime_point&t)noexcept;statictime_pointfrom_time_t(time_tt)noexcept;};}namespacestd::chrono{classutc_clock{public:usingrep=/* a signed arithmetic type */;usingperiod=ratio</* unspecified */,/* unspecified */>;usingduration=chrono::duration<rep,period>;usingtime_point=chrono::time_point<utc_clock>;staticconstexprboolis_steady=/* unspecified */;statictime_pointnow();template<classDuration>staticsys_time<common_type_t<Duration,seconds>>to_sys(constutc_time<Duration>&t);template<classDuration>staticutc_time<common_type_t<Duration,seconds>>from_sys(constsys_time<Duration>&t);};}namespacestd::chrono{classtai_clock{public:usingrep=/* a signed arithmetic type */;usingperiod=ratio</* unspecified */,/* unspecified */>;usingduration=chrono::duration<rep,period>;usingtime_point=chrono::time_point<tai_clock>;staticconstexprboolis_steady=/* unspecified */;statictime_pointnow();template<classDuration>staticsys_time<common_type_t<Duration,seconds>>to_sys(consttai_time<Duration>&t);template<classDuration>statictai_time<common_type_t<Duration,seconds>>from_sys(constsys_time<Duration>&t);};}namespacestd::chrono{classgps_clock{public:usingrep=/* a signed arithmetic type */;usingperiod=ratio</* unspecified */,/* unspecified */>;usingduration=chrono::duration<rep,period>;usingtime_point=chrono::time_point<gps_clock>;staticconstexprboolis_steady=/* unspecified */;statictime_pointnow();template<classDuration>staticsys_time<common_type_t<Duration,seconds>>to_sys(constgps_time<Duration>&t);template<classDuration>staticgps_time<common_type_t<Duration,seconds>>from_sys(constsys_time<Duration>&t);};}namespacestd::chrono{classsteady_clock{public:usingrep=/* unspecified */;usingperiod=ratio</* unspecified */,/* unspecified */>;usingduration=chrono::duration<rep,period>;usingtime_point=chrono::time_point</* unspecified */,duration>;staticconstexprboolis_steady=true;statictime_pointnow()noexcept;};}namespacestd::chrono{classhigh_resolution_clock{public:usingrep=/* unspecified */;usingperiod=ratio</* unspecified */,/* unspecified */>;usingduration=chrono::duration<rep,period>;usingtime_point=chrono::time_point</* unspecified */,duration>;staticconstexprboolis_steady=/* unspecified */;statictime_pointnow()noexcept;};}namespacestd::chrono{template<classDestClock,classSourceClock>structclock_time_conversion{};template<classClock>structclock_time_conversion<Clock,Clock>{template<classDuration>time_point<Clock,Duration>operator()(consttime_point<Clock,Duration>&t)const;};template<>structclock_time_conversion<system_clock,system_clock>{template<classDuration>sys_time<Duration>operator()(constsys_time<Duration>&t)const;};template<>structclock_time_conversion<utc_clock,utc_clock>{template<classDuration>utc_time<Duration>operator()(constutc_time<Duration>&t)const;};template<>structclock_time_conversion<utc_clock,system_clock>{template<classDuration>utc_time<common_type_t<Duration,seconds>>operator()(constsys_time<Duration>&t)const;};template<>structclock_time_conversion<system_clock,utc_clock>{template<classDuration>sys_time<common_type_t<Duration,seconds>>operator()(constutc_time<Duration>&t)const;};template<classSourceClock>structclock_time_conversion<system_clock,SourceClock>{template<classDuration>autooperator()(consttime_point<SourceClock,Duration>&t)const->decltype(SourceClock::to_sys(t));};template<classDestClock>structclock_time_conversion<DestClock,system_clock>{template<classDuration>autooperator()(constsys_time<Duration>&t)const->decltype(DestClock::from_sys(t));};template<classSourceClock>structclock_time_conversion<utc_clock,SourceClock>{template<classDuration>autooperator()(consttime_point<SourceClock,Duration>&t)const->decltype(SourceClock::to_utc(t));};template<classDestClock>structclock_time_conversion<DestClock,utc_clock>{template<classDuration>autooperator()(constutc_time<Duration>&t)const->decltype(DestClock::from_utc(t));};}namespacestd::chrono{structlast_spec{explicitlast_spec()=default;};}namespacestd::chrono{classday{unsignedchard_;// exposition onlypublic:day()=default;constexprexplicitday(unsignedd)noexcept;constexprday&operator++()noexcept;constexprdayoperator++(int)noexcept;constexprday&operator--()noexcept;constexprdayoperator--(int)noexcept;constexprday&operator+=(constdays&d)noexcept;constexprday&operator-=(constdays&d)noexcept;constexprexplicitoperatorunsigned()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classmonth{unsignedcharm_;// exposition onlypublic:month()=default;constexprexplicitmonth(unsignedm)noexcept;constexprmonth&operator++()noexcept;constexprmonthoperator++(int)noexcept;constexprmonth&operator--()noexcept;constexprmonthoperator--(int)noexcept;constexprmonth&operator+=(constmonths&m)noexcept;constexprmonth&operator-=(constmonths&m)noexcept;constexprexplicitoperatorunsigned()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classyear{shorty_;// exposition onlypublic:year()=default;constexprexplicityear(inty)noexcept;constexpryear&operator++()noexcept;constexpryearoperator++(int)noexcept;constexpryear&operator--()noexcept;constexpryearoperator--(int)noexcept;constexpryear&operator+=(constyears&y)noexcept;constexpryear&operator-=(constyears&y)noexcept;constexpryearoperator+()constnoexcept;constexpryearoperator-()constnoexcept;constexprboolis_leap()constnoexcept;constexprexplicitoperatorint()constnoexcept;constexprboolok()constnoexcept;staticconstexpryearmin()noexcept;staticconstexpryearmax()noexcept;};}namespacestd::chrono{classweekday{unsignedcharwd_;// exposition onlypublic:weekday()=default;constexprexplicitweekday(unsignedwd)noexcept;constexprweekday(constsys_days&dp)noexcept;constexprexplicitweekday(constlocal_days&dp)noexcept;constexprweekday&operator++()noexcept;constexprweekdayoperator++(int)noexcept;constexprweekday&operator--()noexcept;constexprweekdayoperator--(int)noexcept;constexprweekday&operator+=(constdays&d)noexcept;constexprweekday&operator-=(constdays&d)noexcept;constexprunsignedc_encoding()constnoexcept;constexprunsignediso_encoding()constnoexcept;constexprboolok()constnoexcept;constexprweekday_indexedoperator[](unsignedindex)constnoexcept;constexprweekday_lastoperator[](last_spec)constnoexcept;};}namespacestd::chrono{classweekday_indexed{chrono::weekdaywd_;// exposition onlyunsignedcharindex_;// exposition onlypublic:weekday_indexed()=default;constexprweekday_indexed(constchrono::weekday&wd,unsignedindex)noexcept;constexprchrono::weekdayweekday()constnoexcept;constexprunsignedindex()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classweekday_last{chrono::weekdaywd_;// exposition onlypublic:constexprexplicitweekday_last(constchrono::weekday&wd)noexcept;constexprchrono::weekdayweekday()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classmonth_day{chrono::monthm_;// exposition onlychrono::dayd_;// exposition onlypublic:month_day()=default;constexprmonth_day(constchrono::month&m,constchrono::day&d)noexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::dayday()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classmonth_day_last{chrono::monthm_;// exposition onlypublic:constexprexplicitmonth_day_last(constchrono::month&m)noexcept;constexprchrono::monthmonth()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classmonth_weekday{chrono::monthm_;// exposition onlychrono::weekday_indexedwdi_;// exposition onlypublic:constexprmonth_weekday(constchrono::month&m,constchrono::weekday_indexed&wdi)noexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::weekday_indexedweekday_indexed()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classmonth_weekday_last{chrono::monthm_;// exposition onlychrono::weekday_lastwdl_;// exposition onlypublic:constexprmonth_weekday_last(constchrono::month&m,constchrono::weekday_last&wdl)noexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::weekday_lastweekday_last()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classyear_month{chrono::yeary_;// exposition onlychrono::monthm_;// exposition onlypublic:year_month()=default;constexpryear_month(constchrono::year&y,constchrono::month&m)noexcept;constexprchrono::yearyear()constnoexcept;constexprchrono::monthmonth()constnoexcept;constexpryear_month&operator+=(constmonths&dm)noexcept;constexpryear_month&operator-=(constmonths&dm)noexcept;constexpryear_month&operator+=(constyears&dy)noexcept;constexpryear_month&operator-=(constyears&dy)noexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classyear_month_day{chrono::yeary_;// exposition onlychrono::monthm_;// exposition onlychrono::dayd_;// exposition onlypublic:year_month_day()=default;constexpryear_month_day(constchrono::year&y,constchrono::month&m,constchrono::day&d)noexcept;constexpryear_month_day(constyear_month_day_last&ymdl)noexcept;constexpryear_month_day(constsys_days&dp)noexcept;constexprexplicityear_month_day(constlocal_days&dp)noexcept;constexpryear_month_day&operator+=(constmonths&m)noexcept;constexpryear_month_day&operator-=(constmonths&m)noexcept;constexpryear_month_day&operator+=(constyears&y)noexcept;constexpryear_month_day&operator-=(constyears&y)noexcept;constexprchrono::yearyear()constnoexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::dayday()constnoexcept;constexproperatorsys_days()constnoexcept;constexprexplicitoperatorlocal_days()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classyear_month_day_last{chrono::yeary_;// exposition onlychrono::month_day_lastmdl_;// exposition onlypublic:constexpryear_month_day_last(constchrono::year&y,constchrono::month_day_last&mdl)noexcept;constexpryear_month_day_last&operator+=(constmonths&m)noexcept;constexpryear_month_day_last&operator-=(constmonths&m)noexcept;constexpryear_month_day_last&operator+=(constyears&y)noexcept;constexpryear_month_day_last&operator-=(constyears&y)noexcept;constexprchrono::yearyear()constnoexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::month_day_lastmonth_day_last()constnoexcept;constexprchrono::dayday()constnoexcept;constexproperatorsys_days()constnoexcept;constexprexplicitoperatorlocal_days()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classyear_month_weekday{chrono::yeary_;// exposition onlychrono::monthm_;// exposition onlychrono::weekday_indexedwdi_;// exposition onlypublic:year_month_weekday()=default;constexpryear_month_weekday(constchrono::year&y,constchrono::month&m,constchrono::weekday_indexed&wdi)noexcept;constexpryear_month_weekday(constsys_days&dp)noexcept;constexprexplicityear_month_weekday(constlocal_days&dp)noexcept;constexpryear_month_weekday&operator+=(constmonths&m)noexcept;constexpryear_month_weekday&operator-=(constmonths&m)noexcept;constexpryear_month_weekday&operator+=(constyears&y)noexcept;constexpryear_month_weekday&operator-=(constyears&y)noexcept;constexprchrono::yearyear()constnoexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::weekdayweekday()constnoexcept;constexprunsignedindex()constnoexcept;constexprchrono::weekday_indexedweekday_indexed()constnoexcept;constexproperatorsys_days()constnoexcept;constexprexplicitoperatorlocal_days()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{classyear_month_weekday_last{chrono::yeary_;// exposition onlychrono::monthm_;// exposition onlychrono::weekday_lastwdl_;// exposition onlypublic:constexpryear_month_weekday_last(constchrono::year&y,constchrono::month&m,constchrono::weekday_last&wdl)noexcept;constexpryear_month_weekday_last&operator+=(constmonths&m)noexcept;constexpryear_month_weekday_last&operator-=(constmonths&m)noexcept;constexpryear_month_weekday_last&operator+=(constyears&y)noexcept;constexpryear_month_weekday_last&operator-=(constyears&y)noexcept;constexprchrono::yearyear()constnoexcept;constexprchrono::monthmonth()constnoexcept;constexprchrono::weekdayweekday()constnoexcept;constexprchrono::weekday_lastweekday_last()constnoexcept;constexproperatorsys_days()constnoexcept;constexprexplicitoperatorlocal_days()constnoexcept;constexprboolok()constnoexcept;};}namespacestd::chrono{template<classDuration>classhh_mm_ss{public:staticconstexprunsignedfractional_width=/* see description */;usingprecision=/* see description */;constexprhh_mm_ss()noexcept:hh_mm_ss{Duration::zero()}{}constexprexplicithh_mm_ss(Durationd);constexprboolis_negative()constnoexcept;constexprchrono::hourshours()constnoexcept;constexprchrono::minutesminutes()constnoexcept;constexprchrono::secondsseconds()constnoexcept;constexprprecisionsubseconds()constnoexcept;constexprexplicitoperatorprecision()constnoexcept;constexprprecisionto_duration()constnoexcept;private:boolis_neg;// exposition onlychrono::hoursh;// exposition onlychrono::minutesm;// exposition onlychrono::secondss;// exposition onlyprecisionss;// exposition only};}namespacestd::chrono{structtzdb{stringversion;vector<time_zone>zones;vector<time_zone_link>links;vector<leap_second>leap_seconds;consttime_zone*locate_zone(string_viewtz_name)const;consttime_zone*current_zone()const;};}namespacestd::chrono{classtzdb_list{public:tzdb_list(consttzdb_list&)=delete;tzdb_list&operator=(consttzdb_list&)=delete;// unspecified additional constructorsclassconst_iterator;consttzdb&front()constnoexcept;const_iteratorerase_after(const_iteratorp);const_iteratorbegin()constnoexcept;const_iteratorend()constnoexcept;const_iteratorcbegin()constnoexcept;const_iteratorcend()constnoexcept;};}namespacestd::chrono{classnonexistent_local_time:publicruntime_error{public:template<classDuration>nonexistent_local_time(constlocal_time<Duration>&tp,constlocal_info&i);};}namespacestd::chrono{classambiguous_local_time:publicruntime_error{public:template<classDuration>ambiguous_local_time(constlocal_time<Duration>&tp,constlocal_info&i);};}namespacestd::chrono{structsys_info{sys_secondsbegin;sys_secondsend;secondsoffset;minutessave;stringabbrev;};}namespacestd::chrono{structlocal_info{staticconstexprintunique=0;staticconstexprintnonexistent=1;staticconstexprintambiguous=2;intresult;sys_infofirst;sys_infosecond;};}namespacestd::chrono{classtime_zone{public:time_zone(time_zone&&)=default;time_zone&operator=(time_zone&&)=default;// unspecified additional constructorsstring_viewname()constnoexcept;template<classDuration>sys_infoget_info(constsys_time<Duration>&st)const;template<classDuration>local_infoget_info(constlocal_time<Duration>&tp)const;template<classDuration>sys_time<common_type_t<Duration,seconds>>to_sys(constlocal_time<Duration>&tp)const;template<classDuration>sys_time<common_type_t<Duration,seconds>>to_sys(constlocal_time<Duration>&tp,choosez)const;template<classDuration>local_time<common_type_t<Duration,seconds>>to_local(constsys_time<Duration>&tp)const;};}namespacestd::chrono{template<classT>structzoned_traits{};template<>structzoned_traits<consttime_zone*>{staticconsttime_zone*default_zone();staticconsttime_zone*locate_zone(string_viewname);};}namespacestd::chrono{template<classDuration,classTimeZonePtr=consttime_zone*>classzoned_time{public:usingduration=common_type_t<Duration,seconds>;private:TimeZonePtrzone_;// exposition onlysys_time<duration>tp_;// exposition onlyusingtraits=zoned_traits<TimeZonePtr>;// exposition onlypublic:zoned_time();zoned_time(constzoned_time&)=default;zoned_time&operator=(constzoned_time&)=default;zoned_time(constsys_time<Duration>&st);explicitzoned_time(TimeZonePtrz);explicitzoned_time(string_viewname);template<classDuration2>zoned_time(constzoned_time<Duration2,TimeZonePtr>&zt);zoned_time(TimeZonePtrz,constsys_time<Duration>&st);zoned_time(string_viewname,constsys_time<Duration>&st);zoned_time(TimeZonePtrz,constlocal_time<Duration>&tp);zoned_time(string_viewname,constlocal_time<Duration>&tp);zoned_time(TimeZonePtrz,constlocal_time<Duration>&tp,choosec);zoned_time(string_viewname,constlocal_time<Duration>&tp,choosec);template<classDuration2,classTimeZonePtr2>zoned_time(TimeZonePtrz,constzoned_time<Duration2,TimeZonePtr2>&zt);template<classDuration2,classTimeZonePtr2>zoned_time(TimeZonePtrz,constzoned_time<Duration2,TimeZonePtr2>&zt,choose);template<classDuration2,classTimeZonePtr2>zoned_time(string_viewname,constzoned_time<Duration2,TimeZonePtr2>&zt);template<classDuration2,classTimeZonePtr2>zoned_time(string_viewname,constzoned_time<Duration2,TimeZonePtr2>&zt,choose);zoned_time&operator=(constsys_time<Duration>&st);zoned_time&operator=(constlocal_time<Duration>&ut);operatorsys_time<duration>()const;explicitoperatorlocal_time<duration>()const;TimeZonePtrget_time_zone()const;local_time<duration>get_local_time()const;sys_time<duration>get_sys_time()const;sys_infoget_info()const;};zoned_time()->zoned_time<seconds>;template<classDuration>zoned_time(sys_time<Duration>)->zoned_time<common_type_t<Duration,seconds>>;template<classTimeZonePtrOrName>using/*time-zone-representation*/=// exposition onlyconditional_t<is_convertible_v<TimeZonePtrOrName,string_view>,consttime_zone*,remove_cvref_t<TimeZonePtrOrName>>;template<classTimeZonePtrOrName>zoned_time(TimeZonePtrOrName&&)->zoned_time<seconds,/*time-zone-representation*/<TimeZonePtrOrName>>;template<classTimeZonePtrOrName,classDuration>zoned_time(TimeZonePtrOrName&&,sys_time<Duration>)->zoned_time<common_type_t<Duration,seconds>,/*time-zone-representation*/<TimeZonePtrOrName>>;template<classTimeZonePtrOrName,classDuration>zoned_time(TimeZonePtrOrName&&,local_time<Duration>,choose=choose::earliest)->zoned_time<common_type_t<Duration,seconds>,/*time-zone-representation*/<TimeZonePtrOrName>>;template<classDuration,classTimeZonePtrOrName,classTimeZonePtr2>zoned_time(TimeZonePtrOrName&&,zoned_time<Duration,TimeZonePtr2>,choose=choose::earliest)->zoned_time<common_type_t<Duration,seconds>,/*time-zone-representation*/<TimeZonePtrOrName>>;}namespacestd::chrono{classleap_second{public:leap_second(constleap_second&)=default;leap_second&operator=(constleap_second&)=default;// unspecified additional constructorsconstexprsys_secondsdate()constnoexcept;constexprsecondsvalue()constnoexcept;};}namespacestd::chrono{classtime_zone_link{public:time_zone_link(time_zone_link&&)=default;time_zone_link&operator=(time_zone_link&&)=default;// unspecified additional constructorsstring_viewname()constnoexcept;string_viewtarget()constnoexcept;};}namespacestd::chrono{template<classDuration>struct/*local-time-format-t*/{// exposition onlylocal_time<Duration>time;// exposition onlyconststring*abbrev;// exposition onlyconstseconds*offset_sec;// exposition only};}