バカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカバカ