Labels

Blogumulus by Fajar Nugroho and Amanda Fazani |||||||||||||||||||||||||||||||||||||||||||||||||||||| Programming, Pemrograman, Algoritma, Ruby, Bahasa, Python, RGSS, RGSS2, Software, Rekayasa, Perangkat, Lunak, SMK, Negeri 7, Pekanbaru, IT, Jaringan, Komputer, Web, PHP, Object Oriented, Pascal, Visual, Basic, Database, Maintenance, backup, berbagi, bip, domain, type, fajar, nugroho |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Rank

Technology blogs

Followers

Kamis, 17 Maret 2011

Data Base Manajemen System

Pengertian Sistem Manajemen Basis Data

Sistem Manajemen Basis-Data (Data Base Management System / DBMS) adalah perangkat lunak sistem yang memungkinkan para pemakai membuat, memelihara, mengontrol, dan meng-akses basis data dengan cara praktis dan efisien. DBMS dapat digunakan untuk meng-akomodasikan berbagai macam pemakai yang memiliki kebutuhan akses yang berbeda-beda. DBMS pada umumnya menyediakan fasilitas atau fitur-fitur yang memungkinkan data dapat diakses dengan mudah, aman, dan cepat. Beberapa fitur yang secara umum tersedia adalah:

* Keamanan : DBMS menyediakan sistem pengamanan data sehingga tidak mudah diakses oleh orang yang tidak memiliki hak akses.

* Independensi : DBMS menjamin independensi antara data dan program, data tidak bergantung pada program yang meng-akses-nya, karena struktur data-nya dirancang berdasarkan kebutuhan informasi, bukan berdasarkan struktur program. Sebaliknya program juga tidak bergantung pada data, sehingga walaupun struktur data diubah, program tidak perlu berubah.

* Konkruensi / data sharing : data dapat diakses secara bersamaan oleh beberapa pengguna karena manajemen data dilaksanakan oleh DBMS.

* Integritas : DBMS mengelola file-file data serta relasi-nya dengan tujuan agar data selalu dalam keadaan valid dan konsisten



* Pemulihan : DBMS menyediakan fasilitas untuk memulihkan kembali file-file data ke keadaan semula sebelum terjadi-nya kesalahan (error) atau gangguan baik kesalahan perangkat keras maupun kegagalan perangkat lunak.

* Kamus / katalog sistem : DBMS menyediakan fasilitas kamus data atau katalog sistem yang menjelaskan deskripsi dari field-field data yang terkandung dalam basisdata.

* Perangkat Produktivitas : DBMS menyediakan sejumlah perangkat produktivitas sehingga memudahkan para pengguna untuk menarik manfaat dari database, misalnya report generator (pembangkit laporan) dan query generator (pembangkit query / pencarian informasi).


Sistem Manajemen Basis-Data (DBMS) memiliki berbagai keunggulan dibandingkan dengan pengelolaan data tanpa DBMS, walaupun tidak terlepas dari beberapa kelemahan.

Keunggulan DBMS antara lain sbb:

* Mengurangi duplikasi data atau data redundancy
* Menjaga konsistensi dan integritas data
* Meningkatkan keamanan data
* Meningkatkan effisiensi dan effektivitas penggunaan data
* Meningkatkan produktivitas para pengguna data
* Memudahkan pengguna dalam menggali informasi dari kumpulan data
* Meningkatkan pemeliharaan data melalui independensi data
* Meningkatkan pemakaian bersama dari data
* Meningkatkan layanan backup dan recovery data
* Mengurangi konflik antar pengguna data

Kelemahan DBMS antara lain sbb:

* Memerlukan suatu skill tertentu untuk bisa melakukan administrasi dan manajemen database agar dapat diperoleh struktur dan relasi data yang optimal
* Memerlukan kapasitas penyimpanan baik eksternal (disk) maupun internal (memory) agar DBMS dapat bekerja cepat dan efisien.
* Harga DBMS yang handal biasanya sangat mahal
* Kebutuhan akan sumber daya (resources) biasanya cukup tinggi
* Konversi dari sistem lama ke sistem DBMS terkadang sangat mahal, disamping biaya pengadaan perangkat keras dan perangkat lunak, diperlukan pula biaya pelatihan.
* Apabila DBMS gagal menjalankan misinya maka tingkat kegagalan menjadi lebih tinggi karena banyak pengguna yang bergantung pada sistem ini.

Perlu ditambahkan disini bahwa beberapa DBMS berbasis objek sebenarnya tetap menggunakan file data relasional biasa, dengan kata lain, programnya berbasis objek tetapi datanya masih model relasional biasa. Software seperti ini biasanya disebut sebagai Object Oriented Relational DataBase Management System (OORDBMS), misalnya Visual dBase.

Salah satu tujuan dari DBMS adalah untuk menyediakan sarana antar muka (interface) dalam meng-akses data secara efisien tanpa harus melihat kerumitan atau detail tentang cara data direkam dan dipelihara. DBMS memiliki arsitektur untuk melakukan abstraksi dari data sehingga dapat diperoleh independensi data-program.

Pada tahun 1975, badan standarisasi nasional Amerika ANSI-SPARC (American National Standards Institute – Standards Planning and Requirements Committee) menetapkan tiga level abstraksi dalam database, yaitu:

1. Level Eksternal (external level) atau Level Pandangan (view level)
2. Level Konseptual (conceptual level)
3. Level Internal (internal level) atau Level Fisik (physical level)

Level Eksternal adalah level yang berhubungan langsung dengan pengguna database. Pada level ini pengguna (user) hanya bisa melihat struktur data sesuai dengan keperluannya sehingga setiap user bisa memiliki pandangan (view) yang berbeda dari user lainnya. Pada level ini pula dimungkinkan pandangan user berbeda dengan representasi fisik dari data, misalkan untuk data hari secara fisik data direkam dalam bentuk kode (1, 2, 3, dst) sedang user melihat data dalam bentuk teks nama hari (Ahad, Senin, Selasa, …). Data yang dilihat oleh user seakan-akan berasal dari satu file, secara fisik mungkin diambil dari beberapa file yang berelasi.

Level Konseptual adalah level dari para administrator database, pada level ini didefinisikan hubungan antar data secara logik, sehingga diperlukan struktur data secara lengkap. Para administrator database memahami bagaimana satu view dijabarkan dari beberapa file data, demikian pula pada saat perancangan database mereka dapat saja membagi data menjadi beberapa file agar dapat diakses dan disimpan secara efisien.

Level Internal adalah level dimana data disimpan secara fisik dalam bentuk kode, teks, angka, bit. Pada level ini didefinisikan allokasi ruang penyimpanan data, deskripsi data dalam penyimpanan, kompressi data (agar lebih hemat), dan enkripsi data (agar lebih aman).

Agar independensi data dapat dicapai maka disediakan pemetaan antar lapisan (level), yatiu pemetaan eksternal-konseptual dan pemetaan konseptual-internal. Pada pemetaan eksternal-konseptual, DBMS dapat memetakan field-field data dari user-view ke dalam struktur data yang sesungguhnya. Pada pemetaan konseptual-internal, DBMS dapat menemukan rekaman fisik dari data yang didefinisikan pada struktur logika.


BAHASA DBMS

Implementasi bahasa DBMS bervariasi sesuai dengan variasi perusahaan yang merancangnya, namun pada prinsipnya bahasa ini bisa dikategorikan ke dalam tiga komponen bahasa, yaitu:

1. Data Definition/Decription Language (DDL)
2. Data Manipulation Language (DML)
3. Device Control Media Language (DCML)

DDL adalah komponen bahasa DBMS yang digunakan untuk mendefinisikan struktur data antara lain perintah untuk membuat tabel baru (CREATE) dimana terdefinisi komponen/field data dengan tipe dan panjangnya, mengubah index (INDEX, REINDEX) agar setiap rekord dalam satu file data dapat diakses melalui indeks-nya, mengubah struktur (MODIFY STRUCT) dari file data, dan sebagainya. Komponen bahasa ini banyak digunakan oleh para administrator basisdata pada saat merencanakan atau membangun file-file basisdata.

DML adalah komponen bahasa DBMS yang digunakan untuk memanipulasi data, komponen ini diperlukan oleh para pengguna untuk memanipulasi data, antara lain perintah-perintah untuk melakukan hal-hal berikut ini:

* mengambil data dari basisdata (LIST, DISPLAY)
* menambah data kedalam basisdata (INSERT, APPEND)
* meremajakan data yang ada dalam basisdata (UPDATE)
* menghapus data yang tidak diperlukan (DELETE)
* meng-urutkan data (SORT)
* menghitung frekuensi data (COUNT)
* mencari data (SEEK, FIND)

DML dapat dibedakan atas dua macam, yaitu DML Prosedural dan DML Non-Prosedural. Pada DML Prosedural ketika data akan dimanipulasi maka perintah harus disertai dengan perintah-perintah bagaimana data diakses dari file database.

Perintah DML Prosedural biasanya termuat dalam bahasa pemrograman tingkat tinggi (high level programming language) seperti COBOL, C, C++ dan sebagainya. Pada DML non-Prosedural data dapat dimanipulasi langsung tanpa harus memerintahkan bagaimana data dibaca dari file. Perintah DML non-Prosedural biasanya digunakan dalam bahasa-bahasa DBMS seperti pada dBase, Access, Paradox, FoxPro, SQL, dan sebagainya.

DCML adalah komponen bahasa DBMS yang digunakan untuk mengatur perekaman atau penyimpanan data secara fisik. Komponen bahasa DCML digunakan oleh operator-operator sistem basisdata didalam mengatur file-file data secara fisik. Perintah-perintah yang termuat dalam komponen ini, antara lain perintah perintah: merekam (Write Record, Create Table), menghapus (Drop, Delete Table).

DEFINISI LAIN


Basis data adalah penyimpanan kumpulan informasi secara sistematik dalam sebuah komputer sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sedangkan sistem adalah sebuah tatanan yang terdiri atas sejumlah komponen fungsional yang saling berhubungan dan secara bersama-sama bertujuan untuk memenuhi suatu proses pekerjaan. Sehingga bisa dikatakan bahwa sistem basis data adalah sistem yang terdiri atas kumpulan file-file yang saling berhubungan dan sekumpulan program (DBMS) yang memungkinkan beberapa pemakai dan atau program lain untuk mengakses dan memanipulasi data tersebut.

Komponen Sistem Basis Data


         Komponen-komponen pada sebuah sistem basis data antara lain:
·   Perangkat keras
·   Sistem operasi
·   Basis data
·   DBMS (Database Management System)
·   Pemakai
·   Aplikasi lain




Sistem Basis Data dan Sistem File


Pada sebuah institusi, data merupakan salah satu hal yang sangat penting. Setiap bagian/divisi dari institusi memiliki data sendiri-sendiri. Tapi setiap bagian pun membutuhkan sebagian data dari bagian yang lain. Hal ini yang biasa dikenal sebagai “shared data”. Setiap divisi memiliki aplikasi sendiri-sendiri dalam melakukan manipulasi dan pengambilan data tersebut. Setiap

aplikasi memiliki file-file dalam sistem operasi yang digunakan untuk menyimpan data-data. Seiring dengan berkembangnya institusi, bertambahnya bagian/divisi, bertambah pula data dan aplikasi yang digunakan. Bertambahnya aplikasi, bertambah pula file-file yang dibuat.
Gaya sistem pemrosesan-file tersebut menyebabkan setiap data disimpan dalam bentuk record dalam berbagai macam file, dan diperlukan aplikasi yang berbeda dalam melakukan pengambilan record dari, dan penambahan record ke dalam file. Hal ini berlaku pada masa sebelum adanya Sistem Basis Data (DBMS).
Menyimpan data dalam bentuk file yang berbeda-beda, memiliki kekurangan-kekurangan:
·   Data redundancy dan inconsistency.
Dikarenakan programer yang berbeda membuat file dan aplikasi masing-masing, menyebabkan beragam format dan aplikasi yang dibuat. Bahkan, aplikasi pun dibuat menggunakan bahasa pemrograman yang berbeda-beda. Lebih jauh lagi, data atau informasi yang sama bisa terdapat dalam beberapa file yang berbeda. Ini yang disebut dengan redundancy. Redundancy data ini lama kelamaan akan menyebabkan inconsystency dari data.
·   Kesulitan dalam pengaksesan data.
Dikarenakan setiap aplikasi memiliki file tersendiri untuk penyimpanan dan pengambilan data, maka jika suatu bagian dari institusi membutuhkan data dari bagian lain, akan menemui kesulitan. Hal ini dikarenakan aplikasi yang dimiliki bagian tersebut, tidak dapat membaca file yang terdapat di bagian lain.
·   Isolasi data.
Dikarenakan data tersebar dalam berbagai macam file, dan file tersebut dalam beragam format, pembuatan aplikasi baru akan terasa sulit ketika harus membaca format dari masing-masing file tersebut.
·   Masalah integritas.
Data yang disimpan harus memenuhi hal yang dinamakan dengan consistency constraint. Jika sebuah constraint berubah, maka seluruh aplikasi yang digunakan harus mengakomodasinya. Masalah akan muncul, jika constraint melibatkan beberapa data dari file yang berbeda-beda.
·   Masalah keamanan.
Tidak semua pengguna dari basis data dapat mengakses semua data. Hal ini akan sulit dilakukan jika menggunakan gaya penyimpanan data dalam file.

Abstraksi Data


Tujuan utama dari sistem basis data adalah untuk menyediakan fasilitas untuk view data secara abstrak bagi penggunanya. Namun bagaimana sistem menyimpan dan mengelola data tersebut, hanya diketahui oleh sistem itu sendiri. Abstraksi data merupakan level dalam bagaimana melihat data dalam sebuah sistem basis data. Berikut ini tiga level abstraksi data:

1.     Level fisik
Merupakan level terendah pada abstraksi data yang menunjukkan bagaimana sesungguhnya data disimpan. Pada level ini pemakai melihat data sebagai gabungan dari struktur dan datanya sendiri.
2.     Level lojik
Merupakan level berikutnya pada abstraksi data, menggambarkan data apa yang disimpan pada basis data dan hubungan apa saja yang ada di antara data tersebut.
3.     Level view
Merupakan level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis data. Banyak user dalam sistem basis data tidak akan terlibat dengan semua data atau informasi yang ada atau yang disimpan. Para user umumnya hanya membutuhkan sebagian data atau informasi dalam basis data yang kemunculannya di mata user diatur oleh aplikasi end user.

Database Administrator


Salah satu alasan dari pemanfaatan DBMS adalah untuk mendapatkan kontrol yang terpusat atas data dan program yang mengakses data tersebut. Orang yang memiliki kontrol atas sistem seperti yang telah disebutkan tersebut adalah database administrator (DBA).
Fungsi-fungsi DBA antara lain:
·   Definisi skema
·   Definisi struktur penyimpanan dan metode akses
·   Modifikasi skema dan organisasi fisik
·   Memberikan otorisasi untuk akese data
·   Spesifikasi integritas constraint
Struktur Sistem

Sebuah sistem basis data terbagi ke dalam beberapa modul yang masing-masing mempunyai tanggung jawab dalam membentuk struktur sistem secara keseluruhan. Beberapa fungsi dari sistem basis data mungkin telah diberikan oleh sistem operasi. Tetapi dalam sebagian besar kondisi, sistem operasi hanya menyediakan servis-servis dasar dan sistem basis data harus dibangun di atasnya.



Komponen-komponen fungsional dari sebuah sistem basis data dibagi menjadi dua, yaitu komponen query processor dan komponen storage manager.
Query processor terdiri atas:
·         DML compiler, menerjemahkan perintah DML pada suatu query ke dalam instruksi level rendah yang dimengerti oleh mesin evaluasi query. Dengan kata lain, DML compiler berusaha mengubah suatu permintaan user menjadi bentuk yang ekivalen namun lebih efisien sekaligus juga menentukan sebuah strategi yang tepat untuk mengeksekusi query tersebut.

·         Embedded DML precompiler, mengkonversi perintah DML yang embed pada sebuah program aplikasi ke procedure call yang normal dalam bahasa host. Precompiler ini harus nerinteraksi dengan DML compiler untuk menghasilkjan kode yang sesuai.

·         DDL interpreter, menginterpretasikan perintah DDL dan mencatatnya dalam sekumpulan tabel yang mengandung metadata.

·         Query evaluation engine, mengeksekusi instruksi level rendah yang dihasilkan oleh DML compiler.

Komponen storage manager menyediakan antarmuka antara data level rendah yang tersimpan dalam basis data dan program aplikasi serta query yang diberikan ke sistem. Yang termasuk komponen ini adalah:

·         Manajer otorisasi dan integritas, menguji integritas dari constraint yang ada serta otoritas user untuk mengakses data.
·         Manajer transaksi, meyakinkan basis data tetap pada kondisi konsisten (benar) saat terjadi kegagalan sistem serta meyakinkan bahawa eksekusi dari transaksi yang konkuren (terjadi “bersamaan”) berlangsung tanpa adanya konflik.
·         Manajer file, mengelola alokasi ruang pada disk penyimpanan struktur data yang digunakan untuk mewakili informasi yang disimpan pada disk.
·         Manajer buffer, bertanggung jawab untuk mengambil data dari disk penyimpanan ke dalam memori utama serta menetukan data yang mana yang akan ditempatkan di memory

CREATE TABLE nama_tabel
(  nama_field_1  tipe_data,
   nama_field_2  tipe_data,
   ………,
   [ CONSTRAINT   nama_constraint PRIMARY KEY               
     (nama_field)
   ]
   [ CONSTRAINT   nama_constraint FOREIGN KEY 
    (nama_field) REFERENCE nama_table (nama_field)
    ON DELETE CASCADE
       ]
);

 

 
Keterangan :
nama_field1, nama_field2 adalah nama kolom (field) yang akan ada di dalam tabel.
tipe_data adalah tipe data yang bisa ditampung oleh field.
tipe_constraint adalah batasan yang menentukan suatu field.
Tanda [ ] menyatakan bahwa yang didalamnya boleh ada atau tidak.

Macam – macam tipe constraint yang mungkin adalah :
·   NULL atau NOT NULL
Constraint NOT NULL ini berfungsi untuk menjamin field harus diisi sedangkan constraint NULL memperbolehkan suatu field untuk dikosongi
·   UNIQUE
Constraint ini berfungsi untuk menjamin bahwa nilai pada setiap record di dalam sebuah tabel adalah unik
·   PRIMARY KEY
·   FOREIGN KEY
·   CHECK
Constraint ini berfungsi untuk menjamin bahwa nilai yang akan dimasukkan ke dalam sebuah field sudah sesuai dengan aturan yang dibuat

Contoh     : pembuatan tabel mahasiswa dengan atribut nim bertipe char(9) dan nama bertipe varchar(20) yang tidak boleh kosong.

Sintaks      : CREATE TABLE mahasiswa
                (
                Nim char(9),
                Nama varchar(20) not null,
                CONSTRAINT pk_mhs PRIMARY KEY (Nim)
                );
 
·         Memanipulasi tabel (ALTER TABLE)
Sebuah struktur tabel yang sudah didefinisikan dapat dimodifikasi dengan menggunakan perintah ALTER TABLE.
Ada beberapa jenis modifikasi pada tabel :

1.    Menambahkan constraint baru untuk sebuah tabel
   Query :
                        ALTER TABLE nama_tabel
                        ADD CONSTRAINT nama_constraint_baru
(definisi_constraint);

   Contoh :  (misal pada tabel mahasiswa belum ada primary key)
               SQL >   ALTER TABLE mahasiswa
                           ADD CONSTRAINT pk_mhs PRIMARY KEY (Nim);

2.    Menghapus sebuah constraint di dalam tabel.
               Query :
                        ALTER TABLE nama_tabel
                        DROP CONSTRAINT nama_constraint;

Contoh :
SQL >   ALTER TABLE mahasiswa
                           DROP CONSTRAINT pk_ mhs;

3.    Manambahkan field baru pada sebuah tabel.
Query :
         ALTER TABLE nama_tabel
                        ADD(nama_field  tipe_data  [definisi_konstraint]);

Contoh :
         SQL > ALTER TABLE mahasiswa
                        ADD(alamat varchar(50) NOT NULL);

4.    Mengubah definisi field yang telah ada pada sebuah tabel.
Query :
         ALTER TABLE nama_tabel
                        MODIFY(nama_field  tipe_field  definisi_konstraint);

 
INSERT INTO nama_tabel [(nama_field1, nama_field2, ….)] VALUES (nilai1, nilai2, …);



         Perlu diperhatikan bahwa nama_field1, nama_field2, … dapat dihilangkan. Hal ini dapat dilakukan bila nilai yang dimasukkan user, urutan sesuai dengan urutan field di dalam tabel tersebut, dan jumlah nilai yang dimasukkan juga harus sama dengan jumlah field pada tabel. Selain itu, proses penyisipan juga harus mematuhi aturan constraint yang telah didefinisikan pada sebuah tabel
Contoh :  
insert into mahasiswa 
values('30108001', 'paijo', 'skp');
atau
insert into mahasiswa (nim,nama,alamat) 
values('30108001', 'paijo', 'skp');

·         UPDATE RECORD
Setiap nilai record yang telah disimpan di dalam tabel dapat dimodifikasi kembali berdasarkan kondisi tertentu. Jika kondisi tidak didefinisikan, maka nilai semua record akan terupdate
Query :
UPDATE nama_tabel
       SET    nama_field1 = nilai_baru1,
              nama_field2 = nilai_baru2,
              ….
       [WHERE kondisi];


           
Contoh :

SQL >   update mahasiswa
set nama         = 'paimin',
      alamat      = 'skb'
where nim       = '30108001';

·         DELETE RECORD
Record yang telah disimpan di dalam sebuah tabel dapat dihapus berdasarkan kondisi tertentu. Jika kondisi untuk menghapus tidak didefinisikan maka seluruh record pada tabel tersebut akan dihapus.



Query :
DELETE nama_tabel [WHERE kondisi];



Contoh :
SQL >   delete mahasiswa
where nim = '30108001';

(menghapus sebuah record pada tabel mahasiswa dimana nimnya  ‘30108001’)

SQL >   delete mahasiswa;
(menghapus semua record pada table mahasiswa)

Select Statement

Statement SELECT digunakan untuk mengambil record dari sebuah tabel atau lebih. Record yang diambil dengan SELECT dapat disaring dengan menggunakan kondisi yang terdefinisi.
Statement SELECT mempunyai format sebagai berikut :
SELECT [DISTINCT | ALL]  * | nama_field 1, nama_field 2, ……
       FROM  nama_tabel
       [WHERE kondisi1]
       [GROUP BY nama_field] [HAVING kondisi2]
       [ORDER BY nama_field [ASC | DSC]];



DISTINCT digunakan untuk mengambil record yang nilainya tidak ganda.
FROM digunakan untuk mendefinisikan tabel yang menjadi sumber data dari suatu perintah SELECT.
WHERE           digunakan untuk mendefinisikan kondisi pengambilan data pada tabel yang disebutkan di klausa FROM.
GROUP BY digunakan untuk mengelompokkan baris – baris data berdasarkan ekspresi group – group tertentu yaitu untuk field tertentu.
HAVING digunakan untuk memilih / mendefinisikan kriteria kelompok group yang akan ditampilkan berdasarkan group yang akan dibuat. Penggunaa klausa HAVING dipakai sebagai pengganti klausa WHERE pada GROUP BY.
ORDER BY digunakan untuk mengurutkan seleksi berdasarkan kondisi yang diinginkan.
ASC (ascending) berarti pengurutan menaik – 1, 2, 3, 4 ….
DSC (descending) berarti pengurutan menurun – 10, 7, 4, 2, ….

Untuk mengambil semua field pada setiap record, maka ganti semua nama field menjadi tanda bintang ‘*’ (tanpa tanda kutip)
            SELECT *
            FROM nama_tabel
            [WHERE kondisi];

Contoh : SELECT * FROM mahasiswa;

Untuk mengambil record yang memenuhi kondisi tertentu maka statement SELECT digabung dengan klausa WHERE. Format WHERE :

            WHERE  nama_field operator_kondisional nilai

Operator kondisional yang diganakan adalah :
Operator
Arti
=
Sama dengan
<>, !=, ^=
Tidak sama dengan
Lebih besar
<
Lebih kecil
>=
Lebih besar atau sama dengan
<=
Lebih kecil atau sama dengan
BETWEEN … AND …
Mengambil nilai yang berada pada antara 2 buah bilangan.
IN
Mengetes nilai – nilai pada list yang disepsifikasikan
LIKE
Menyocokkan sebuah pola karekter
IS NULL
Apakah sebuah nilai null?

Untuk menggabungkan beberapa kondisi didalam klausa WHERE, maka digunakan operator boolean AND, OR, dan NOT.
AND     :  apabila setiap kondisi harus dipenuhi.
OR       :  apabila cukup salah satu kondisi yang terpenuhi.
NOT     : apabila merupakan kebalikan / negasi dari kondisi yang dipenuhi.

Contoh :
Select * from mahasiswa where nama not ‘paimen’;

BETWEEN … AND …
Untuk mengambil record dengan nilai field berada pada batas tertentu, maka digunakan statement BETWEEN atau NOT BETWEEN.
Statement ini bergabung menjadi satu dengan klausa WHERE.
WHERE  nama_field BETWEEN nilai_awal AND nilai_akhir

WHERE nama_field NOT BETWEEN nilai_awal AND nilai_akhir



IN dan NOT IN
Untuk menampilkan record yang nilai fieldnya berada pada suatu kelompok nilai tertentu maka gunakan statement : IN atau NOT IN yang dipakai bersama klausa WHERE
WHERE nama_field IN (nilai1, nilai2, nilai3, …)

WHERE nama_field NOT IN (nilai1, nilai2, nilai3, …)



LIKE dan NOT LIKE
WHERE nama_field LIKE pola;

WHERE nama_field NOT LIKE pola;


Untuk menampilkan record yang nilai fieldnya mengandung nilai tertentu, digunakan statement LIKE atau NOT LIKE yang diletakkan pada klausa WHERE.

Pola adalah karekter atau string, yang dapat dipadukan dengan dua macam wild character, yaitu :
%          : mewakili 0,1 atau beberapa karakter
_          : mewakili tempat sebuah karakter.
Contoh :
1.    %JO%
String yang sesuai dengan %JO% adalah : JOHAN, IJO, PAIJO, JOJON
2.    _ELO_
String yang sesuai dengan _ELO_ adalah : BELOK, KELOK, BELON

Field yang dapat menggunakan statement LIKE atau NOT LIKE adalah field yang bertipe Char, Varchar, atau Varchar2.

IS NULL dan IS NOT NULL
WHERE nama_field IS NULL;

WHERE nama_field IS NOT NULL;


Salah satu kegunaan nilai NULL adalah untuk merepresentasikan sebuah nilai yang belum ada. Dalam hal ini nilai field untuk sebuah record belum terisi. Sebuah nilai NULL tidak idektik dengan spasi atau 0.
Untuk menampilkan record yang mempunyai nilai field NULL atau tidak, gunakan statement IS NULL atau IS NOT NULL yang dimasukkan dalam statement WHERE

OPERATOR ARITMATIKA
Ada kemungkinan, pada saat menampilkan nilai, kita ingin memodifikasi nilai yang ingin ditampilkan, misalnya kita ingin menampilkan harga barang, namun harga barang tersebut ditambah 500.

Untuk memodifikasi nilai tersebut kita gunakan operator aritmatika yang diletakkan pada klausa SELECT.
SELECT nama_field1 operator nilai_tambahan, …
       FROM nama_tabel
       [WHERE kondisi];


            Operator yang digunakan adalah : *, /, +, dan –
Field yang bisa menggunakan operator ini harus bertipe numerik, date?
Contoh :
            SQL >   SELECT nim, spp + 50000
                        FROM keuangan;

PENGANTAR DASAR DATABASE 2

Fungsi-fungsi pada SQL

DUAL
DUAL adalah sebuah built-in tabel yang disediakan oleh Oracle untuk memproses ekspresi aritmatika, logika, tanggal dan lain sebagainya. 

Contoh :
SQL > SELECT 10 * 12 – 2 FROM DUAL;
Menampilkan hasil operasi aritmatika 10 * 12 – 2

SQL > SELECT sysdate FROM DUAL;
Menampilkan tanggal hari ini

GROUP BY … HAVING ….
GROUP BY …. HAVING … digunakan untuk menyeleksi himpunan yang dihitung berdasarkan sebuah fungsi agregasi (agregate function) sesuai dengan kondisi yang didefinisikan setelah HAVING.
  
SELECT  fungsi_agregasi, ..
FROM nama_tabel
GROUP BY nama_field
[HAVING kondisi];

Aggregate Function   

AVG (Average / rata - rata)
AVG berfungsi untuk mengembalikan nilai rata – rata dari sekumpulan nilai yang terdapat pada sekumpulan nilai record pada sebuah field.
Contoh     :

SQL > SELECT AVG(donasi) Donasi FROM keuangan;

Donasi    : merupakan alias dari hasil fungsi AVG(donasi)
Queri diatas digunakan untuk menampilkan donasi rata – rata  mahasiswa yang terdapat di dalam tabel keuangan.

MAX (Maximum)
MAX berfungsi untuk mengembalikan nilai maksimum yang terdapat pada sekumpulan nilai pada sebuah field.
Contoh :

SQL >   SELECT MAX(donasi) “Donasi Terbesar”
         FROM keuangan;

Donasi Terbesar        : merupakan alias dari hasil fungsi    MAX(donasi)
Queri diatas digunakan untuk menampilkan nilai donasi yang paling besar di dalam tabel keuangan.

MIN (Minimum)
MIN berfungsi untuk mengambil nilai minimum yang terdapat pada sekumpulan nilai pada sebuah field.
Contoh :

SQL >   SELECT MIN(donasi) “Donasi Terkecil” 
            FROM keuangan;

Donasi Terkecil      : merupakan alias dari hasil fungsi MIN(donasi)
Queri diatas digunakan untuk menampilkan nilai donasi yang paling kecil di dalam tabel keuangan.

SUM (jumlah / sigma)
SUM berfungsi untuk menghitung jumlah total nilai pada sebuah kolom tertentu.
Contoh :

SQL > SELECT SUM(donasi) “Total donasi” FROM keuangan;

Queri diatas digunakan untuk menampilkan total jumlah donasi untuk seluruh mahasiswa pada tabel keuangan.

COUNT (banyak record)
COUNT berfungsi untuk menghitung jumlah record yang memenuhi kondisi tertentu.
Contoh :

SQL >   SELECT COUNT(*) “Donasi Manajemen Informatika”
FROM keuangan
WHERE nim like ‘3010%’;

Queri diatas digunakan untuk menampilkan jumlah mahasiswa  Manajemen Informatika yang memberikan donasi.

Built-In Function Oracle


Built-In Function adalah fungsi yang disediakan oleh Oracle agar dapat digunakan di dalam SQL *Plus maupun oleh program eksternal.
Fungsi ini terdiri dari beberapa kelompok, yaitu :

Fungsi Aritmatika
Fungsi
Kegunaan
Contoh
ABS
Mengembalikan nilai absolute
ABS(-10) = 10
CEIL
Mengembalikan bilangan bulat terbesar
CEIL(4.2) = 5
CEIL(-4.2) = -4
EXP
Mengembalikan nilai pemangkatan bilangan natural (ex)
EXP(0) = 1
EXP(1) = 2.718
FLOOR
Mengembalikan bilangan bulat terkecil
FLOOR(4.2) = 4
FLOOR(-4.2) = -5
LN
Mengembalikan nilai logaritma natural
LN(2) = 0.693147181
LOG
Mengembalikan nilai logaritma
LOG(10,10) =1
MOD
Menghasilkan sisa pembagian
MOD(4,2) = 0
MOD(7,2) = 1
POWER
Mengembalikan nilai pangkat
POWER(2,3) = 8
ROUND
Mengembalikan bilangan pembulatan
ROUND(5.56,1) = 5.6
SIGN
Mengembalikan nilai positif, negative, atau nol. Nilai balikan sign ada tiga yaitu
1 jika x>0
0 jika x=0
-1 jika x<0
SIGN(-6) = -1
SIGN(3) = 1
SIN, COS, TAN, SINH, COSH,TANH
Fungsi trigonometri
SIN(0) = 0
COS(90) = 0
SQRT
Mengembalikan nilai akar
SQRT(16) = 4
TRUNC
Mengembalikan nilai yang telah dipotong
TRUNC(5.671,2) = 5.67

Fungsi Karakter / String
Fungsi
Kegunaan
Contoh
ASCII(karakter)
Memgembalikan nilai ASCII dari karakter
ASCI(‘A’) = 65
CHR(nilai_ASCII)
Memgembalikan karakter dari sebuah nilai ASCII
CHR(65) = ‘A’
CONCAT(teks1, teks2)
Menggabungkan teks1 dan teks2
CONCAT
(“sate”,
”ayam”)
= “sate ayam”
DECODE(field, kode_decode)
Menggantikan nilai yang terdapat di dalam field dengan nilai lain.
DECODE(bulan,1, ‘Januari’,
2,’Februari’,
3,’Maret’,
4,’April’,
5,’Mei’,
6,’Juni’,
‘Bulan Lain’
) bulan


GREATEST(nilai1, nilai2, nilai3, …)
Mengembalikan nilai terbesar dari sederetan nilai
GREATEST
(3,10,15,4)
= 15
INITCAP(String)
Mengembalikan string yang terdiri dari huruf kapital pada setiap kata.
INITCAP(‘pOLItekNik tElkoM’)
= Politeknik Telkom
INSTR
(teks1, teks2)


INSTR(teks1, teks2, i)


INSTR(teks1, teks2, 1, n)
Mencari posisi teks2 yang terdapat di dalam teks1. Pencarian dapat dimulai dari posisi ke-i.
n menyatakan pengulangan yang ke-n kali dari teks2 yang terdapat di dalam teks1.
INSTR
(’SQL n PL/SQL’,
 ’SQL’) = 1

INSTR
(’SQL n PL/SQL’,
 ’SQL’, 4) = 10

INSTR
(’SQL n PL/SQL’,
 ’SQL’,1,2) = 10


LEAST(nila1, nilai2, nilai3,…)
Mengembalikan nilai terkecil dari sederetan nilai
LEAST(2,2,5,1,6)
= 1
LENGTH(String)
Mengembalikan panjang String
LENGTH(“1233”)
= 4
LOWER(String)
Mengubah String menjadi huruf kecil semuanya
LOWER
(“PoLTeK”)
= poltek
LPAD
(teks1, n , teks2)
Menyisipkan karakter teks2 ke dalam teks1 untuk karakter kosong sepanjang n disebelah kiri teks1
LPAD
(‘Oracle’, 10 , ‘/’)
= ////Oracle
LTRIM
(teks1, teks2)
Menghapus karakter-karakter pada bagian kiri teks1 sehingga tidak diawali dengan sembarang karakter pada teks2.
Default teks2 adalah spasi
LTRIM
(‘xxxOracle’,’x’)
= Oracle
REPLACE
(teks1, teks2, teks3)
Menggantikan kemunculan karakter teks2 di dalam teks1 dengan teks3. Bila teks3 tidak disebutkan maka teks2 pada teks1 akan dihapus karena default teks3 null
REPLACE
(‘siswa’,’a’,’i’)
= siswi
RPAD
(teks1, n, teks2)
Menyisipkan karakter teks2 ke dalam teks1 untuk karakter kosong sepanjang n disebelah kanan teks1
RPAD
(‘Oracle’, 10 , ‘/’)
= Oracle////
RTRIM
(teks1, teks2)
Menghapus karakter-karakter pada bagian kanan teks1 sehingga tidak diakhiri dengan sembarang karakter pada teks2.
Default teks2 adalah spasi
RTRIM
('123000', '0')
= 123
SUBSTR(Teks,i)
SUBSTR(Teks, i, n)
Mengambil karakter pada string teks dimulai dari posisi ke-i (dari kiri ke kanan) sebanyak n buah. Jika i bernilai negatif, maka posisi ke-i dimulai dari kanan ke kiri
SUBSTR(“ABCD”, 2)
= “BCD”
SUBSTR
(“ABCD”, -3, 2 )
= “BC”
TRANSLATE
(teks1, teks2, teks3)
Menggantikan kemunculan karakter teks2 di dalam teks1 dengan teks3. perbedaannya dengan REPLACE adalah karakter yang digantikan dilakukan secara individual


UPER(String)
Mengubah String menjadi huruf besar semuanya
UPER(“PoLTeK”)
= POLTEK


Fungsi Tanggal
Fungsi
Kegunaan
Contoh
ADD_MONTHS
(tanggal, n)
Menambah atau mengurangi tanggal
terhadap n
sysdate
=06-JUL-05

ADD_MONTHS
(sysdate, 2)
= 08-JUL-05

ADD_MONTHS
(sysdate, -2)
= 04-JUL-05
LAST_DAY
(tanggal)
Menghasilkan tanggal terakhir pada sebuah bulan
LAST_DAY
(sysdate) =
31-JUL-05
MONTHS_BETWEEN
(tanggal 2, tanggal1)
Mengahsilkan selisih tanggal2 dan tanggal1 dalam satuan bulan
MONTHS_BETWEEN
(‘01-JUL-05’,
‘14-MAR-05’)
=
3.58064516129032


NEXT_DAY()
Mengembalikan tanggal berikutnya
NEXT_DAY()
= 07-JUL-05
TO_CHAR
(tanggal, format)
Mengubah tanggal menjadi bentuk karakter  sesuai dengan format. Sehingga dapat ditampilkan sebagai string
TO_CHAR
(sysdate,
‘DD-MM-YYYY’) = 06-07-2006

Join Tabel

JOIN adalah menggabungkan beberapa tabel dangan cara mengakses setiap tabel secara individu berdasarkan kondisi yang diberikan, kemudian hasilnya digabungkan.
Syarat penggunaan JOIN adalah harus terdapat hubungan / keterkaitan diantara tabel – tabel yang dijadikan sumber dari kolom – kolom yang hendak di join dan ditampilkan. Keterkaitan diatara tabel – tabel berupa kolom – kolom yang memiliki nilai dan tipe data yang sama.
Join dimungkinkan dikarenakan oleh model relasional, begitu juga sebaliknya, join dibutuhkan dikarenakan model relational. Join sebetulnya secara umum terbagi dalam 3 jenis: cartesian product, join condition dan outer join.

Cartessian Product

Cartessian product merupakan himpunan dari hasil kombinasi yang memungkinkan dari baris-baris data dari 2 tabel atau lebih. Cartessian product merupakan join tanpa menggunakan join condition. Dengan demikian, sebuah baris pada tabel yang satu akan digabungkan dengan semua baris pada tabel yang lain, seterusnya sehingga jumlah baris hasil query menjadi ( n1* n2 *...*nn ) dengan ni  adalah jumlah baris pada tabel ke-i. Jumlah baris hasil query yang merupakan hasil perkalian dari jumlah baris dari tabel-tabel inilah yang disebut dengan produk kartesian (cartesian product).
Contoh :  Misalkan ilustrasi sebagai berikut

Tabel A                                        Tabel B                                                                                                                   
                                                                                        
A1
A2
1
10
2
100
B1
B2
2
4
3
9

Jika kita melakukan operasi seperti ini:
SELECT * FROM A, B;
maka akan dihasilkan Cartesian Product.

Tabel Produk Cartesian
A1
A2
B1
B2
1
10
2
4
1
10
3
9
2
100
2
4
2
100
3
9

Untuk menghindari hal seperti ini, paling tidak terdapat sebuah join condition pada query yang melakukan join terhadap kedua tabel tersebut dengan catatan join condition tersebut valid.

Join Condition

Join condition menspesifikasikan kondisi join dari beberapa tabel. Seperti telah disinggung sebelumnya, join biasanya selalu melibatkan kolom-kolom yang terdapat pada tabel yang terlibat join yang memiliki kesamaan dan keserupaan maksud representasi dari kolom tersebut.
Equjoin/simple join/inner join adalah join yang menggunakan operator sama dengan (=) pada join condition-nya.
Contoh :  Misalnya jika kita melakukan operasi
SELECT * FROM A, B WHERE A.A1 = B.B1

Maka akan dihasilkan sbb:
A1
A2
B1
B2
2
100
2
4

Dari hasil operasi join tersebut dapat terlihat bahwa hanya nilai-nilai dari field A1 pada tabel A dan nilai-nilai field B1 pada tabel B yang bersesuaian yang ditampilkan. Dalam skenario ini adalah A1=B1=2.

Non-Equjoin adalah sebuah join yang menggunakan join condition yang berisi operator selain sama dengan (=) misalnya operator BETWEEN...AND
Self Join adalah query yang menggabungkan sebuah tabel dengan dirinya sendiri. Tabel tersebut muncul dua kali pada klausa from dan masing-masing harus diikuti dengan nama aliasnya. Penggunaan tabel alias ini wajib dilakukan untuk menghindari ambiguous karena semua nama kolom pada tabel pertama ada juga pada tabel kedua.
Contoh:
Misalkan terdapat tabel C sebagai berikut
Tabel C
C1
C2
C3
C4
1
10
2
4
1
10
3
9
2
100
2
4
2
100
3
9
Jika dilakukan perintah:
SELECT a.C1,a.C2,a.C3,a.C4 FROM C a, C b WHERE a.C1=b.C3
Dari skenario ini dapat dibayangkan kita memiliki dua buah tabel yang identik yaitu tabel alias a dan tabel alias b. Dimana operasi yang dilakukan dapat digambarkan sebagai berikut:
Tabel C
C1
C2
C3
C4
1
10
2
4
1
10
3
9
2
100
2
4
2
100
3
9
DBMSDBMS
Tabel Alias b
 
Tabel Alias a
 
C1
C2
C3
C4
1
10
2
4
1
10
3
9
2
100
2
4
2
100
3
9
                                                                                    
C1
C2
C3
C4
DBMSDBMS1
10
2
4
1
10
3
9
DBMSDBMS2
100
2
4
2
100
3
9

Maka akan dihasilkan seperti ini
C1
C2
C3
C4
2
100
2
4
2
100
3
9
2
100
2
4
2
100
3
9

 

Outer Join

Outer join biasanya digunakan ketika kita ingin baris data dari tabel yang pertama, atau dari tabel yang kedua atau dari keduanya tetap ditampilkan meskipun tidak terdapat pasangan baris data tersebut dari tabel lain pada kondisi join-nya. Misalkan tabel A di-join dengan tabel B. Semua baris data pada tabel A ingin ditampilkan walaupun tidak memenuhi join condition. Untuk itu, operator outer join (+) pada join condition harus disertakan setelah kolom-kolom tabel B. Penulisan operator join dapat ditulis sebagai berikut.
A.col_name = B.col_name(+)
Dalam hal ini, tabel B akan memberikan nilai NULL untuk setiap baris pada tabel A jika join condition tidak terpenuhi.

Contoh :
Misalnya jika kita melakukan operasi SELECT * FROM A, B WHERE A.A1 = B.B1(+) maka akan dihasilkan
A1
A2
B1
B2
1
10
NULL
NULL
2
100
2
4

Pada outer join ada beberapa aturan yang perlu diperhatikan :
·   Operator “+” hanya boleh ada pada klausa WHERE dan hanya dapat dikenakan pada kolom dari tabel atau view.
·   Jika terdapat lebih dari satu join condition, operator  “+” harus dikenakan pada semua join condition tersebut. Jika tidak, hasilnya dengan inner join.
·   Jika ada kondisi yang mengandung kolom tabel B dan kolom tersebut dibandingkan dengan sebuah nilai konstan, operator “+” harus dikenakan pada kolom tersebut. Misalkan:
SELECT * FROM A, B WHERE A.A1 = B.B1(+) and B.B1(+) > 0;
·   Kondisi yang mengandung operator “+” tidak boleh dikombinasikan dengan logika OR dan IN.
·   Kolom dengan operator “+” tidak boleh dibandingkan dengan hasil subquery. Misalkan:
SELECT * FROM A, B WHERE A.A1 = B.B1(+) and B.B1(+) > (SELECT C4 FROM C WHERE C4=2);
·   Untuk query yang menggunakan outer join dan melibatkan lebih dari dua tabel, misalnya tabel A, B, dan C, maka tabel yang satu hanya dapat men-generate tabel NULL untuk satu tabel. Dengan demikian, operator “+” tidak dapat dikenakan pada kolom tabel B untuk dua buah join condition: A join B dan C join B. Misalkan:
SELECT * FROM A, B WHERE A.A1 = B.B1(+) and C.C1=B.B1(+) ;

Kesimpulan: Operasi join digunakan untuk menampilkan data dari beberapa tabel. Ada beberapa macam operasi join, antara lain :

Operator Join
Deskripsi
Contoh
Cartesian Product
Menampilkan data dari beberapa tabel tanpa kondisi tertentu.
SELECT  NAMA_PEGAWAI,
NAMA_DEPARTEMEN
FROM PEGAWAI P, DEPARTEMEN  D
Join Condition
Menampilkan data dari beberapa tabel dengan kondisi tertentu
SELECT NAMA_PEGAWAI,
NAMA_DEPARTEMEN
FROM PEGAWAI P, DEPARTEMEN  D
WHERE  P.NO_DEP=
D.NO_DEPARTEMEN;
Outer Join
Menampilkan data dari beberapa tabel dimana kolom yang diacu tidak memiliki anggota
SELECT P. NAMA_PEGAWAI,
M. NAMA_PEGAWAI AS MANAJER
FROM PEGAWAI P,
PEGAWAI M
WHERE  P.NO_MANAJER = M.NO_PEGAWAI(+); 

Query Bersarang

Pada kondisi tertentu, terkadang beberapa query membutuhkan nilai yang dihasilkannya dan digunakan sebagai kondisi pembandingan (dalam klausa WHERE sebagai contoh). Query tersebut dapat diformulasikan menggunakan nested query (query bersarang). Query bersarang akan melibatkan query dan subquery.
Subquery merupakan statement SELECT yang bersarang didalam klausa WHERE dari statement SELECT yang lain. Meskipun jarang, tetapi subquery juga bisa terdapat pada statement DML yang lain seperti INSERT, UPDATE ataupun DELETE.

Secara umum, sintaks dari NESTED QUERY adalah:

SELECT [DISTINCT] select_list
FROM table1, table_2 [,table_3 …]
WHERE {expression
{[NOT] IN | comparison operator} | [NOT] EXIST }
(           SELECT [DISTINCT] subquery_select_list
            FROM table_list
            WHERE search_conditions
)


Yang dilakukan oleh subquery adalah menetapkan kondisi pencarian pada klausa WHERE dalam beberapa cara:
Menghasilkan list untuk klausa IN
Mengembalikan sebuah nilai yang dapat digunakan oleh operator
Mengembalikan nilai boolean (true atau false)

Didalam sebuah SELECT statement, subquery boleh berada pada klausa-klausa berikut ini:
·   Klausa WHERE
·   Klausa HAVING
·   Klausa FROM
·   Klausa START WITH (pada query hirarki)
Sebagai catatan, subquery pada klausa WHERE sering disebut sebagai nested subquery. Sedangkan subquery pada klausa FROM sering disebut dengan istilah inline view.

Banyak permasalahan yang dapat dipecahkan dengan menggunakan subquery. Daftar berikut ini menunjukkan beberapa kegunaan subquery:
·   Memberikan nilai sebagai kondisi di dalam klausa WHERE, HAVING, dan START WITH (subquery pada SELECT, UPDATE, dan INSERT statement).
·   Menentukan sekumpulan baris data untuk kebutuhan membuat view (subquery pada CREATE VIEW statement).
·   Mendefinisikan sebuah tabel (inline view) yang digunakan oleh query utama (subquery pada klausa FROM dari sebuah SELECT statement).
·   Menentukan sekumpulan baris data yang dimasukkan ke dalam tabel tujuan, baik ke dalam tabel yang sudah ada (subquery pada INSERT statement) maupun pada saat yang bersamaan dengan pembuatan tabel (subquery pada CREATE TABLE statement).
·   Mendapatkan satu nilai atau lebhih yang digunakan untuk mengubah data yang sudah ada (subquery pada UPDATE statement).

Klausa IN
Subquery yang dilakukan menggunakan klausa IN akan dilakukan pengecekan apakah suatu nilai ada atau tidak dalam hasil dari subquery.
Contoh :
SELECT A1 FROM A WHERE A1 IN (SELECT C3 FROM C)
Hasilnya sbb:
A1
A2
2
100

Klausa ALL
Membandingkan nilai dengan setiap nilai yang dikembalikan oleh query tersarang. Kondisi perbandingan akan bernilai benar jika semua nilai yang dikembalikan oleh subquery memenuhi kondisi tersebut.
Contoh :
SELECT * FROM A WHERE A1 < ALL(SELECT C3 FROM C)
Hasilnya sbb:
A1
A2
1
10


Klausa ANY/SOME
Membandingkan nilai dengan salah satu nilai yang dikembalikan oleh query tersarang. Kondisi perbandingan akan bernilai benar jika salah satu nilai yang dikembalikan oleh subquery memenuhi kondisi tersebut dan akan bernilai salah atau tidak terpenuhi jika subquery tidak mengembalikan nilai apapun (tabel kosong).
Contoh :
SELECT * FROM A WHERE A1 < ANY(SELECT C3 FROM C)
Hasilnya sbb:
A1
A2
1
10
2
100


Klausa [NOT] EXISTS
Klausa EXISTS digunakan untuk melakukan pengecekan apakah hasil dari nested query yang berkorelasi menghasilkan baris data atau tidak. Operator exists akan menghasilkan nilai “TRUE” jika subquery yang mengikutinya menghasilkan paling tidak satu baris data.
Contoh :
SELECT * FROM A WHERE EXISTS (SELECT C3 FROM C)
Hasilnya sbb:
A1
A2
1
10
2
100
  




Backup and Recovery

Issue dari Backup dan Recovery bagi administrator database yaitu:
·         mengantisipasi terjadinya suatu failure pada database
·         meningkatkan mean time between failure
·         mengurangi mean time to recover dan
·         mengurangi terjadinya loss data
Backup berarti suatu kegiatan untuk menyimpan database dalam bentuk datafile, control file dan archieve log ke dalam media penyimpanan lain seperti disk atau tape. Sedangkan Recovery merupakan suatu proses untuk mengupdate database dengan file Backup yang telah disimpan terakhir kalinya. Ada dua cara untuk melakukan Backup dan Recovery, yaitu :
1.     Physical Backup
Contohnya : RMAN Backup dan Restore
2.     Logical Backup
Contohnya : Export dan Import, Flashback
Dalam melakukan backup dan Recovery pada oracle 10g, disediakan tampilan web ( Enterprise Manager ) sehingga memudahkan admin database untuk melakukan administrasi. Berikut beberapa hal yang perlu dilakukan apabila akan melakukan backup dan Recovery pada Enterprise Manager :
1.     Konfigurasi setting backup dan kebijakan ( policy )
2.     Menentukan DBID dan DB_UNIQUE_NAME
3.     Melakukan backup seluruh database
4.     Melakukan backup database dengan Strategi Oracle-suggested
5.     Melakukan restoring dan recovery database dengan menggunakan strategi oracle-suggested
6.     Flashback table
7.     Flashback Drop
8.     Mengatur backup



Konfigurasi Setting Backup dan Kebijakan ( policy )
            Kita dapat mengkonfigurasi sejumlah setting dan kebijakan ( policy ) tentang bagaimana cara untuk melakukan backup, data yang akan di backup, bagaimana cara penyimpanan file yang di backup, bagaimana untuk melakukan restore, dan berapa lama backup akan disimpan di Recovery area. Kita juga bisa mengkonfigurasi feature untuk memperbaiki Perform ansi dari backup.
1.     Klik Maintenance di halaman home Oracle Database

DBMS
2.     Pilih Backup Setting di bagian Backup/Recovery Settings.

3.     Arahkan ke host credential di halaman Backup Setting. Kemudian masukkan username dan password system operasi kita. Kemudian arahkan ke bagian disk setting.
4.     Terima nilai 1 di kolom parallelism di bagian disk setting pada halaman device. Kolom lokasi disk Backup diset kosong jadi untuk backup akan digunakan flash Recovery area. Pilih backup set untuk tipe disk backup. Kemudian klik test disk Backup.

DBMS

5.     Akan ada tampilan pesan bahwa test disk setting untuk backup telah sukses.
6.     Sekarang kita akan mengkonfigurasi settingan kebijakan untuk backup. Klik policy untuk mengakses halaman policy.
7.     Pilih Automatically Backup untuk control file dan server parameter file (spfile) dengan pengubahan struktur database dan backup database.
8.     Pilih optimize seluruh database dengan melewatkan file yang sudah di backup.




9.     Pilih enable block change tracking for faster incremental backup.
DBMS

10.   Masukkan nama untuk block change tracking file. Kemudian arahkan ke bagian retention policy.
11.   Pilih Retain Backup that are necessary for a Recovery to any time within the asecified number of days (point-in-time Recovery) dan terima jumlah harinya yaitu 31 hari.
DBMS

12.   Klik ok. kemudian kita akan kembali ke halaman Maintenance.

Menentukan DBID dan DB_UNIQUE_NAME
            Jika kita kehilangan controlfile atau spfile database kita, Enterprise Manager tetap dapat mengembalikan database kita yang telah di backup, selama kita mengetahui DB_UNIQUE_NAME dan DBID dari database kita. Berikut langkah-langkah untuk mengetahui DB_UNIQUE_NAME :
1.     Klik All initialization Parameters di bagian Instance di halaman Administration
2.     Masukkan ‘db_unique_name’ di kolom Filter  pada halaman property Current dan kemudian klik button Go
DBMS
3.     Halaman berikutnya akan tampil hasil eksekusi diatas yang menunjukkan db_unique_name di kolom nama dan db_unique_name value yaitu orcl di kolom value
DBMS
Berikut langkah-langkah untuk menentukan DBID :
1.     Klik controlfiles di bagian storage pada halaman administration.
2.     Halaman control files muncul. Pilih property advanced.

DBMS
3.     Kolom database ID berisi nomor DBID.
DBMS
Note :  DBID harap diingat karena dibutuhkan untuk operasi Recovery.
Melakukan Backup seluruh Database
            Kita dapat melakukan backup seluruh isi database kita dengan melakukan backup keseluruhan ( backup seluruh datafile ). Hasil dari backup seluruh database kita akan disimpan sebagai salinan gambar atau sebagai tumpukan backup, tetapi di contoh yang lain isi dari seluruh database akan direpresentasikan sama dengan control file, archieved redo log dan server parameter file. Database akan dapat di Recovery dengan file-file ini. Berikut langkah-langkah untuk backup seluruh database :
1.     Pada halaman Home pilih menu Maintenance.
2.     Arahkan ke menu Backup/Recovery, dan pilih Schedule Backup.
3.     Halaman Schedule Backup muncul. Arahkan cursor ke bagian Customized Backup. Pilih Whole Database dan masukkan nama dan password di host credential. Kemudian klik schedule customized backup.
 DBMS

4.     Halaman Schedule Customized Backup : Options muncul. Pilih Full Backup di bagian Backup Type. Kemudian pilih Online Backup di bagian Backup Mode. Pilih Back up all archieved logs on disk di bagian Advanced. Klik Next.


5.     Halaman Schedule Customized Backup : Settings  muncul. Pilih Disk atau Tape, terserah kita akan membackup data dimana ( pada contoh ini kita menggunakan disk sebagai tempat beackup ). Klik Next.


6.     Halaman Schedule Customized Backup : Schedule muncul. Kita dapat mengubah atau membiarkan Job Name dan Job Description. Pilih Immediately untuk mengeksekusi tugas tersebut secepat mungkin atau memasukkan waktu untuk mengeksekusi waktu pada waktu tertentu. Kemudian Klik Next.
7.     Halaman Schedule Backup : Review  muncul. Klik Submit Job.

8.     Kemudian akan tampil pesan bahwa permintaan untuk Submit telah sukses. Klik OK
Note :  kita hanya bisa melakukan backup secara online jika database kita berada pada mode archive
Melakukan Backup database dengan Strategi Oracle-suggested
            Strategi Backup Oracle-suggested ialah backup akan menyalin gambaran database (image copy) dengan menggunakan backup incremental RMAN. Oracle Enterprise Manager akan menjadwalkan backup dengan RMAN. Berikut langkah-langkah untuk mensetting Schedule Backup :
1.     Pilih Schedule Backup di bagian Backup/Recovery
2.     Halaman Schedule Backup muncul. Pilih Oracle-suggested backup. Kemudian masukkan username dan password di bagian host credentials. Klik Next.
3.     Pilih disk sebagai tujuan dari tempat backup yang akan kita coba. Kemudian klik Next.
4.     Halaman Schedule Backup : Setup muncul. Baca kembali informasinya klik Next
5.     Halaman Schedule Backup : Schedule muncul. Baca kembali informasinya dan sesuaikan tanggal dan waktu sesuai keperluan kita. Kemudian Klik Next

6.     Halaman Schedule Backup : Review muncul. Baca kembali informasinya dan klik Submit Job.

7.     Halaman Status akan muncul dengan sebuah pesan yang menunjukkan bahwa job telah didaftarkan dengan sukses. Kita dapat klik View Job untuk mengakses halaman status job atau klik OK untuk melengkapi operasi tersebut.
Note : backup dengan strategi Oracle-suggested dilakukan secara incremental.

Melakukan Recovery Database Secara Keseluruhan
            Berikut langkah-langkah untuk melakukan Recovery Database secara keseluruhan :
1.     Pilih Maintenance pada menu halaman Home Enterprise Manager.
2.     Pilih Perform  Recovery di bagian Backup/Recovery.
3.     Halaman Perform  Recovery muncul. Pilih Recover to the current time or a previous point-in-time sebagai tipe operasi. Masukkan username dan password di bagian Host Credentials. Kemudian klik Perform  Whole Database



4.     Halaman Recovery  Wizard kemudian muncul dan memberitahu jika instance akan di matikan (shutdown ) dan dihidupkan kembali (restarted). Klik Refresh untuk lanjut menggunakan Recovery Wizard.

5.     Kita kembali ke halaman Maintenance. klik Perform  Recovery. masukkan host credentials. klik Perform  Whole Database Recovery untuk merecovery database.
 
6.     Halaman Perform  Recovery : Point-in-time muncul. Pilih Recover to the current time. Klik Next.



7.     Halaman Perform  Recovery : Rename muncul. Pilih “No. Restore the files to the default location” jika itu pilihan kita atau pilih “Yes. Restore the file to a new, commen location” dan kemudian masukkan lokasinya. Klik Next.
8.     Halaman Perform  Recovery : Review kemudian muncul. Baca kembali informasi dan klik Submit.

9.     Kemudian akan muncul pesan “Operation succeeded”. Klik Ok.
Note : proses ini hanya dapat dilakukan jika spfile dan controlfile tidak hilang atau rusak.

Flasback Tabel
            Untuk dapat melakukan operasi flashback pada tabel, maka harus dilakukan langkah-langkah berikut :
·         Enable Row Movement
·         Simulasikan User Error
·         Melakukan flashback pada tabel
Enable Row Movement
            Enable Row Movement dilakukan pada tabel-tabel tertentu, misalnya kita memiliki tabel HR.REGIONS.
1.     Klik Administration di halaman Oracle Database Home.
2.     Halaman property Administration kemudian muncul. Pilih Tables di bagian Schema.
3.     Halaman Tables kemudian muncul. Masukkan HR di bagian Schema dan Regions di kolom Object Name. klik Go.

4.     Tabel REGIONS kemudian terpilih di bagian Results. Klik Edit.



5.     Halaman Edit Table kemudian muncul. Klik tab Options.


6.     Pilih Yes dari menu drop-down Enable Row Movement. Klik Apply.


7.     Kemudian kita akan menerima sebuah pesan yang menyatakan bahwa tabel telah dengan sukses di modifikasi. Kemudian pilih Tables.

Simulasikan User Error
            Sekarang kita akan mensimulasikan error yang disebabkan karena perubahan data di tabel regions.
1.     Lihat data di tabel regions dengan membuka sql plus dan mengeksekusi perintah berikut

Sqlplus HR/HR
col region_name format a30
select * from regions;





2.     Simulasikan user error dengan mengeksekusi perintah sql untuk mengganti nilai dari kolom region_name di semua baris :
Update regions set region_name = “Oracle”;
Commit;

3.     Lihat perubahannya dengan menuliskan perintah
Select * from regions;
Melakukan flashback pada tabel
            Berikut langkah-langkah untuk melakukan flashback pada tabel :
1.     Pastikan bahwa REGIONS masih terpilih di daftar tabel. Pilih Flashback Table dari menu drop-down. Klik Go.
2.     Halaman Perform  Recovery : Point-in-time kemudian muncul. Pilih Flashback to a timestamp dan masukkan tanggal dan waktu beberapa menit yang lalu. Klik Next.


3.     Halaman Perform  Recovery : Flashback Tables muncul. Baca kembali informasi di halaman tersebut kemudian klik Next.

4.     Halaman Perform  Recovery : Review muncul. Baca kembali informasnya dan kemudian klik Submit.


5.     Kita akan menerima konfirmasi bahwa tabel telah di flashback. Klik Ok.
6.     Sekarang pindah ke sesi sql*plus dan eksekusi perintah untuk melihat operasi flashback tabel yang telah kita lakukan :
Select * from regions;
Flashback Drop
            Pada bagian ini kita akan menggunakan fitur flashback drop untuk mengembalikan sebuah tabel yang telah di drop. Sebagai latihan, akita akan membuat sebuah tabel, menghapus tabel, kemudian mengembalikannya dengna menggunakan flashback drop. Berikut langkah-langkah untuk membuat tabel baru dan kemudian kita hapus tabel tersebut :
1.     Masukkan HR di kolom Schema dan REGIONS di kolom Object Name atau sebagian dari nama di kolom Object Name dan klik Go.

2.     Pilih Create Like dari menu drop down actions. Klik Go.

3.     Halaman untuk membuat tabel kemudian muncul. Masukkan REG_HIST di kolom nama. Jangan klik Not Null pada kolom REGION_ID. Klik Constraints.
4.     Halaman Constraints kemudian muncul. Hapus constraint pada tabel dengan memilihnya satu-satu kemudian klik delete.
5.     Klik OK untuk membuat tabel REG_HIST.
6.     Kita akan menerima pesan yang menyatakan bahwa tabel telah dibuat. Kemudian masukkan REG_HIST ke dalam kolom Object Name dan klik Go.

7.     Halaman Tables kemudian ditampilkan dengan tabel REG_HIST di bagian Results. Klik Delete untuk menghapus tabel REG_HIST.
8.     Klik Yes untuk mengkonfirmasi penghapusan tabel.

9.     Kemudian dikeluarkan pesan yang menandakan bahwa proses penghapusan tabel telah dieksekusi. Klik Go untuk mencari tabel.
10.   Tidak ada yang akan ditampilkan di bagian Result Displayed in the results section.
Untuk mengembalikan tabel yang telah terhapus, kita dapat melakukan flashback drop. Berikut langkah-langkahnya :
1.     Pilih Recycle Bin
2.     Inputkan HR di kolom nama Schema dan klik Go.


3.     Pilih tabel REG_HIST kemudian klik Flashback Drop.

4.     Halaman Perform  Recovery : Rename kemudian muncul. Klik Next.

5.     Halaman Perform  Recovery : Rview kemudian muncul. Baca kembali informasi tersebut kemudian klik Submit.


6.     Kemudian akan muncul pesan konfirmasi. Klik Ok
7.     Tabel tersebut tidak lagi berada di Recycle Bin. Klik Tables.
8.     Sekarang tabel REG_HIST telah ada di daftar tabel.
Mengatur Backup
            Mengatur backup terdiri dari 2 tugas  yaitu mengatur backup file yang ada di disk atau tape, dan mengatur catatan dari backup yang ada di RMAN Repository. Pada bagian ini, kita akan melakukan maintenance pada backup dan meng-update RMAN repository. Pada bagian ini kita akan melakukan hal-hal berikut :
ü  Menggunakan halaman untuk mem backup database yang ada pada waktu ini
ü  Backup crosschecking
ü  Menghapus backup yang sudah expired
ü  Menghapus backup yang Obsolete
ü  Menkitakan backup menjadi tidak ada (unavailable)
ü  Membuat catalog untuk backup
Menggunakan halaman untuk membackup database yang ada pada waktu sekarang
1.     Klik Manage Current Backups pada bagian Maintenance > Backup/Recovery.

2.     Halaman Manage Current Backups muncul. Halaman Backup Sets akan menunjukkan backup yang ada di RMAN repository. Klik link di kolom Contents untuk melihat detail informasi mengenai isi dari backup.

3.     Halaman Contents kemudian muncul. Klik Manage Currents Backups untuk kembali.
4.     Klik Image Copies untuk melihat halaman Image Copies.

5.     Halaman Image Copies kemudian memperlihatkan jika image copies yang telah disimpan di RMAN repository.
Backup Crosschecking
            Saat kita melakukan crosschecking sebuah backup, RMAN akan memverifikasi bahwa informasi yang disimpan di repository sesuai dengan yang ada di backup secara fisik. Jika tidak sesuai, repository akan di update sesuai dengan status yang ada sekarang. Kita dapat melakukan crosscheck seluruh database kita dengan langkah-langkah berikut :
1.     Klik Manage Backups di bagian Backup/Recovery
2.     Halaman Manage Current Backups kemudian muncul. Klik Crosscheck All dibagian kanan atas untuk melakukan crosscheck semua file yang ada di RMAN repository.
3.     Halaman Crosscheck All : Specify Job Parameters muncul. Kita dapat menerima nama job standard untuk nama job, deskripsi job, waktu mulai, dan ulangi spesifikasinya atau masukkan nilai yang kita inginkan. Klik Submit Job untuk memasukkan job untuk crosscheck.

4.     Sebuah pesan bahwa permintaan job telah sukses kemudian ditampilkan. Kemudian klik View Job untuk melihat status dari job tersebut.
5.     Di bagian Summary, kita dapat melihat statu dari job.
Menghapus backup yang expired
1.     Klik Manage Current Backups pada bagian Backup/Recovery di halaman Maintenance.
2.     Halaman Manage Current Backups muncul. Klik Delete All Expired di atas halaman untuk menghapus RMAN repository semua backup yang terdeteksi sebagai backup yang usang.

3.     Halaman Delete All Expired: Specify Job Parameters kemudian muncul. Kita bisa membiarkan standar untuk nama Job, deskripsi job, waktu mulai, dan spesifikasi yang berulang atau memasukkan nilai tertentu. Pilih Perform  the operation ‘ Crosscheck Allbefore ‘Delete All Expired’. Jika kita tidak melakukan operasi crosscheck. Klik Submit Job untuk memasukkan job tersebut.
4.     Kemudian pesan yang mengatakan jika Job Submission sukses ditampilkan. Kita dapat memilih View Job untuk melihat status dari Job.

5.     Pada bagian Summary, kita dapat melihat status dari job.
Menghapus Backup yang usang ( Obsolete )
            Backup yang using ( obsolete ) berarti file Backup sudah tidak layak untuk digunakan dalam melakukan Recovery. Untuk dapat menghapus Backup yang obsolete berikut langkah-langkah nya :
1.     Klik Manage Current Backups di bagian Backup/Recovery pada halaman Maintenance.

2.     Halaman Manage Current Backups muncul. Klik Delete All Obsolete di bagian kanan atas halaman untuk membuang backup yang tidak terpakai dari RMAN repository yang tidak terpakai.

3.     Halaman Delete All Obsolete: Specify Job parameters kemudian muncul. Kita dapat menerima standar untuk nama Job, deskripsi Job, waktu mulai dan spesifikasi yang diulang-ulang atau masukkan nilainya sendiri. Klik Submit Job untuk mendaftar job tersebut.

4.     Kemudian akan muncul pesan konfirmasi bahwa pendaftaran job telah sukses didaftarkan dan kemudian ditampilkan pada halaman Manage Current Backups. Kita dapat memilih View job untuk melihat status dari job.

5.     Di bagian Summary kita dapat melihat status job.

6.     Kembali ke halaman Image Copies atau Backup Sets untuk memastikan bahwa Backup yang usang telah dihapus.

Menandakan Backup menjadi tidak ada ( unavailable )
            Untuk dapat menandakan backup menjadi tidak ada ( unavailable ) maka dapat dilakukan  langkah-langkah berikut :
1.     Klik Manage Current Backups di bagian Backup/Recovery pada halaman Maintenance.
2.     Halaman Manage Current Backups muncul. Pilih Backup yang akan kita tandai sebagai UNAVAILABLE dan klik Change to Unavailable.

3.     Sebuah halaman akan ditampilkan. Klik Yes untuk melanjutkan operasi.
4.     Halaman permintaan sedang dalam keadaan progress ditampilkan.

Membuat Katalog untuk Backup
            Kita dapat mengklasifikasikan backup dengan perintah system operasi sehingga RMAN dapat menggunakan mereka dalam sebuah operasi Recovery. Sebagai contoh, disini kita akan melakukan backup datafile yang termasuk ke dalam contoh table space dengan menggunakan perintah system operasi. Kemudian kita bisa mengklarifikasikan file backup di RMAN repository dengan menggunakan Enterprise Manager. Berikut  langkah-langkahnya :
1.     Buka SQL*Plus dan login sebagi user dengan hak akses sebagai SYSDBA. Disini kita diberikan pilihan untuk melakukan backup online pada sebuah tablespace. Missal dilakukan backup pada tablespace example.


2.     Kembali ke promt system operasi dan buatlah sebuah salinan system dan membuat salinan dari datafile yang termasuk ke dalam directory baru yaitu backup. Kita dapat menggunakan directory lain terserah keinginan.


3.     Ambil contoh table space yang akan melakukan online backup dengan mengunakan perintah di bawah ini :

4.      Sekarang kita lakukan catalog backup di RMAN repository dengan menggunakan Database Control Enterprise Manager. Klik Manage Current Backups di bagian Backup/Recovery pada halaman Maintenance.
5.     Pilih Catalog Additional Files pada bagian kanan atas halam


6.     Pilih “Catalog files in the specified disk location into the Recovery Manager repository” dan masukkan lokasi dan nama dari backup file. Klik Ok.

7.     Halaman progress untuk permintaan ditampilkan.
8.     Sebuah pesan konfirmasi menyatakan jika file telah dikatalog-kan.

0 komentar: