庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚庚